@@ -21,6 +21,7 @@ import qualified Data.List as List
2121import qualified Prelude
2222import qualified Streamly.Data.Stream as S
2323import qualified Streamly.Internal.Data.Array as A
24+ import qualified Streamly.Internal.Data.Array.Generic as AG
2425import qualified Streamly.Internal.Data.Fold as FL
2526import qualified Streamly.Internal.Data.Parser as P
2627import qualified Streamly.Internal.Data.Parser as Parser
@@ -33,6 +34,8 @@ import qualified Streamly.Internal.Data.Stream as D
3334import qualified Streamly.Internal.Data.Unfold as Unfold
3435import qualified Test.Hspec as H
3536
37+ import Streamly.Test.Parser.Common
38+
3639import Prelude hiding (sequence )
3740
3841#if MIN_VERSION_QuickCheck(2,14,0)
@@ -834,6 +837,34 @@ toParser = do
834837fusionBreaker :: a -> a
835838fusionBreaker = id
836839
840+ -------------------------------------------------------------------------------
841+ -- Parser driver sanity tests
842+ -------------------------------------------------------------------------------
843+
844+ sanityParseBreak :: [Move ] -> H. SpecWith ()
845+ sanityParseBreak jumps = it (show jumps) $ do
846+ (val, rest) <-
847+ StreamK. parseBreak (ParserK. adapt (jumpParser jumps))
848+ $ StreamK. fromList tape
849+ lst <- StreamK. toList rest
850+ (val, lst) `shouldBe` (expectedResult jumps tape)
851+
852+ sanityParseBreakChunks :: [Move ] -> H. SpecWith ()
853+ sanityParseBreakChunks jumps = it (show jumps) $ do
854+ (val, rest) <-
855+ StreamK. parseBreakChunks (ParserK. adaptC (jumpParser jumps))
856+ $ StreamK. fromList $ Prelude. map A. fromList chunkedTape
857+ lst <- Prelude. map A. toList <$> StreamK. toList rest
858+ (val, concat lst) `shouldBe` (expectedResult jumps tape)
859+
860+ sanityParseBreakChunksGeneric :: [Move ] -> H. SpecWith ()
861+ sanityParseBreakChunksGeneric jumps = it (show jumps) $ do
862+ (val, rest) <-
863+ StreamK. parseBreakChunksGeneric (ParserK. adaptCG (jumpParser jumps))
864+ $ StreamK. fromList $ Prelude. map AG. fromList chunkedTape
865+ lst <- Prelude. map AG. toList <$> StreamK. toList rest
866+ (val, concat lst) `shouldBe` (expectedResult jumps tape)
867+
837868-------------------------------------------------------------------------------
838869-- Main
839870-------------------------------------------------------------------------------
@@ -848,6 +879,10 @@ main =
848879 modifyMaxSuccess (const maxTestCount) $ do
849880 describe moduleName $ do
850881
882+ parserSanityTests " StreamK.parseBreak" sanityParseBreak
883+ parserSanityTests " StreamK.parseBreakChunks" sanityParseBreakChunks
884+ parserSanityTests " StreamK.parseBreakChunksGeneric" sanityParseBreakChunksGeneric
885+
851886 describe " Instances" $ do
852887 prop " applicative" applicative
853888 prop " Alternative: end of input 1" altEOF1
0 commit comments