Skip to content

Commit 7d7c814

Browse files
committed
Add sanity tests for drivers of ParserK
1 parent 486710d commit 7d7c814

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

test/Streamly/Test/Data/ParserK.hs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import qualified Data.List as List
2121
import qualified Prelude
2222
import qualified Streamly.Data.Stream as S
2323
import qualified Streamly.Internal.Data.Array as A
24+
import qualified Streamly.Internal.Data.Array.Generic as AG
2425
import qualified Streamly.Internal.Data.Fold as FL
2526
import qualified Streamly.Internal.Data.Parser as P
2627
import qualified Streamly.Internal.Data.Parser as Parser
@@ -33,6 +34,8 @@ import qualified Streamly.Internal.Data.Stream as D
3334
import qualified Streamly.Internal.Data.Unfold as Unfold
3435
import qualified Test.Hspec as H
3536

37+
import Streamly.Test.Parser.Common
38+
3639
import Prelude hiding (sequence)
3740

3841
#if MIN_VERSION_QuickCheck(2,14,0)
@@ -834,6 +837,34 @@ toParser = do
834837
fusionBreaker :: a -> a
835838
fusionBreaker = 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

Comments
 (0)