yampa-test 0.14.7 → 0.14.8
raw patch · 10 files changed
+217/−176 lines, 10 filesdep ~YampaPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: Yampa
API changes (from Hackage documentation)
Files
- CHANGELOG +5/−0
- tests/Test/FRP/Yampa/Basic.hs +20/−15
- tests/Test/FRP/Yampa/Delays.hs +12/−9
- tests/Test/FRP/Yampa/EventS.hs +17/−14
- tests/Test/FRP/Yampa/Integration.hs +7/−6
- tests/Test/FRP/Yampa/InternalCore.hs +102/−83
- tests/Test/FRP/Yampa/Switches.hs +20/−18
- tests/Test/FRP/Yampa/Task.hs +0/−1
- tests/Test/FRP/Yampa/Time.hs +32/−28
- yampa-test.cabal +2/−2
CHANGELOG view
@@ -1,3 +1,8 @@+2024-04-07 Ivan Perez <ivan.perez@keera.co.uk>+ * Version bump (0.14.8) (#294).+ * Move definitions to separate line (#292).+ * Remove vertical space (#293).+ 2024-02-09 Ivan Perez <ivan.perez@keera.co.uk> * Version bump (0.14.7) (#289).
tests/Test/FRP/Yampa/Basic.hs view
@@ -55,15 +55,17 @@ -- Yampa's Basic SF builders prop_basic_identity_1 = forAll myStream $ evalT $ Always $ prop (sf, pred)- where myStream :: Gen (SignalSampleStream Float)- myStream = uniDistStream- sf = identity- pred = (==)+ where+ myStream :: Gen (SignalSampleStream Float)+ myStream = uniDistStream+ sf = identity+ pred = (==) prop_basic_identity_2 = forAll myStream (evalT $ prop_always_equal identity (arr id))- where myStream :: Gen (SignalSampleStream Float)- myStream = uniDistStream+ where+ myStream :: Gen (SignalSampleStream Float)+ myStream = uniDistStream -- ** constant @@ -77,11 +79,12 @@ prop_basic_constant = forAll myStream $ evalT $ Always $ prop (sf, pred)- where myStream :: Gen (SignalSampleStream Float)- myStream = uniDistStream+ where+ myStream :: Gen (SignalSampleStream Float)+ myStream = uniDistStream - sf = constant 42.0- pred = const (== 42.0)+ sf = constant 42.0+ pred = const (== 42.0) -- * Initialization @@ -265,11 +268,12 @@ prop_basic_initially = forAll myStream $ evalT $ prop (sf, pred)- where myStream :: Gen (SignalSampleStream Float)- myStream = uniDistStream+ where+ myStream :: Gen (SignalSampleStream Float)+ myStream = uniDistStream - sf = initially 42.0- pred = const (== 42.0)+ sf = initially 42.0+ pred = const (== 42.0) -- * Auxiliary @@ -279,4 +283,5 @@ -- | Compares two SFs, resulting in true if they are always equal prop_always_equal sf1 sf2 = Always $ SP ((sf1 &&& sf2) >>> arr sameResult)- where sameResult = uncurry (==)+ where+ sameResult = uncurry (==)
tests/Test/FRP/Yampa/Delays.hs view
@@ -315,11 +315,12 @@ -- | Delaying by 0.0 has no effect prop_delay_1 = forAll myStream $ evalT $ prop_always_equal sfDelayed sf- where myStream :: Gen (SignalSampleStream Float)- myStream = uniDistStream+ where+ myStream :: Gen (SignalSampleStream Float)+ myStream = uniDistStream - sfDelayed = delay 0.0 undefined >>> sf- sf = arr (+1)+ sfDelayed = delay 0.0 undefined >>> sf+ sf = arr (+1) -- | Delaying input signal by a small amount will fill in the "blank" signal -- with the given value, which will become also the sample at the initial@@ -327,12 +328,13 @@ prop_delay_2 = forAll myStream $ evalT $ (prop (sfDelayed, (\x y -> y == initialValue)))- where myStream :: Gen (SignalSampleStream Float)- myStream = uniDistStream+ where+ myStream :: Gen (SignalSampleStream Float)+ myStream = uniDistStream - sfDelayed = delay 0.0001 initialValue+ sfDelayed = delay 0.0001 initialValue - initialValue = 17+ initialValue = 17 -- * Auxiliary @@ -342,4 +344,5 @@ -- | Compares two SFs, resulting in true if they are always equal prop_always_equal sf1 sf2 = Always $ SP ((sf1 &&& sf2) >>> arr sameResult)- where sameResult = uncurry (==)+ where+ sameResult = uncurry (==)
tests/Test/FRP/Yampa/EventS.hs view
@@ -102,10 +102,11 @@ prop_event_noevent = forAll myStream $ evalT $ Always $ prop (sfNever, const (== noEvent)) - where myStream :: Gen (SignalSampleStream Float)- myStream = uniDistStream- sfNever :: SF Float (Event Float)- sfNever = never+ where+ myStream :: Gen (SignalSampleStream Float)+ myStream = uniDistStream+ sfNever :: SF Float (Event Float)+ sfNever = never evsrc_t1 :: [Event Int] evsrc_t1 = testSF1 (now 42)@@ -127,13 +128,14 @@ And (prop (sf, p0)) -- Initially (Next $ Always $ prop (sf, pn)) -- After first sample - where sf = Yampa.now 42.0+ where+ sf = Yampa.now 42.0 - p0 x y = y == Event 42.0- pn x y = y == noEvent+ p0 x y = y == Event 42.0+ pn x y = y == noEvent - myStream :: Gen (SignalSampleStream Float)- myStream = uniDistStream+ myStream :: Gen (SignalSampleStream Float)+ myStream = uniDistStream evsrc_t2 :: [Event Int] evsrc_t2 = testSF1 (after 0.0 42)@@ -154,13 +156,14 @@ And (prop (sf, p0)) -- Initially (Next $ Always $ prop (sf, pn)) -- After first sample - where sf = after 0.0 42.0+ where+ sf = after 0.0 42.0 - p0 x y = y == Event 42.0- pn x y = y == noEvent+ p0 x y = y == Event 42.0+ pn x y = y == noEvent - myStream :: Gen (SignalSampleStream Float)- myStream = uniDistStream+ myStream :: Gen (SignalSampleStream Float)+ myStream = uniDistStream evsrc_t3 :: [Event Int] evsrc_t3 = testSF1 (after 3.0 42)
tests/Test/FRP/Yampa/Integration.hs view
@@ -237,15 +237,16 @@ forAll myStream $ evalT $ Next $ Always $ prop ((sfDer &&& sfDerByHand), const close) - where myStream :: Gen (SignalSampleStream Double)- myStream = fixedDelayStreamWith (\t -> sin(2 * pi * t)) der_step+ where+ myStream :: Gen (SignalSampleStream Double)+ myStream = fixedDelayStreamWith (\t -> sin(2 * pi * t)) der_step - sfDer :: SF Time Time- sfDer = derivative+ sfDer :: SF Time Time+ sfDer = derivative - sfDerByHand = localTime >>> arr (\t -> (2 * pi * cos (2 * pi * t)))+ sfDerByHand = localTime >>> arr (\t -> (2 * pi * cos (2 * pi * t))) - close (x,y) = abs (x-y) < 0.05+ close (x,y) = abs (x-y) < 0.05 prop_derivative_2 = forAll myStream $ evalT $
tests/Test/FRP/Yampa/InternalCore.hs view
@@ -110,18 +110,20 @@ prop_arrow_1 = forAll myStream $ evalT $ Always $ prop (arr id, \x y -> x == y)- where myStream :: Gen (SignalSampleStream Float)- myStream = uniDistStream+ where+ myStream :: Gen (SignalSampleStream Float)+ myStream = uniDistStream -- C1: Arr naturality (testSF1 (arr (+1))) prop_arr_naturality = forAll myStream $ \stream -> forAll f $ \f' -> evalT (Always (prop (arr (apply f'), \x y -> apply f' x == y)))- where myStream :: Gen (SignalSampleStream Float)- myStream = uniDistStream- f :: Gen (Fun Int Int)- f = arbitrary+ where+ myStream :: Gen (SignalSampleStream Float)+ myStream = uniDistStream+ f :: Gen (Fun Int Int)+ f = arbitrary comp_t0 = testSF1 ((arr (+1)) >>> (arr (+2))) comp_t0r :: [Double]@@ -170,31 +172,34 @@ -- Arrow composition (we use Int to avoid floating-point discrepancies) prop_arrow_comp_1 = forAll myStream $ evalT $ Always $ prop (sf, pred)- where myStream :: Gen (SignalSampleStream Int)- myStream = uniDistStream+ where+ myStream :: Gen (SignalSampleStream Int)+ myStream = uniDistStream - sf = arr (+1) >>> arr (+2)- pred = (\x y -> x + 3 == y)+ sf = arr (+1) >>> arr (+2)+ pred = (\x y -> x + 3 == y) -- Arrow composition prop_arrow_comp_2 = forAll myStream $ evalT $ Always $ prop (sf, pred)- where myStream :: Gen (SignalSampleStream Float)- myStream = uniDistStream+ where+ myStream :: Gen (SignalSampleStream Float)+ myStream = uniDistStream - sf = constant 5.0 >>> arr (+1)- pred = const (== 6.0)+ sf = constant 5.0 >>> arr (+1)+ pred = const (== 6.0) -- Arrow composition prop_arrow_comp_3 = forAll myStream $ evalT $ Always $ prop (sf, pred)- where myStream :: Gen (SignalSampleStream Float)- myStream = fixedDelayStream 0.25+ where+ myStream :: Gen (SignalSampleStream Float)+ myStream = fixedDelayStream 0.25 - sf :: SF a Float- sf = constant 2.0 >>> integral >>> stepDiff (-0.5)+ sf :: SF a Float+ sf = constant 2.0 >>> integral >>> stepDiff (-0.5) - pred = const (== 0.5)+ pred = const (== 0.5) first_t0 :: [(Int,Double)] first_t0 = testSF1 (arr dup >>> first (constant 7))@@ -260,19 +265,21 @@ prop_arrow_first_1 = forAll myStream $ evalT $ Always $ prop (sf, pred)- where myStream :: Gen (SignalSampleStream Int)- myStream = uniDistStream+ where+ myStream :: Gen (SignalSampleStream Int)+ myStream = uniDistStream - sf = arr dup >>> first (constant 7)- pred = (\x y -> (7 :: Int, x) == y)+ sf = arr dup >>> first (constant 7)+ pred = (\x y -> (7 :: Int, x) == y) prop_arrow_first_2 = forAll myStream $ evalT $ Always $ prop (sf, pred)- where myStream :: Gen (SignalSampleStream Int)- myStream = uniDistStream+ where+ myStream :: Gen (SignalSampleStream Int)+ myStream = uniDistStream - sf = arr dup >>> first (arr (+1))- pred = (\x y -> (x + 1, x) == y)+ sf = arr dup >>> first (arr (+1))+ pred = (\x y -> (x + 1, x) == y) -- Test cases for second -- These should mirror the test cases for first.@@ -297,19 +304,21 @@ prop_arrow_second_1 = forAll myStream $ evalT $ Always $ prop (sf, pred)- where myStream :: Gen (SignalSampleStream Int)- myStream = uniDistStream+ where+ myStream :: Gen (SignalSampleStream Int)+ myStream = uniDistStream - sf = arr dup >>> second (constant 7)- pred = (\x y -> (x, 7 :: Int) == y)+ sf = arr dup >>> second (constant 7)+ pred = (\x y -> (x, 7 :: Int) == y) prop_arrow_second_2 = forAll myStream $ evalT $ Always $ prop (sf, pred)- where myStream :: Gen (SignalSampleStream Int)- myStream = uniDistStream+ where+ myStream :: Gen (SignalSampleStream Int)+ myStream = uniDistStream - sf = arr dup >>> second (arr (+1))- pred = (\x y -> (x, x + 1) == y)+ sf = arr dup >>> second (arr (+1))+ pred = (\x y -> (x, x + 1) == y) -- For a description of the laws, see e.g. Ross Paterson: Embedding a Class of -- Domain-Specific Languages in a Functional Language.@@ -324,12 +333,13 @@ prop_arrow_id_0 = forAll myStream $ evalT $ Always $ SP ((sf1 &&& sf2) >>> pred)- where sf1 = arr id >>> integral- sf2 = integral- pred = arr $ uncurry (==)+ where+ sf1 = arr id >>> integral+ sf2 = integral+ pred = arr $ uncurry (==) - myStream :: Gen (SignalSampleStream Double)- myStream = uniDistStream+ myStream :: Gen (SignalSampleStream Double)+ myStream = uniDistStream laws_t1_lhs :: [Double] laws_t1_lhs = testSF1 (integral >>> arr id)@@ -338,12 +348,13 @@ prop_arrow_id_2 = forAll myStream $ evalT $ Always $ SP ((sf1 &&& sf2) >>> pred)- where sf1 = integral >>> arr id- sf2 = integral- pred = arr $ uncurry (==)+ where+ sf1 = integral >>> arr id+ sf2 = integral+ pred = arr $ uncurry (==) - myStream :: Gen (SignalSampleStream Double)- myStream = uniDistStream+ myStream :: Gen (SignalSampleStream Double)+ myStream = uniDistStream laws_t2_lhs :: [Double] laws_t2_lhs = testSF1 ((integral >>> arr (*0.5)) >>> integral)@@ -352,12 +363,13 @@ prop_arrow_assoc = forAll myStream $ evalT $ Always $ SP ((sf1 &&& sf2) >>> pred)- where sf1 = (integral >>> arr (*0.5)) >>> integral- sf2 = integral >>> (arr (*0.5) >>> integral)- pred = arr $ uncurry (==)+ where+ sf1 = (integral >>> arr (*0.5)) >>> integral+ sf2 = integral >>> (arr (*0.5) >>> integral)+ pred = arr $ uncurry (==) - myStream :: Gen (SignalSampleStream Double)- myStream = uniDistStream+ myStream :: Gen (SignalSampleStream Double)+ myStream = uniDistStream laws_t3_lhs :: [Double] laws_t3_lhs = testSF1 (arr ((*2.5) . (+3.0)))@@ -366,21 +378,23 @@ prop_arrow_arr_comp = forAll myStream $ evalT $ Always $ SP ((sf1 &&& sf2) >>> pred)- where sf1 = (arr ((*2.5) . (+3.0)))- sf2 = (arr (+3.0) >>> arr (*2.5))- pred = arr (uncurry (==))+ where+ sf1 = (arr ((*2.5) . (+3.0)))+ sf2 = (arr (+3.0) >>> arr (*2.5))+ pred = arr (uncurry (==)) - myStream :: Gen (SignalSampleStream Double)- myStream = uniDistStream+ myStream :: Gen (SignalSampleStream Double)+ myStream = uniDistStream prop_arrow_2 = forAll myStream $ evalT $ Always $ prop (sf1 &&& sf2, const $ uncurry (==))- where myStream :: Gen (SignalSampleStream Float)- myStream = uniDistStream- sf1 = arr (f >>> g)- sf2 = arr f >>> arr g- f = (+5)- g = (/20)+ where+ myStream :: Gen (SignalSampleStream Float)+ myStream = uniDistStream+ sf1 = arr (f >>> g)+ sf2 = arr f >>> arr g+ f = (+5)+ g = (/20) prop_arrow_2' = forAll f $ \f' ->@@ -388,17 +402,19 @@ forAll myStream $ evalT $ prop_arrow_2'' (apply f') (apply g') - where myStream :: Gen (SignalSampleStream Int)- myStream = uniDistStream+ where+ myStream :: Gen (SignalSampleStream Int)+ myStream = uniDistStream - f, g :: Gen (Fun Int Int)- f = arbitrary- g = arbitrary+ f, g :: Gen (Fun Int Int)+ f = arbitrary+ g = arbitrary prop_arrow_2'' f g = Always $ prop (sf1 &&& sf2, const $ uncurry (==))- where sf1 = arr (f >>> g)- sf2 = arr f >>> arr g+ where+ sf1 = arr (f >>> g)+ sf2 = arr f >>> arr g laws_t4_lhs :: [(Double, Double)] laws_t4_lhs = testSF1 (arr dup >>> first (arr (*2.5)))@@ -407,12 +423,13 @@ prop_arrow_first_3 = forAll myStream $ evalT $ Always $ SP ((sf1 &&& sf2) >>> arr pred)- where sf1 = (arr dup >>> first (arr (*2.5)))- sf2 = (arr dup >>> arr (fun_prod (*2.5) id))- pred = uncurry (==)+ where+ sf1 = (arr dup >>> first (arr (*2.5)))+ sf2 = (arr dup >>> arr (fun_prod (*2.5) id))+ pred = uncurry (==) - myStream :: Gen (SignalSampleStream Double)- myStream = uniDistStream+ myStream :: Gen (SignalSampleStream Double)+ myStream = uniDistStream laws_t5_lhs :: [(Double, Double)] laws_t5_lhs = testSF1 (arr dup >>> (first (integral >>> arr (+3.0))))@@ -421,12 +438,13 @@ prop_arrow_first_distrib = forAll myStream $ evalT $ Always $ SP ((sf1 &&& sf2) >>> arr pred)- where sf1 = (arr dup >>> (first (integral >>> arr (+3.0))))- sf2 = (arr dup >>> (first integral >>> first (arr (+3.0))))- pred = uncurry (==)+ where+ sf1 = (arr dup >>> (first (integral >>> arr (+3.0))))+ sf2 = (arr dup >>> (first integral >>> first (arr (+3.0))))+ pred = uncurry (==) - myStream :: Gen (SignalSampleStream Double)- myStream = uniDistStream+ myStream :: Gen (SignalSampleStream Double)+ myStream = uniDistStream laws_t6_lhs :: [(Double, Double)] laws_t6_lhs = testSF1 (arr dup >>> (first integral >>> arr (id *** (+3.0))))@@ -435,12 +453,13 @@ prop_arrow_first_id_comm = forAll myStream $ evalT $ Always $ SP ((sf1 &&& sf2) >>> arr pred)- where sf1 = (arr dup >>> (first integral>>>arr (fun_prod id (+3.0))))- sf2 = (arr dup >>> (arr (fun_prod id (+3.0))>>>first integral))- pred = uncurry (==)+ where+ sf1 = (arr dup >>> (first integral>>>arr (fun_prod id (+3.0))))+ sf2 = (arr dup >>> (arr (fun_prod id (+3.0))>>>first integral))+ pred = uncurry (==) - myStream :: Gen (SignalSampleStream Double)- myStream = uniDistStream+ myStream :: Gen (SignalSampleStream Double)+ myStream = uniDistStream laws_t7_lhs :: [Double] laws_t7_lhs = testSF1 (arr dup >>> (first integral >>> arr fst))
tests/Test/FRP/Yampa/Switches.hs view
@@ -173,21 +173,22 @@ forAll myStream $ evalT $ Always $ SP ((switch_t1rec 42.0 &&& switch_tr) >>> arr same) - where myStream :: Gen (SignalSampleStream Double)- myStream = fixedDelayStreamWith f 1.0- f dt = l!!(floor dt)- l = [ 1.0, 1.0, 1.0- , 2.0- , 3.0, 3.0- , 4.0, 4.0, 4.0- , 5.0- , 6.0, 6.0- , 7.0, 7.0, 7.0- , 8.0- ]- ++ repeat 9.0+ where+ myStream :: Gen (SignalSampleStream Double)+ myStream = fixedDelayStreamWith f 1.0+ f dt = l!!(floor dt)+ l = [ 1.0, 1.0, 1.0+ , 2.0+ , 3.0, 3.0+ , 4.0, 4.0, 4.0+ , 5.0+ , 6.0, 6.0+ , 7.0, 7.0, 7.0+ , 8.0+ ]+ ++ repeat 9.0 - same = (uncurry (==))+ same = (uncurry (==)) switch_tr :: SF Double (Double, Double, Double) switch_tr = proc (a) -> do@@ -524,11 +525,12 @@ -- TODO: Add integral to the list of SFs being tested prop_broadcast = forAll myStream $ evalT $ Always $ prop (sf, pred)- where myStream :: Gen (SignalSampleStream Float)- myStream = uniDistStream+ where+ myStream :: Gen (SignalSampleStream Float)+ myStream = uniDistStream - sf = parB [identity, (arr (+1))]- pred = (\x [y,z] -> x == y && (x + 1) == z)+ sf = parB [identity, (arr (+1))]+ pred = (\x [y,z] -> x == y && (x + 1) == z) pswitch_inp1 = deltaEncode 0.1 [0.0, 0.5 ..]
tests/Test/FRP/Yampa/Task.hs view
@@ -4,7 +4,6 @@ -- Copyright : (c) Antony Courtney and Henrik Nilsson, Yale University, 2003-2004 -- Authors : Antony Courtney, Henrik Nilsson -- Very rudimentary testing of Task.- module Test.FRP.Yampa.Task ( tests ) where
tests/Test/FRP/Yampa/Time.hs view
@@ -39,17 +39,18 @@ prop_basic_localtime_increasing = forAll myStream $ evalT $ Always $ prop (sf, const (uncurry (>)))- where myStream :: Gen (SignalSampleStream Float)- myStream = uniDistStream+ where+ myStream :: Gen (SignalSampleStream Float)+ myStream = uniDistStream - sf :: SF a (Time, Time)- sf = loopPre (-1 :: Time) sfI+ sf :: SF a (Time, Time)+ sf = loopPre (-1 :: Time) sfI - sfI :: SF (a,Time) ((Time, Time), Time)- sfI = (localTime *** identity) >>> arr resort+ sfI :: SF (a,Time) ((Time, Time), Time)+ sfI = (localTime *** identity) >>> arr resort - resort :: (Time, Time) -> ((Time,Time),Time)- resort (newT, oldT) = ((newT, oldT), newT)+ resort :: (Time, Time) -> ((Time,Time),Time)+ resort (newT, oldT) = ((newT, oldT), newT) basicsf_t3 :: [Double] basicsf_t3 = testSF1 time@@ -66,44 +67,47 @@ -- greater than the acc. prop_basic_time_increasing = forAll myStream $ evalT $ Always $ prop (sf, pred)- where myStream :: Gen (SignalSampleStream Float)- myStream = uniDistStream+ where+ myStream :: Gen (SignalSampleStream Float)+ myStream = uniDistStream - sf :: SF a (Time, Time)- sf = loopPre (-1 :: Time) sfI+ sf :: SF a (Time, Time)+ sf = loopPre (-1 :: Time) sfI - sfI :: SF (a,Time) ((Time, Time), Time)- sfI = (time *** identity) >>> arr resort+ sfI :: SF (a,Time) ((Time, Time), Time)+ sfI = (time *** identity) >>> arr resort - resort :: (Time, Time) -> ((Time,Time),Time)- resort (newT, oldT) = ((newT, oldT), newT)+ resort :: (Time, Time) -> ((Time,Time),Time)+ resort (newT, oldT) = ((newT, oldT), newT) - pred :: a -> (Time, Time) -> Bool- pred _ (t,o) = (t > o)+ pred :: a -> (Time, Time) -> Bool+ pred _ (t,o) = (t > o) prop_basic_time_fixed_delay = forAll myStream $ evalT $ Always (prop (sf25msec, const (== d))) - where myStream :: Gen (SignalSampleStream Float)- myStream = fixedDelayStream d+ where+ myStream :: Gen (SignalSampleStream Float)+ myStream = fixedDelayStream d - sf25msec = time >>> stepDiff (-d)+ sf25msec = time >>> stepDiff (-d) - d :: Time- d = 0.25+ d :: Time+ d = 0.25 prop_basic_localtime_fixed_delay = forAll myStream $ evalT $ Always (prop (sf25msec, const (== d))) - where myStream :: Gen (SignalSampleStream Float)- myStream = fixedDelayStream d+ where+ myStream :: Gen (SignalSampleStream Float)+ myStream = fixedDelayStream d - sf25msec = time >>> stepDiff (-d)+ sf25msec = time >>> stepDiff (-d) - d :: Time- d = 0.25+ d :: Time+ d = 0.25 -- * Auxiliary
yampa-test.cabal view
@@ -31,7 +31,7 @@ build-type: Simple name: yampa-test-version: 0.14.7+version: 0.14.8 author: Ivan Perez maintainer: ivan.perez@keera.co.uk homepage: http://github.com/ivanperez-keera/Yampa@@ -84,7 +84,7 @@ base >= 4 && < 5 , normaldistribution >= 1.1.0.1 && < 1.2 , QuickCheck >= 2.12 && < 2.15- , Yampa >= 0.14.7 && < 0.15+ , Yampa >= 0.14.8 && < 0.15 default-language: Haskell2010