@@ -32,13 +32,12 @@ main = hspec $ do
3232 describe "Bind" bind
3333
3434 describe "Serial Composition (<>)" $ compose (<>) id
35− describe "Serial interleaved (<=>)" $ interleaved (<=>)
35+ describe "Serial interleaved (<=>)" $ interleaved (<=>) id
3636 describe "Left biased parallel Composition (<|)" $ compose (<|) sort
3737 describe "Fair parallel Composition (<|>)" $ compose (<|>) sort
3838 describe "Left biased parallel time order check" $ parallelCheck (<|)
3939 describe "Fair parallel time order check" $ parallelCheck (<|>)
40− -- This is not predicatable
41− -- describe "Parallel interleaved (<|>)" $ interleaved (<|>)
40+ describe "Parallel interleaved (<|>)" $ interleaved (<|>) reverse
4241
4342 describe "Serial loops (<>)" $ loops (<>) id reverse
4443 describe "Left biased parallel loops (<|)" $ loops (<|) sort sort
@@ -58,11 +57,14 @@ bind = do
5857 toList (do x <- return 1; y <- return 2; return (x + y))
5958 `shouldReturn` ([3] :: [Int])
6059
61−interleaved :: (AsyncT IO Int -> AsyncT IO Int -> AsyncT IO Int) -> Spec
62−interleaved f =
60+interleaved
61+ :: (AsyncT IO Int -> AsyncT IO Int -> AsyncT IO Int)
62+ -> ([Int] -> [Int])
63+ -> Spec
64+interleaved f srt =
6365 it "Interleave four" $
6466 toList ((return 0 <> return 1) `f` (return 100 <> return 101))
65− `shouldReturn` ([0, 100, 1, 101])
67+ `shouldReturn` (srt [0, 100, 1, 101])
6668
6769parallelCheck :: (AsyncT IO Int -> AsyncT IO Int -> AsyncT IO Int) -> Spec
6870parallelCheck f = do