on master help sign in
Add better tests for before and after.
b6fe733Pranay Sashank
test/Streamly/Test/Prelude/Common.hs+14−12
@@ -1394,25 +1394,27 @@ beforeProp :: IsStream t => (t IO Int -> SerialT IO Int) -> [Int] -> Property
1394beforeProp t vec =
1394beforeProp t vec =
1395 withMaxSuccess maxTestCount $
1395 withMaxSuccess maxTestCount $
1396 monadicIO $ do
1396 monadicIO $ do
1397− ioRef <- run $ newIORef False
1397+ ioRef <- run $ newIORef []
1398− strm <-
1398+ run
1399− run $
1399+ $ S.drain . t
1400− S.toList . t $ S.before (writeIORef ioRef True) (S.fromList vec)
1400+ $ S.before (writeIORef ioRef [0])
1401+ $ S.mapM (\a -> modifyIORef' ioRef (++ [a]) >> return a)
1402+ $ S.fromList vec
1401 refValue <- run $ readIORef ioRef
1403 refValue <- run $ readIORef ioRef
1402− assert refValue
1404+ listEquals (==) (head refValue : sort (tail refValue)) (0:sort vec)
1403− assert $ sort strm == sort vec
1404
1405
1405afterProp :: IsStream t => (t IO Int -> SerialT IO Int) -> [Int] -> Property
1406afterProp :: IsStream t => (t IO Int -> SerialT IO Int) -> [Int] -> Property
1406afterProp t vec =
1407afterProp t vec =
1407 withMaxSuccess maxTestCount $
1408 withMaxSuccess maxTestCount $
1408 monadicIO $ do
1409 monadicIO $ do
1409− ioRef <- run $ newIORef False
1410+ ioRef <- run $ newIORef []
1410− strm <-
1411+ run
1411− run $
1412+ $ S.drain . t
1413+ $ S.after (modifyIORef' ioRef (0:))
1414+ $ S.mapM (\a -> modifyIORef' ioRef (a:) >> return a)
1412− S.toList . t $ S.after (writeIORef ioRef True) (S.fromList vec)
1415+ $ S.fromList vec
1413 refValue <- run $ readIORef ioRef
1416 refValue <- run $ readIORef ioRef
1414− assert refValue
1417+ listEquals (==) (head refValue : sort (tail refValue)) (0:sort vec)
1415− assert $ sort strm == sort vec
1416
1418
1417bracketProp :: IsStream t => (t IO Int -> SerialT IO Int) -> [Int] -> Property
1419bracketProp :: IsStream t => (t IO Int -> SerialT IO Int) -> [Int] -> Property
1418bracketProp t vec =
1420bracketProp t vec =