parser-combinators-tests 1.1.0 → 1.2.0
raw patch · 3 files changed
+65/−3 lines, 3 filesdep ~QuickCheckdep ~parser-combinators
Dependency ranges changed: QuickCheck, parser-combinators
Files
- parser-combinators-tests.cabal +3/−3
- tests/Control/Applicative/CombinatorsSpec.hs +31/−0
- tests/Control/Monad/CombinatorsSpec.hs +31/−0
parser-combinators-tests.cabal view
@@ -1,5 +1,5 @@ name: parser-combinators-tests-version: 1.1.0+version: 1.2.0 cabal-version: 1.18 tested-with: GHC==8.0.2, GHC==8.2.2, GHC==8.4.4, GHC==8.6.5 license: BSD3@@ -27,14 +27,14 @@ main-is: Spec.hs hs-source-dirs: tests type: exitcode-stdio-1.0- build-depends: QuickCheck >= 2.7 && < 2.13+ build-depends: QuickCheck >= 2.7 && < 2.14 , base >= 4.9 && < 5.0 , hspec >= 2.0 && < 3.0 , hspec-expectations >= 0.8 && < 0.9 , hspec-megaparsec >= 2.0 && < 3.0 , megaparsec >= 7.0 && < 8.0 , megaparsec-tests >= 7.0 && < 8.0- , parser-combinators == 1.1.0+ , parser-combinators == 1.2.0 other-modules: Control.Applicative.CombinatorsSpec , Control.Applicative.PermutationsSpec , Control.Monad.Combinators.ExprSpec
tests/Control/Applicative/CombinatorsSpec.hs view
@@ -129,6 +129,18 @@ in prs_ p s `shouldParse` (pre, drop 1 post) rightOrder (manyTill letterChar (char 'd')) "abcd" "abc" + describe "manyTill_" $ do+ it "works" . property $ \a' b' c' -> do+ let [a,b,c] = getNonNegative <$> [a',b',c']+ p = (,) <$> manyTill_ letterChar (char 'c') <*> many letterChar+ s = abcRow a b c+ if c == 0+ then prs_ p s `shouldFailWith` err (a + b)+ (ueof <> etok 'c' <> elabel "letter")+ else let (pre, post) = break (== 'c') s+ in prs_ p s `shouldParse` ((pre, 'c'), drop 1 post)+ rightOrder (fst <$> manyTill_ letterChar (char 'd')) "abcd" "abc"+ describe "someTill" $ do it "works" . property $ \a' b' c' -> do let [a,b,c] = getNonNegative <$> [a',b',c']@@ -147,6 +159,25 @@ let (pre, post) = break (== 'c') s in prs_ p s `shouldParse` (pre, drop 1 post) rightOrder (someTill letterChar (char 'd')) "abcd" "abc"++ describe "someTill_" $ do+ it "works" . property $ \a' b' c' -> do+ let [a,b,c] = getNonNegative <$> [a',b',c']+ p = (,) <$> someTill_ letterChar (char 'c') <*> many letterChar+ s = abcRow a b c+ if | null s ->+ prs_ p s `shouldFailWith` err 0 (ueof <> elabel "letter")+ | c == 0 ->+ prs_ p s `shouldFailWith` err (a + b)+ (ueof <> etok 'c' <> elabel "letter")+ | s == "c" ->+ prs_ p s `shouldFailWith` err 1 (ueof <> etok 'c' <> elabel "letter")+ | head s == 'c' ->+ prs_ p s `shouldParse` (("c", 'c'), drop 2 s)+ | otherwise ->+ let (pre, post) = break (== 'c') s+ in prs_ p s `shouldParse` ((pre, 'c'), drop 1 post)+ rightOrder (fst <$> someTill_ letterChar (char 'd')) "abcd" "abc" describe "option" $ it "works" . property $ \d a s -> do
tests/Control/Monad/CombinatorsSpec.hs view
@@ -95,6 +95,18 @@ in prs_ p s `shouldParse` (pre, drop 1 post) rightOrder (manyTill letterChar (char 'd')) "abcd" "abc" + describe "manyTill_" $ do+ it "works" . property $ \a' b' c' -> do+ let [a,b,c] = getNonNegative <$> [a',b',c']+ p = (,) <$> manyTill_ letterChar (char 'c') <*> many letterChar+ s = abcRow a b c+ if c == 0+ then prs_ p s `shouldFailWith` err (a + b)+ (ueof <> etok 'c' <> elabel "letter")+ else let (pre, post) = break (== 'c') s+ in prs_ p s `shouldParse` ((pre, 'c'), drop 1 post)+ rightOrder (fmap fst . manyTill_ letterChar $ char 'd') "abcd" "abc"+ describe "someTill" $ do it "works" . property $ \a' b' c' -> do let [a,b,c] = getNonNegative <$> [a',b',c']@@ -113,6 +125,25 @@ let (pre, post) = break (== 'c') s in prs_ p s `shouldParse` (pre, drop 1 post) rightOrder (someTill letterChar (char 'd')) "abcd" "abc"++ describe "someTill_" $ do+ it "works" . property $ \a' b' c' -> do+ let [a,b,c] = getNonNegative <$> [a',b',c']+ p = (,) <$> someTill_ letterChar (char 'c') <*> many letterChar+ s = abcRow a b c+ if | null s ->+ prs_ p s `shouldFailWith` err 0 (ueof <> elabel "letter")+ | c == 0 ->+ prs_ p s `shouldFailWith` err (a + b)+ (ueof <> etok 'c' <> elabel "letter")+ | s == "c" ->+ prs_ p s `shouldFailWith` err 1 (ueof <> etok 'c' <> elabel "letter")+ | head s == 'c' ->+ prs_ p s `shouldParse` (("c", 'c'), drop 2 s)+ | otherwise ->+ let (pre, post) = break (== 'c') s+ in prs_ p s `shouldParse` ((pre, 'c'), drop 1 post)+ rightOrder (fmap fst . someTill_ letterChar $ char 'd') "abcd" "abc" describe "sepBy" $ do it "works" . property $ \n' c' -> do