parser-combinators-tests 1.3.0 → 1.3.1
raw patch · 8 files changed
+142/−154 lines, 8 filesdep −hspec-expectationsdep ~QuickCheckdep ~basedep ~hspecsetup-changed
Dependencies removed: hspec-expectations
Dependency ranges changed: QuickCheck, base, hspec, hspec-megaparsec, megaparsec, megaparsec-tests, parser-combinators
Files
- README.md +3/−3
- Setup.hs +0/−6
- parser-combinators-tests.cabal +22/−18
- tests/Control/Applicative/CombinatorsSpec.hs +59/−62
- tests/Control/Applicative/PermutationsSpec.hs +2/−1
- tests/Control/Monad/Combinators/ExprSpec.hs +0/−5
- tests/Control/Monad/CombinatorsSpec.hs +54/−58
- tests/Control/Monad/PermutationsSpec.hs +2/−1
README.md view
@@ -1,8 +1,8 @@ # Parser combinators tests -Test suite for the `parser-combinators` package as a separate package. This-allows us to avoid a circular dependency with `megaparsec` (which depends on-`parser-combinators`).+A test suite for the `parser-combinators` package as a separate package.+This allows us to avoid a circular dependency with `megaparsec` (which+depends on `parser-combinators`). ## License
− Setup.hs
@@ -1,6 +0,0 @@-module Main (main) where--import Distribution.Simple--main :: IO ()-main = defaultMain
parser-combinators-tests.cabal view
@@ -1,11 +1,11 @@-cabal-version: 1.18+cabal-version: 2.4 name: parser-combinators-tests-version: 1.3.0-license: BSD3+version: 1.3.1+license: BSD-3-Clause license-file: LICENSE.md maintainer: Mark Karpov <markkarpov92@gmail.com> author: Mark Karpov <markkarpov92@gmail.com>-tested-with: ghc ==8.6.5 ghc ==8.8.4 ghc ==8.10.3+tested-with: ghc ==9.8.4 ghc ==9.10.3 ghc ==9.12.1 homepage: https://github.com/mrkkrp/parser-combinators bug-reports: https://github.com/mrkkrp/parser-combinators/issues synopsis: Test suite of parser-combinators@@ -24,10 +24,10 @@ manual: True test-suite test-suite- type: exitcode-stdio-1.0- main-is: Spec.hs- build-tools: hspec-discover >=2.0 && <3.0- hs-source-dirs: tests+ type: exitcode-stdio-1.0+ main-is: Spec.hs+ build-tool-depends: hspec-discover:hspec-discover >=2.0 && <3.0+ hs-source-dirs: tests other-modules: Control.Applicative.CombinatorsSpec Control.Applicative.PermutationsSpec@@ -35,19 +35,23 @@ Control.Monad.CombinatorsSpec Control.Monad.PermutationsSpec - default-language: Haskell2010+ default-language: Haskell2010 build-depends:- QuickCheck >=2.7 && <2.15,- base >=4.12 && <5.0,- hspec >=2.0 && <3.0,- hspec-expectations >=0.8 && <0.9,- hspec-megaparsec >=2.0 && <3.0,- megaparsec >=8.0 && <10.0,- megaparsec-tests >=8.0 && <10.0,- parser-combinators ==1.3.0+ QuickCheck >=2.7 && <2.17,+ base >=4.15 && <5,+ hspec >=2.0 && <3,+ hspec-megaparsec >=2 && <3,+ megaparsec >=8 && <10,+ megaparsec-tests >=8 && <10,+ parser-combinators ==1.3.1 if flag(dev)- ghc-options: -Wall -Werror+ ghc-options:+ -Wall -Werror -Wredundant-constraints -Wpartial-fields+ -Wunused-packages else ghc-options: -O2 -Wall++ if impl(ghc >=9.8)+ ghc-options: -Wno-x-partial
tests/Control/Applicative/CombinatorsSpec.hs view
@@ -26,7 +26,8 @@ prs_ p s `shouldFailWith` err (length pre + n + b)- ( etoks post <> etok c+ ( etoks post+ <> etok c <> if length post == b then ueof else utoks (drop b post)@@ -57,15 +58,15 @@ p = count' m n (char 'x') s = replicate x 'x' if- | n <= 0 || m > n ->+ | n <= 0 || m > n -> if x == 0 then prs_ p s `shouldParse` "" else prs_ p s `shouldFailWith` err 0 (utok 'x' <> eeof)- | m <= x && x <= n ->+ | m <= x && x <= n -> prs_ p s `shouldParse` s- | x < m ->+ | x < m -> prs_ p s `shouldFailWith` err x (ueof <> etok 'x')- | otherwise ->+ | otherwise -> prs_ p s `shouldFailWith` err n (utok 'x' <> eeof) rightOrder (count' 1 3 letterChar) "abc" "abc" @@ -74,9 +75,9 @@ let p = eitherP letterChar digitChar s = pure ch if- | isLetter ch -> prs_ p s `shouldParse` Left ch- | isDigit ch -> prs_ p s `shouldParse` Right ch- | otherwise ->+ | isLetter ch -> prs_ p s `shouldParse` Left ch+ | isDigit ch -> prs_ p s `shouldParse` Right ch+ | otherwise -> prs_ p s `shouldFailWith` err 0 (utok ch <> elabel "letter" <> elabel "digit") @@ -86,13 +87,13 @@ p = endBy (char 'a') (char '-') s = intersperse '-' (replicate n 'a') ++ [c] if- | c == 'a' && n == 0 ->+ | c == 'a' && n == 0 -> prs_ p s `shouldFailWith` err 1 (ueof <> etok '-')- | c == 'a' ->+ | c == 'a' -> prs_ p s `shouldFailWith` err (g n) (utok 'a' <> etok '-')- | c == '-' && n == 0 ->+ | c == '-' && n == 0 -> prs_ p s `shouldFailWith` err 0 (utok '-' <> etok 'a' <> eeof)- | c /= '-' ->+ | c /= '-' -> prs_ p s `shouldFailWith` err (g n)@@ -100,7 +101,7 @@ <> (if n > 0 then etok '-' else eeof) <> (if n == 0 then etok 'a' else mempty) )- | otherwise -> prs_ p s `shouldParse` replicate n 'a'+ | otherwise -> prs_ p s `shouldParse` replicate n 'a' rightOrder (endBy letterChar (char ',')) "a,b,c," "abc" describe "endBy1" $ do@@ -109,13 +110,13 @@ p = endBy1 (char 'a') (char '-') s = intersperse '-' (replicate n 'a') ++ [c] if- | c == 'a' && n == 0 ->+ | c == 'a' && n == 0 -> prs_ p s `shouldFailWith` err 1 (ueof <> etok '-')- | c == 'a' ->+ | c == 'a' -> prs_ p s `shouldFailWith` err (g n) (utok 'a' <> etok '-')- | c == '-' && n == 0 ->+ | c == '-' && n == 0 -> prs_ p s `shouldFailWith` err 0 (utok '-' <> etok 'a')- | c /= '-' ->+ | c /= '-' -> prs_ p s `shouldFailWith` err (g n)@@ -123,13 +124,12 @@ <> (if n > 0 then etok '-' else mempty) <> (if n == 0 then etok 'a' else mempty) )- | otherwise -> prs_ p s `shouldParse` replicate n 'a'+ | otherwise -> prs_ p s `shouldParse` replicate n 'a' rightOrder (endBy1 letterChar (char ',')) "a,b,c," "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+ it "works" . property $ \(NonNegative a) (NonNegative b) (NonNegative c) -> do+ let p = (,) <$> manyTill letterChar (char 'c') <*> many letterChar s = abcRow a b c if c == 0 then@@ -143,9 +143,8 @@ 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+ it "works" . property $ \(NonNegative a) (NonNegative b) (NonNegative c) -> do+ let p = (,) <$> manyTill_ letterChar (char 'c') <*> many letterChar s = abcRow a b c if c == 0 then@@ -159,45 +158,43 @@ 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']- p = (,) <$> someTill letterChar (char 'c') <*> many letterChar+ it "works" . property $ \(NonNegative a) (NonNegative b) (NonNegative c) -> do+ let p = (,) <$> someTill letterChar (char 'c') <*> many letterChar s = abcRow a b c if- | null s ->+ | null s -> prs_ p s `shouldFailWith` err 0 (ueof <> elabel "letter")- | c == 0 ->+ | c == 0 -> prs_ p s `shouldFailWith` err (a + b) (ueof <> etok 'c' <> elabel "letter")- | s == "c" ->+ | s == "c" -> prs_ p s `shouldFailWith` err 1 (ueof <> etok 'c' <> elabel "letter")- | head s == 'c' ->+ | head s == 'c' -> prs_ p s `shouldParse` ("c", drop 2 s)- | otherwise ->+ | otherwise -> 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+ it "works" . property $ \(NonNegative a) (NonNegative b) (NonNegative c) -> do+ let p = (,) <$> someTill_ letterChar (char 'c') <*> many letterChar s = abcRow a b c if- | null s ->+ | null s -> prs_ p s `shouldFailWith` err 0 (ueof <> elabel "letter")- | c == 0 ->+ | c == 0 -> prs_ p s `shouldFailWith` err (a + b) (ueof <> etok 'c' <> elabel "letter")- | s == "c" ->+ | s == "c" -> prs_ p s `shouldFailWith` err 1 (ueof <> etok 'c' <> elabel "letter")- | head s == 'c' ->+ | head s == 'c' -> prs_ p s `shouldParse` (("c", 'c'), drop 2 s)- | otherwise ->+ | 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"@@ -215,15 +212,15 @@ p = sepBy (char 'a') (char '-') s = intersperse '-' (replicate n 'a') ++ maybeToList c' if- | isNothing c' ->+ | isNothing c' -> prs_ p s `shouldParse` replicate n 'a'- | c == 'a' && n == 0 ->+ | c == 'a' && n == 0 -> prs_ p s `shouldParse` "a"- | n == 0 ->+ | n == 0 -> prs_ p s `shouldFailWith` err 0 (utok c <> etok 'a' <> eeof)- | c == '-' ->+ | c == '-' -> prs_ p s `shouldFailWith` err (length s) (ueof <> etok 'a')- | otherwise ->+ | otherwise -> prs_ p s `shouldFailWith` err (g n) (utok c <> etok '-' <> eeof) rightOrder (sepBy letterChar (char ',')) "a,b,c" "abc" @@ -234,17 +231,17 @@ p = sepBy1 (char 'a') (char '-') s = intersperse '-' (replicate n 'a') ++ maybeToList c' if- | isNothing c' && n >= 1 ->+ | isNothing c' && n >= 1 -> prs_ p s `shouldParse` replicate n 'a'- | isNothing c' ->+ | isNothing c' -> prs_ p s `shouldFailWith` err 0 (ueof <> etok 'a')- | c == 'a' && n == 0 ->+ | c == 'a' && n == 0 -> prs_ p s `shouldParse` "a"- | n == 0 ->+ | n == 0 -> prs_ p s `shouldFailWith` err 0 (utok c <> etok 'a')- | c == '-' ->+ | c == '-' -> prs_ p s `shouldFailWith` err (length s) (ueof <> etok 'a')- | otherwise ->+ | otherwise -> prs_ p s `shouldFailWith` err (g n) (utok c <> etok '-' <> eeof) rightOrder (sepBy1 letterChar (char ',')) "a,b,c" "abc" @@ -256,15 +253,15 @@ a = replicate n 'a' s = intersperse '-' (replicate n 'a') ++ maybeToList c' if- | isNothing c' ->+ | isNothing c' -> prs_ p s `shouldParse` a- | c == 'a' && n == 0 ->+ | c == 'a' && n == 0 -> prs_ p s `shouldParse` "a"- | n == 0 ->+ | n == 0 -> prs_ p s `shouldFailWith` err 0 (utok c <> etok 'a' <> eeof)- | c == '-' ->+ | c == '-' -> prs_ p s `shouldParse` a- | otherwise ->+ | otherwise -> prs_ p s `shouldFailWith` err (g n) (utok c <> etok '-' <> eeof) rightOrder (sepEndBy letterChar (char ',')) "a,b,c," "abc" @@ -276,17 +273,17 @@ a = replicate n 'a' s = intersperse '-' (replicate n 'a') ++ maybeToList c' if- | isNothing c' && n >= 1 ->+ | isNothing c' && n >= 1 -> prs_ p s `shouldParse` a- | isNothing c' ->+ | isNothing c' -> prs_ p s `shouldFailWith` err 0 (ueof <> etok 'a')- | c == 'a' && n == 0 ->+ | c == 'a' && n == 0 -> prs_ p s `shouldParse` "a"- | n == 0 ->+ | n == 0 -> prs_ p s `shouldFailWith` err 0 (utok c <> etok 'a')- | c == '-' ->+ | c == '-' -> prs_ p s `shouldParse` a- | otherwise ->+ | otherwise -> prs_ p s `shouldFailWith` err (g n) (utok c <> etok '-' <> eeof) rightOrder (sepEndBy1 letterChar (char ',')) "a,b,c," "abc"
tests/Control/Applicative/PermutationsSpec.hs view
@@ -147,7 +147,8 @@ testPermParser :: Permutation Parser String testPermParser =- f <$> toPermutationWithDefault 'x' (char 'a')+ f+ <$> toPermutationWithDefault 'x' (char 'a') <*> toPermutationWithDefault 'y' (char 'b') <*> toPermutationWithDefault 'z' (char 'c') where
tests/Control/Monad/Combinators/ExprSpec.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE TypeFamilies #-} @@ -12,10 +11,6 @@ import Test.QuickCheck import Text.Megaparsec import Text.Megaparsec.Char--#if !MIN_VERSION_base(4,13,0)-import Data.Semigroup ((<>))-#endif spec :: Spec spec =
tests/Control/Monad/CombinatorsSpec.hs view
@@ -28,15 +28,15 @@ p = count' m n (char 'x') s = replicate x 'x' if- | n <= 0 || m > n ->+ | n <= 0 || m > n -> if x == 0 then prs_ p s `shouldParse` "" else prs_ p s `shouldFailWith` err 0 (utok 'x' <> eeof)- | m <= x && x <= n ->+ | m <= x && x <= n -> prs_ p s `shouldParse` s- | x < m ->+ | x < m -> prs_ p s `shouldFailWith` err x (ueof <> etok 'x')- | otherwise ->+ | otherwise -> prs_ p s `shouldFailWith` err n (utok 'x' <> eeof) rightOrder (count' 1 3 letterChar) "abc" "abc" @@ -46,13 +46,13 @@ p = endBy (char 'a') (char '-') s = intersperse '-' (replicate n 'a') ++ [c] if- | c == 'a' && n == 0 ->+ | c == 'a' && n == 0 -> prs_ p s `shouldFailWith` err 1 (ueof <> etok '-')- | c == 'a' ->+ | c == 'a' -> prs_ p s `shouldFailWith` err (g n) (utok 'a' <> etok '-')- | c == '-' && n == 0 ->+ | c == '-' && n == 0 -> prs_ p s `shouldFailWith` err 0 (utok '-' <> etok 'a' <> eeof)- | c /= '-' ->+ | c /= '-' -> prs_ p s `shouldFailWith` err (g n)@@ -60,7 +60,7 @@ <> (if n > 0 then etok '-' else eeof) <> (if n == 0 then etok 'a' else mempty) )- | otherwise -> prs_ p s `shouldParse` replicate n 'a'+ | otherwise -> prs_ p s `shouldParse` replicate n 'a' rightOrder (endBy letterChar (char ',')) "a,b,c," "abc" describe "endBy1" $ do@@ -69,13 +69,13 @@ p = endBy1 (char 'a') (char '-') s = intersperse '-' (replicate n 'a') ++ [c] if- | c == 'a' && n == 0 ->+ | c == 'a' && n == 0 -> prs_ p s `shouldFailWith` err (1 :: Int) (ueof <> etok '-')- | c == 'a' ->+ | c == 'a' -> prs_ p s `shouldFailWith` err (g n) (utok 'a' <> etok '-')- | c == '-' && n == 0 ->+ | c == '-' && n == 0 -> prs_ p s `shouldFailWith` err 0 (utok '-' <> etok 'a')- | c /= '-' ->+ | c /= '-' -> prs_ p s `shouldFailWith` err (g n)@@ -83,13 +83,12 @@ <> (if n > 0 then etok '-' else mempty) <> (if n == 0 then etok 'a' else mempty) )- | otherwise -> prs_ p s `shouldParse` replicate n 'a'+ | otherwise -> prs_ p s `shouldParse` replicate n 'a' rightOrder (endBy1 letterChar (char ',')) "a,b,c," "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+ it "works" . property $ \(NonNegative a) (NonNegative b) (NonNegative c) -> do+ let p = (,) <$> manyTill letterChar (char 'c') <*> many letterChar s = abcRow a b c if c == 0 then@@ -103,9 +102,8 @@ 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+ it "works" . property $ \(NonNegative a) (NonNegative b) (NonNegative c) -> do+ let p = (,) <$> manyTill_ letterChar (char 'c') <*> many letterChar s = abcRow a b c if c == 0 then@@ -119,45 +117,43 @@ 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']- p = (,) <$> someTill letterChar (char 'c') <*> many letterChar+ it "works" . property $ \(NonNegative a) (NonNegative b) (NonNegative c) -> do+ let p = (,) <$> someTill letterChar (char 'c') <*> many letterChar s = abcRow a b c if- | null s ->+ | null s -> prs_ p s `shouldFailWith` err 0 (ueof <> elabel "letter")- | c == 0 ->+ | c == 0 -> prs_ p s `shouldFailWith` err (a + b) (ueof <> etok 'c' <> elabel "letter")- | s == "c" ->+ | s == "c" -> prs_ p s `shouldFailWith` err 1 (ueof <> etok 'c' <> elabel "letter")- | head s == 'c' ->+ | head s == 'c' -> prs_ p s `shouldParse` ("c", drop 2 s)- | otherwise ->+ | otherwise -> 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+ it "works" . property $ \(NonNegative a) (NonNegative b) (NonNegative c) -> do+ let p = (,) <$> someTill_ letterChar (char 'c') <*> many letterChar s = abcRow a b c if- | null s ->+ | null s -> prs_ p s `shouldFailWith` err 0 (ueof <> elabel "letter")- | c == 0 ->+ | c == 0 -> prs_ p s `shouldFailWith` err (a + b) (ueof <> etok 'c' <> elabel "letter")- | s == "c" ->+ | s == "c" -> prs_ p s `shouldFailWith` err 1 (ueof <> etok 'c' <> elabel "letter")- | head s == 'c' ->+ | head s == 'c' -> prs_ p s `shouldParse` (("c", 'c'), drop 2 s)- | otherwise ->+ | 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"@@ -169,15 +165,15 @@ p = sepBy (char 'a') (char '-') s = intersperse '-' (replicate n 'a') ++ maybeToList c' if- | isNothing c' ->+ | isNothing c' -> prs_ p s `shouldParse` replicate n 'a'- | c == 'a' && n == 0 ->+ | c == 'a' && n == 0 -> prs_ p s `shouldParse` "a"- | n == 0 ->+ | n == 0 -> prs_ p s `shouldFailWith` err 0 (utok c <> etok 'a' <> eeof)- | c == '-' ->+ | c == '-' -> prs_ p s `shouldFailWith` err (length s) (ueof <> etok 'a')- | otherwise ->+ | otherwise -> prs_ p s `shouldFailWith` err (g n) (utok c <> etok '-' <> eeof) rightOrder (sepBy letterChar (char ',')) "a,b,c" "abc" @@ -188,17 +184,17 @@ p = sepBy1 (char 'a') (char '-') s = intersperse '-' (replicate n 'a') ++ maybeToList c' if- | isNothing c' && n >= 1 ->+ | isNothing c' && n >= 1 -> prs_ p s `shouldParse` replicate n 'a'- | isNothing c' ->+ | isNothing c' -> prs_ p s `shouldFailWith` err 0 (ueof <> etok 'a')- | c == 'a' && n == 0 ->+ | c == 'a' && n == 0 -> prs_ p s `shouldParse` "a"- | n == 0 ->+ | n == 0 -> prs_ p s `shouldFailWith` err 0 (utok c <> etok 'a')- | c == '-' ->+ | c == '-' -> prs_ p s `shouldFailWith` err (length s) (ueof <> etok 'a')- | otherwise ->+ | otherwise -> prs_ p s `shouldFailWith` err (g n) (utok c <> etok '-' <> eeof) rightOrder (sepBy1 letterChar (char ',')) "a,b,c" "abc" @@ -210,15 +206,15 @@ a = replicate n 'a' s = intersperse '-' (replicate n 'a') ++ maybeToList c' if- | isNothing c' ->+ | isNothing c' -> prs_ p s `shouldParse` a- | c == 'a' && n == 0 ->+ | c == 'a' && n == 0 -> prs_ p s `shouldParse` "a"- | n == 0 ->+ | n == 0 -> prs_ p s `shouldFailWith` err 0 (utok c <> etok 'a' <> eeof)- | c == '-' ->+ | c == '-' -> prs_ p s `shouldParse` a- | otherwise ->+ | otherwise -> prs_ p s `shouldFailWith` err (g n) (utok c <> etok '-' <> eeof) rightOrder (sepEndBy letterChar (char ',')) "a,b,c," "abc" @@ -230,17 +226,17 @@ a = replicate n 'a' s = intersperse '-' (replicate n 'a') ++ maybeToList c' if- | isNothing c' && n >= 1 ->+ | isNothing c' && n >= 1 -> prs_ p s `shouldParse` a- | isNothing c' ->+ | isNothing c' -> prs_ p s `shouldFailWith` err 0 (ueof <> etok 'a')- | c == 'a' && n == 0 ->+ | c == 'a' && n == 0 -> prs_ p s `shouldParse` "a"- | n == 0 ->+ | n == 0 -> prs_ p s `shouldFailWith` err 0 (utok c <> etok 'a')- | c == '-' ->+ | c == '-' -> prs_ p s `shouldParse` a- | otherwise ->+ | otherwise -> prs_ p s `shouldFailWith` err (g n) (utok c <> etok '-' <> eeof) rightOrder (sepEndBy1 letterChar (char ',')) "a,b,c," "abc"
tests/Control/Monad/PermutationsSpec.hs view
@@ -147,7 +147,8 @@ testPermParser :: Permutation Parser String testPermParser =- f <$> toPermutationWithDefault 'x' (char 'a')+ f+ <$> toPermutationWithDefault 'x' (char 'a') <*> toPermutationWithDefault 'y' (char 'b') <*> toPermutationWithDefault 'z' (char 'c') where