@@ -48,8 +48,8 @@ main = hspec $ do
48 -- Monoidal Composition ordering checks
48 -- Monoidal Composition ordering checks
49 ---------------------------------------------------------------------------
49 ---------------------------------------------------------------------------
51− describe "Serial interleaved (<=>)" $ interleaved (<=>) id
51+ describe "Serial interleaved (<=>)" $ interleaved (<=>)
52− describe "Parallel interleaved (<|>)" $ interleaved (<|>) reverse
52+ describe "Parallel interleaved (<|>)" $ interleaved (<|>)
53 describe "Left biased parallel time order check" $ parallelCheck (<|)
53 describe "Left biased parallel time order check" $ parallelCheck (<|)
54 describe "Fair parallel time order check" $ parallelCheck (<|>)
54 describe "Fair parallel time order check" $ parallelCheck (<|>)
@@ -104,14 +104,20 @@ main = hspec $ do
104 let t = timed
104 let t = timed
105 in toList (
105 in toList (
106 ((t 8 <|> t 4) <=> (t 2 <|> t 0))
106 ((t 8 <|> t 4) <=> (t 2 <|> t 0))
107− <|> ((t 8 <|> t 4) <=> (t 2 <|> t 0)))
107+ <|> ((t 9 <|> t 4) <=> (t 2 <|> t 0)))
108− `shouldReturn` ([4,4,0,0,8,8,2,2])
108+ `shouldReturn` ([4,4,0,0,8,2,9,2])
109 it "Nest <|>, <=>, <|> (2)" $
109 it "Nest <|>, <=>, <|> (2)" $
110 let t = timed
110 let t = timed
111 in toList (
111 in toList (
112 ((t 4 <|> t 8) <=> (t 0 <|> t 2))
112 ((t 4 <|> t 8) <=> (t 0 <|> t 2))
113− <|> ((t 4 <|> t 8) <=> (t 0 <|> t 2)))
113+ <|> ((t 4 <|> t 9) <=> (t 0 <|> t 2)))
114− `shouldReturn` ([4,4,0,0,8,8,2,2])
114+ `shouldReturn` ([4,4,0,0,8,2,9,2])
115+ it "Nest <|>, <|>, <|>" $
118+ ((t 4 <|> t 8) <|> (t 0 <|> t 2))
119+ <|> ((t 4 <|> t 8) <|> (t 0 <|> t 2)))
120+ `shouldReturn` ([0,0,2,2,4,4,8,8])
116 ---------------------------------------------------------------------------
122 ---------------------------------------------------------------------------
117 -- Monoidal composition recursion loops
123 -- Monoidal composition recursion loops
@@ -165,12 +171,11 @@ pureBind f = do
166interleaved
172interleaved
167 :: (AsyncT IO Int -> AsyncT IO Int -> AsyncT IO Int)
173 :: (AsyncT IO Int -> AsyncT IO Int -> AsyncT IO Int)
170−interleaved f srt =
175+interleaved f =
171 it "Interleave four" $
176 it "Interleave four" $
172 toList ((return 0 <> return 1) `f` (return 100 <> return 101))
177 toList ((return 0 <> return 1) `f` (return 100 <> return 101))
173− `shouldReturn` (srt [0, 100, 1, 101])
178+ `shouldReturn` ([0, 100, 1, 101])
175parallelCheck :: (AsyncT IO Int -> AsyncT IO Int -> AsyncT IO Int) -> Spec
180parallelCheck :: (AsyncT IO Int -> AsyncT IO Int -> AsyncT IO Int) -> Spec
176parallelCheck f = do
181parallelCheck f = do