@@ -1378,6 +1378,15 @@ expectedResult moves inp = go 0 0 [] moves
13781378 P. Done n () -> (Right ys, slice_ (max (i - n + 1 ) j) inp)
13791379 P. Error err -> (Left (ParseError err), slice_ j inp)
13801380
1381+ expectedResultMany :: [Move ] -> [Int ] -> [Either ParseError [Int ]]
1382+ expectedResultMany _ [] = []
1383+ expectedResultMany moves inp =
1384+ let (res, rest) = expectedResult moves inp
1385+ in
1386+ case res of
1387+ Left err -> [Left err]
1388+ Right val -> Right val : expectedResultMany moves rest
1389+
13811390createPaths :: [a ] -> [[a ]]
13821391createPaths xs =
13831392 Prelude. map (flip Prelude. take xs) [1 .. length xs]
@@ -1485,6 +1494,18 @@ sanityParseBreakChunksK jumps = it (show jumps) $ do
14851494 lst <- Prelude. map A. toList <$> K. toList rest
14861495 (val, concat lst) `shouldBe` (expectedResult jumps tape)
14871496
1497+ sanityParseMany :: [Move ] -> SpecWith ()
1498+ sanityParseMany jumps = it (show jumps) $ do
1499+ res <- S. toList $ SI. parseMany (jumpParser jumps) $ S. fromList tape
1500+ res `shouldBe` (expectedResultMany jumps tape)
1501+
1502+ sanityParseIterate :: [Move ] -> SpecWith ()
1503+ sanityParseIterate jumps = it (show jumps) $ do
1504+ res <-
1505+ S. toList
1506+ $ SI. parseIterate (const (jumpParser jumps)) [] $ S. fromList tape
1507+ res `shouldBe` (expectedResultMany jumps tape)
1508+
14881509-------------------------------------------------------------------------------
14891510-- Main
14901511-------------------------------------------------------------------------------
@@ -1501,6 +1522,8 @@ main =
15011522 parserSanityTests " Stream.parseBreak" sanityParseBreak
15021523 parserSanityTests " StreamK.parseDBreak" sanityParseDBreak
15031524 parserSanityTests " A.sanityParseBreakChunksK" sanityParseBreakChunksK
1525+ parserSanityTests " Stream.parseMany" sanityParseMany
1526+ parserSanityTests " Stream.parseIterate" sanityParseIterate
15041527 describe " Instances" $ do
15051528 prop " applicative" applicative
15061529 prop " Alternative: end of input 1" altEOF1
0 commit comments