explainable-predicates 0.1.0.0 → 0.1.1.0
raw patch · 8 files changed
+1383/−1085 lines, 8 filesdep +QuickCheckdep ~basePVP ok
version bump matches the API change (PVP)
Dependencies added: QuickCheck
Dependency ranges changed: base
API changes (from Hackage documentation)
+ Test.Predicates: (==~) :: Predicate a -> a -> Bool
+ Test.Predicates: inBranch :: String -> (a -> Maybe b) -> Predicate b -> Predicate a
+ Test.Predicates: instance Data.Functor.Contravariant.Contravariant Test.Predicates.Predicate
+ Test.Predicates: qADT :: Name -> ExpQ
+ Test.Predicates.QuickCheck: satisfies :: a -> Predicate a -> Property
Files
- CHANGELOG.md +11/−0
- explainable-predicates.cabal +72/−27
- src/Test/Predicates.hs +265/−116
- src/Test/Predicates/Internal/Util.hs +10/−2
- src/Test/Predicates/QuickCheck.hs +20/−0
- test/DocTests/Test/Predicates.hs +956/−925
- test/DocTests/Test/Predicates/Internal/FlowMatcher.hs +5/−5
- test/Main.hs +44/−10
CHANGELOG.md view
@@ -1,5 +1,16 @@ # Revision history for explainable-predicates +## 0.1.1.0 -- 2021-09-25++* `Predicate` now has a `Contravariant` instance.+* `==~` is an infix synonym for `accept`.+* Cabal `regex` and `containers` flags (default true) enable regex and+ container predicates, respectively.+* Cabal `dev` flag (default false) turns GHC warnings into errors.+* The `inBranch` and `qADT` combinators are now available for more convenient+ matching of algebraic data types and fields.+* QuickCheck integration is now available in `Test.Predicates.QuickCheck`.+ ## 0.1.0.0 -- 2021-09-18 * First version. Released on an unsuspecting world.
explainable-predicates.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.4 name: explainable-predicates-version: 0.1.0.0+version: 0.1.1.0 synopsis: Predicates that can explain themselves. description: Explainable predicates are essentially functions from types to 'Bool' which can additionally describe themselves and@@ -20,37 +20,82 @@ extra-source-files: CHANGELOG.md -tested-with: GHC == 8.4.4 || == 8.6.5 || == 8.8.4 || == 8.10.4 || == 9.0.1+tested-with: GHC == 8.6.5 || == 8.8.4 || == 8.10.4 || == 9.0.1 source-repository head type: git location: git://github.com/cdsmith/explainable-predicates.git +flag regex+ description: Enable regular expression matching+ manual: True+ default: True++flag containers+ description: Enable container matching, which depends on mono-traversable+ manual: True+ default: True++flag quickcheck+ description: Enable QuickCheck integration+ manual: True+ default: True++flag dev+ description: Developer build+ manual: True+ default: False+ library- exposed-modules: Test.Predicates,- Test.Predicates.Internal.FlowMatcher- other-modules: Test.Predicates.Internal.Util- build-depends: array >= 0.5.2 && < 0.6,- base >=4.11.0 && < 4.16,- mono-traversable >= 1.0.15 && < 1.1,- regex-tdfa >= 1.3.1 && < 1.4,- syb >= 0.7.2 && < 0.8,- template-haskell >= 2.13.0 && < 2.18,- hs-source-dirs: src- default-language: Haskell2010- ghc-options: -Wall -Wcompat -Wincomplete-uni-patterns+ exposed-modules: Test.Predicates,+ Test.Predicates.Internal.FlowMatcher+ other-modules: Test.Predicates.Internal.Util+ build-depends: array >= 0.5.2 && < 0.6,+ base >=4.12.0 && < 4.16,+ syb >= 0.7.2 && < 0.8,+ template-haskell >= 2.13.0 && < 2.18,+ hs-source-dirs: src+ default-language: Haskell2010+ ghc-options: -Wall -Wcompat -Wincomplete-uni-patterns + if flag(regex)+ build-depends: regex-tdfa >= 1.3.1 && < 1.4,+ cpp-options: -DREGEX++ if flag(containers)+ build-depends: mono-traversable >= 1.0.15 && < 1.1,+ cpp-options: -DCONTAINERS++ if flag(quickcheck)+ build-depends: QuickCheck >= 2.8 && < 2.15,+ exposed-modules: Test.Predicates.QuickCheck++ if flag(dev)+ ghc-options: -Werror+ test-suite tests- type: exitcode-stdio-1.0- main-is: Main.hs- other-modules: DocTests.All,- DocTests.Test.Predicates,- DocTests.Test.Predicates.Internal.FlowMatcher- build-depends: base,- doctest-exitcode-stdio,- doctest-lib,- explainable-predicates,- hspec,- hs-source-dirs: test- default-language: Haskell2010- ghc-options: -threaded -Wall -Wcompat -Wincomplete-uni-patterns+ type: exitcode-stdio-1.0+ main-is: Main.hs+ build-depends: base,+ doctest-exitcode-stdio,+ doctest-lib,+ explainable-predicates,+ hspec,+ hs-source-dirs: test+ default-language: Haskell2010+ ghc-options: -threaded -Wall -Wcompat -Wincomplete-uni-patterns++ if flag(regex)+ cpp-options: -DREGEX++ if flag(containers)+ cpp-options: -DCONTAINERS++ if flag(regex) && flag(containers)+ other-modules: DocTests.All,+ DocTests.Test.Predicates,+ DocTests.Test.Predicates.Internal.FlowMatcher+ cpp-options: -DDOCTESTS++ if flag(dev)+ ghc-options: -Werror
src/Test/Predicates.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-}@@ -17,8 +18,11 @@ module Test.Predicates ( -- * The Predicate type Predicate (..),+ (==~), -- * Predicate combinators++ -- ** Basic predicates anything, eq, neq,@@ -30,22 +34,34 @@ nothing, left, right,++ -- ** Zips zipP, zip3P, zip4P, zip5P,++ -- ** Logic andP, orP, notP,+#ifdef REGEX+ -- ** Regular expressions+ matchesRegex,+ matchesCaseInsensitiveRegex,+ containsRegex,+ containsCaseInsensitiveRegex,+#endif++#ifdef CONTAINERS+ -- ** Strings and sequences startsWith, endsWith, hasSubstr, hasSubsequence, caseInsensitive,- matchesRegex,- matchesCaseInsensitiveRegex,- containsRegex,- containsCaseInsensitiveRegex,++ -- ** Containers isEmpty, nonEmpty, sizeIs,@@ -57,6 +73,9 @@ containsOnly, keys, values,+#endif++ -- ** Numerics approxEq, positive, negative,@@ -65,32 +84,31 @@ finite, infinite, nAn,++ -- ** Miscellaneous is, qIs, with, qWith,+ inBranch,+ qADT, qMatch, typed, ) where -import Data.Char (toUpper)+import Control.Monad (replicateM)+import Data.Functor.Contravariant (Contravariant (..)) import Data.List (intercalate)-import Data.Maybe (catMaybes, isJust, isNothing)-import Data.MonoTraversable (Element, MonoFoldable (..), MonoFunctor (..))-import qualified Data.Sequences as Seq+import Data.Maybe (isNothing) import Data.Typeable (Proxy (..), Typeable, cast, typeRep)-import GHC.Exts (IsList (Item, toList)) import GHC.Stack (HasCallStack, callStack)-import Language.Haskell.TH (ExpQ, PatQ, pprint)+import Language.Haskell.TH import Language.Haskell.TH.Syntax (lift)-import Test.Predicates.Internal.FlowMatcher (bipartiteMatching)-import Test.Predicates.Internal.Util- ( isSubsequenceOf,- locate,- removeModNames,- withLoc,- )+import Test.Predicates.Internal.Util (locate, removeModNames, withLoc)++#ifdef REGEX+import Data.Maybe (isJust) import Text.Regex.TDFA ( CompOption (caseSensitive, lastStarGreedy, newSyntax), ExecOption (captureGroups),@@ -100,8 +118,20 @@ RegexMaker (makeRegexOpts), RegexOptions (defaultCompOpt, defaultExecOpt), )+#endif +#ifdef CONTAINERS+import Data.Char (toUpper)+import Data.Maybe (catMaybes)+import Data.MonoTraversable (Element, MonoFoldable (..), MonoFunctor (..))+import qualified Data.Sequences as Seq+import GHC.Exts (IsList (Item, toList))+import Test.Predicates.Internal.FlowMatcher (bipartiteMatching)+import Test.Predicates.Internal.Util (isSubsequenceOf)+#endif+ -- $setup+-- >>> :set -XLambdaCase -- >>> :set -XTemplateHaskell -- >>> :set -XTypeApplications -- >>> :set -Wno-type-defaults@@ -118,6 +148,15 @@ instance Show (Predicate a) where show = showPredicate +-- | An infix synonym for 'accept'.+--+-- >>> eq 1 ==~ 1+-- True+-- >>> eq 2 ==~ 1+-- False+(==~) :: Predicate a -> a -> Bool+(==~) = accept+ withDefaultExplain :: (a -> String) -> String -> ((a -> String) -> Predicate a) -> Predicate a withDefaultExplain format connector mk = p@@ -466,98 +505,7 @@ explain = explain p } --- | A 'Predicate' that accepts sequences that start with the given prefix.------ >>> accept (startsWith "fun") "fungible"--- True--- >>> accept (startsWith "gib") "fungible"--- False-startsWith :: (Show t, Seq.IsSequence t, Eq (Element t)) => t -> Predicate t-startsWith pfx = withDefaultExplain show " " $ \explainImpl ->- Predicate- { showPredicate = "starts with " ++ show pfx,- showNegation = "doesn't start with " ++ show pfx,- accept = (pfx `Seq.isPrefixOf`),- explain = explainImpl- }---- | A 'Predicate' that accepts sequences that end with the given suffix.------ >>> accept (endsWith "ow") "crossbow"--- True--- >>> accept (endsWith "ow") "trebuchet"--- False-endsWith :: (Show t, Seq.IsSequence t, Eq (Element t)) => t -> Predicate t-endsWith sfx = withDefaultExplain show " " $ \explainImpl ->- Predicate- { showPredicate = "ends with " ++ show sfx,- showNegation = "doesn't end with " ++ show sfx,- accept = (sfx `Seq.isSuffixOf`),- explain = explainImpl- }---- | A 'Predicate' that accepts sequences that contain the given (consecutive)--- substring.------ >>> accept (hasSubstr "i") "team"--- False--- >>> accept (hasSubstr "i") "partnership"--- True-hasSubstr :: (Show t, Seq.IsSequence t, Eq (Element t)) => t -> Predicate t-hasSubstr s = withDefaultExplain show " " $ \explainImpl ->- Predicate- { showPredicate = "has substring " ++ show s,- showNegation = "doesn't have substring " ++ show s,- accept = (s `Seq.isInfixOf`),- explain = explainImpl- }---- | A 'Predicate' that accepts sequences that contain the given (not--- necessarily consecutive) subsequence.------ >>> accept (hasSubsequence [1..5]) [1, 2, 3, 4, 5]--- True--- >>> accept (hasSubsequence [1..5]) [0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0]--- True--- >>> accept (hasSubsequence [1..5]) [2, 3, 5, 7, 11]--- False-hasSubsequence :: (Show t, Seq.IsSequence t, Eq (Element t)) => t -> Predicate t-hasSubsequence s = withDefaultExplain show " " $ \explainImpl ->- Predicate- { showPredicate = "has subsequence " ++ show s,- showNegation = "doesn't have subsequence " ++ show s,- accept = (s `isSubsequenceOf`),- explain = explainImpl- }---- | Transforms a 'Predicate' on 'String's or string-like types to match without--- regard to case.------ >>> accept (caseInsensitive startsWith "foo") "FOOTBALL!"--- True--- >>> accept (caseInsensitive endsWith "ball") "soccer"--- False--- >>> accept (caseInsensitive eq "time") "TIME"--- True--- >>> accept (caseInsensitive gt "NOTHING") "everything"--- False-caseInsensitive ::- ( MonoFunctor t,- MonoFunctor a,- Element t ~ Char,- Element a ~ Char- ) =>- (t -> Predicate a) ->- (t -> Predicate a)-caseInsensitive p s =- Predicate- { showPredicate = "(case insensitive) " ++ show (p s),- showNegation = "(case insensitive) " ++ show (notP (p s)),- accept = accept capP . omap toUpper,- explain = explain capP . omap toUpper- }- where- capP = p (omap toUpper s)+#ifdef REGEX -- | A 'Predicate' that accepts 'String's or string-like values matching a -- regular expression. The expression must match the entire argument.@@ -694,6 +642,103 @@ } exec = defaultExecOpt {captureGroups = False} +#endif++#ifdef CONTAINERS++-- | A 'Predicate' that accepts sequences that start with the given prefix.+--+-- >>> accept (startsWith "fun") "fungible"+-- True+-- >>> accept (startsWith "gib") "fungible"+-- False+startsWith :: (Show t, Seq.IsSequence t, Eq (Element t)) => t -> Predicate t+startsWith pfx = withDefaultExplain show " " $ \explainImpl ->+ Predicate+ { showPredicate = "starts with " ++ show pfx,+ showNegation = "doesn't start with " ++ show pfx,+ accept = (pfx `Seq.isPrefixOf`),+ explain = explainImpl+ }++-- | A 'Predicate' that accepts sequences that end with the given suffix.+--+-- >>> accept (endsWith "ow") "crossbow"+-- True+-- >>> accept (endsWith "ow") "trebuchet"+-- False+endsWith :: (Show t, Seq.IsSequence t, Eq (Element t)) => t -> Predicate t+endsWith sfx = withDefaultExplain show " " $ \explainImpl ->+ Predicate+ { showPredicate = "ends with " ++ show sfx,+ showNegation = "doesn't end with " ++ show sfx,+ accept = (sfx `Seq.isSuffixOf`),+ explain = explainImpl+ }++-- | A 'Predicate' that accepts sequences that contain the given (consecutive)+-- substring.+--+-- >>> accept (hasSubstr "i") "team"+-- False+-- >>> accept (hasSubstr "i") "partnership"+-- True+hasSubstr :: (Show t, Seq.IsSequence t, Eq (Element t)) => t -> Predicate t+hasSubstr s = withDefaultExplain show " " $ \explainImpl ->+ Predicate+ { showPredicate = "has substring " ++ show s,+ showNegation = "doesn't have substring " ++ show s,+ accept = (s `Seq.isInfixOf`),+ explain = explainImpl+ }++-- | A 'Predicate' that accepts sequences that contain the given (not+-- necessarily consecutive) subsequence.+--+-- >>> accept (hasSubsequence [1..5]) [1, 2, 3, 4, 5]+-- True+-- >>> accept (hasSubsequence [1..5]) [0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0]+-- True+-- >>> accept (hasSubsequence [1..5]) [2, 3, 5, 7, 11]+-- False+hasSubsequence :: (Show t, Seq.IsSequence t, Eq (Element t)) => t -> Predicate t+hasSubsequence s = withDefaultExplain show " " $ \explainImpl ->+ Predicate+ { showPredicate = "has subsequence " ++ show s,+ showNegation = "doesn't have subsequence " ++ show s,+ accept = (s `isSubsequenceOf`),+ explain = explainImpl+ }++-- | Transforms a 'Predicate' on 'String's or string-like types to match without+-- regard to case.+--+-- >>> accept (caseInsensitive startsWith "foo") "FOOTBALL!"+-- True+-- >>> accept (caseInsensitive endsWith "ball") "soccer"+-- False+-- >>> accept (caseInsensitive eq "time") "TIME"+-- True+-- >>> accept (caseInsensitive gt "NOTHING") "everything"+-- False+caseInsensitive ::+ ( MonoFunctor t,+ MonoFunctor a,+ Element t ~ Char,+ Element a ~ Char+ ) =>+ (t -> Predicate a) ->+ (t -> Predicate a)+caseInsensitive p s =+ Predicate+ { showPredicate = "(case insensitive) " ++ show (p s),+ showNegation = "(case insensitive) " ++ show (notP (p s)),+ accept = accept capP . omap toUpper,+ explain = explain capP . omap toUpper+ }+ where+ capP = p (omap toUpper s)+ -- | A 'Predicate' that accepts empty data structures. -- -- >>> accept isEmpty ([] :: [Int])@@ -990,6 +1035,8 @@ explain = ("in values, " ++) . explain p . map snd . toList } +#endif+ -- | A 'Predicate' that accepts values of 'RealFloat' types that are close to -- the given number. The expected precision is scaled based on the target -- value, so that reasonable rounding error is accepted but grossly inaccurate@@ -1159,7 +1206,8 @@ -- | A conversion from @a -> 'Bool'@ to 'Predicate'. This is a fallback that -- can be used to build a 'Predicate' that checks anything at all. However, its--- description will be less helpful than standard 'Predicate's.+-- description will be less helpful than standard 'Predicate's. You can use+-- 'qIs' instead to get better descriptions using Template Haskell. -- -- >>> accept (is even) 3 -- False@@ -1178,8 +1226,7 @@ } -- | A Template Haskell splice that acts like 'is', but receives a quoted--- expression at compile time and has a more helpful description for error--- messages.+-- expression at compile time and has a more helpful explanation. -- -- >>> accept $(qIs [| even |]) 3 -- False@@ -1202,7 +1249,9 @@ description = lift . pprint . removeModNames =<< p -- | A combinator to lift a 'Predicate' to work on a property or computed value--- of the original value.+-- of the original value. The explanations are less helpful that standard+-- predicates like 'size'. You can use 'qWith' instead to get better+-- explanations using Template Haskell. -- -- >>> accept (with abs (gt 5)) (-6) -- True@@ -1223,9 +1272,18 @@ where prop = withLoc (locate callStack "property") --- | A Template Haskell splice that acts like 'is', but receives a quoted typed--- expression at compile time and has a more helpful description for error--- messages.+-- | Use 'with' or 'qWith' instead of 'contramap' to get better explanations.+instance Contravariant Predicate where+ contramap f p =+ Predicate+ { showPredicate = "in a property: " ++ show p,+ showNegation = "in a property: " ++ showNegation p,+ accept = accept p . f,+ explain = ("in a property: " ++) . explain p . f+ }++-- | A Template Haskell splice that acts like 'with', but receives a quoted+-- typed expression at compile time and has a more helpful explanation. -- -- >>> accept ($(qWith [| abs |]) (gt 5)) (-6) -- True@@ -1251,6 +1309,97 @@ |] where prop = lift . pprint . removeModNames =<< f++-- | A 'Predicate' that accepts values with a given nested value. This is+-- intended to match constructors with arguments. You can use 'qADT' instead+-- to get better explanations using Template Haskell.+--+-- >>> accept (inBranch "Left" (\case {Left x -> Just x; _ -> Nothing}) positive) (Left 1)+-- True+-- >>> accept (inBranch "Left" (\case {Left x -> Just x; _ -> Nothing}) positive) (Left 0)+-- False+-- >>> accept (inBranch "Left" (\case {Left x -> Just x; _ -> Nothing}) positive) (Right 1)+-- False+inBranch :: String -> (a -> Maybe b) -> Predicate b -> Predicate a+inBranch name f p =+ Predicate+ { showPredicate = "(" ++ name ++ " _)",+ showNegation = "not (" ++ name ++ " _)",+ accept = \x -> case f x of Just y -> accept p y; _ -> False,+ explain = \x -> case f x of+ Just y -> "In " ++ name ++ ": " ++ explain p y+ _ -> "Branch didn't match"+ }++-- A Template Haskell splice which, given a constructor for an abstract data+-- type, writes a 'Predicate' that matches on that constructor and applies other+-- 'Predicate's to its fields.+--+-- >>> accept $(qADT 'Nothing) Nothing+-- True+-- >>> accept $(qADT 'Nothing) (Just 5)+-- False+-- >>> accept ($(qADT 'Just) positive) (Just 5)+-- True+-- >>> accept ($(qADT 'Just) positive) Nothing+-- False+-- >>> accept ($(qADT 'Just) positive) (Just 0)+-- False+qADT :: Name -> ExpQ+qADT conName =+ do+ let prettyConName = lift (pprint (removeModNames conName))+ t <- reify conName >>= (\case+ DataConI _ ty _ -> pure ty+ PatSynI _ ty -> pure ty+ _ -> fail $ "qADT: " ++ show conName ++ " is not a data constructor")++ let n = countArguments t+ subpreds <- replicateM n (newName "p")+ let subdescs =+ map+ (\p -> [|"(" ++ showPredicate $p ++ ")"|])+ (varE <$> subpreds)+ let desc = [|unwords ($prettyConName : $(listE subdescs))|]+ let negDesc+ | n == 0 = [|"≠ " ++ $desc|]+ | otherwise = [|"not (" ++ $desc ++ ")"|]+ args <- replicateM n (newName "x")+ let pattern = conP conName (varP <$> args)+ let acceptExplainFields =+ listE $+ zipWith+ (\p x -> [|(accept $p $x, explain $p $x)|])+ (varE <$> subpreds)+ (varE <$> args)+ y <- newName "y"+ lamE+ (varP <$> subpreds)+ [|+ let acceptAndExplain $(varP y) = case $(varE y) of+ $pattern -> Just $acceptExplainFields+ _ -> Nothing+ in Predicate+ { showPredicate = $desc,+ showNegation = $negDesc,+ accept = maybe False (all fst) . acceptAndExplain,+ explain = \x -> case acceptAndExplain x of+ Nothing -> "Not a " ++ $prettyConName+ Just results ->+ let significant+ | all fst results = results+ | otherwise = filter (not . fst) results+ in "In " ++ $prettyConName ++ ": "+ ++ intercalate " and " (map snd significant)+ }+ |]+ where+ countArguments (ForallT _ _ t) = countArguments t+ countArguments (AppT (AppT ArrowT _) t) = countArguments t + 1+#if MIN_VERSION_template_haskell(2,17,0)+ countArguments (AppT (AppT (AppT MulArrowT _) _) t) = countArguments t + 1+#endif+ countArguments _ = 0 -- | A Template Haskell splice that turns a quoted pattern into a predicate that -- accepts values that match the pattern.
src/Test/Predicates/Internal/Util.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE FlexibleContexts #-} @@ -5,11 +6,14 @@ module Test.Predicates.Internal.Util where import Data.Generics (Data, everywhere, mkT)-import Data.MonoTraversable (Element)-import qualified Data.Sequences as Seq import GHC.Stack (CallStack, getCallStack, prettySrcLoc) import Language.Haskell.TH.Syntax (NameFlavour (..)) +#ifdef CONTAINERS+import Data.MonoTraversable (Element)+import qualified Data.Sequences as Seq+#endif+ -- | A value together with its source location. data Located a = Loc (Maybe String) a deriving (Functor) @@ -30,6 +34,8 @@ choices [] = [] choices (x : xs) = (x, xs) : (fmap (x :) <$> choices xs) +#ifdef CONTAINERS+ -- | Checks if one sequence is a subsequence of another. isSubsequenceOf :: (Seq.IsSequence t, Eq (Element t)) => t -> t -> Bool xs `isSubsequenceOf` ys = case Seq.uncons xs of@@ -37,6 +43,8 @@ Just (x, xs') -> case Seq.uncons (snd (Seq.break (== x) ys)) of Nothing -> False Just (_, ys') -> xs' `isSubsequenceOf` ys'++#endif -- | Removes all module names from Template Haskell names in the given value, so -- that it will pretty-print more cleanly.
+ src/Test/Predicates/QuickCheck.hs view
@@ -0,0 +1,20 @@+-- | QuickCheck integration for 'Predicate'+module Test.Predicates.QuickCheck (satisfies) where++import Test.Predicates (Predicate (accept, explain))+import Test.QuickCheck (Property, counterexample)++-- $setup+-- >>> :set -XExtendedDefaultRules+-- >>> :set -Wno-type-defaults+-- >>> import Test.Predicates+-- >>> import Test.QuickCheck++-- | QuickCheck property that checks if a predicate is satisfied.+--+-- prop> \(Positive x) -> [0 .. x] `satisfies` (containsAll [eq 1, eq 2])+-- *** Failed! Falsified (after 1 test):+-- Positive {getPositive = 1}+-- Missing: 2+satisfies :: a -> Predicate a -> Property+x `satisfies` p = counterexample (explain p x) (accept p x)
test/DocTests/Test/Predicates.hs view
@@ -1,928 +1,959 @@ -- Do not edit! Automatically created with doctest-extract from src/Test/Predicates.hs-{-# LINE 90 "src/Test/Predicates.hs" #-}--{-# OPTIONS_GHC -XTemplateHaskell #-}-{-# OPTIONS_GHC -XTypeApplications #-}-{-# OPTIONS_GHC -Wno-type-defaults #-}-module DocTests.Test.Predicates where--import Test.Predicates-import Test.DocTest.Base-import qualified Test.DocTest.Driver as DocTest--{-# LINE 94 "src/Test/Predicates.hs" #-}--test :: DocTest.T ()-test = do- DocTest.printPrefix "Test.Predicates:121: "-{-# LINE 121 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 121 "src/Test/Predicates.hs" #-}- (accept anything "foo")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:123: "-{-# LINE 123 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 123 "src/Test/Predicates.hs" #-}- (accept anything undefined)- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:136: "-{-# LINE 136 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 136 "src/Test/Predicates.hs" #-}- (accept (eq "foo") "foo")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:138: "-{-# LINE 138 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 138 "src/Test/Predicates.hs" #-}- (accept (eq "foo") "bar")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:154: "-{-# LINE 154 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 154 "src/Test/Predicates.hs" #-}- (accept (neq "foo") "foo")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:156: "-{-# LINE 156 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 156 "src/Test/Predicates.hs" #-}- (accept (neq "foo") "bar")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:163: "-{-# LINE 163 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 163 "src/Test/Predicates.hs" #-}- (accept (gt 5) 4)- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:165: "-{-# LINE 165 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 165 "src/Test/Predicates.hs" #-}- (accept (gt 5) 5)- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:167: "-{-# LINE 167 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 167 "src/Test/Predicates.hs" #-}- (accept (gt 5) 6)- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:181: "-{-# LINE 181 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 181 "src/Test/Predicates.hs" #-}- (accept (geq 5) 4)- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:183: "-{-# LINE 183 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 183 "src/Test/Predicates.hs" #-}- (accept (geq 5) 5)- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:185: "-{-# LINE 185 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 185 "src/Test/Predicates.hs" #-}- (accept (geq 5) 6)- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:198: "-{-# LINE 198 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 198 "src/Test/Predicates.hs" #-}- (accept (lt 5) 4)- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:200: "-{-# LINE 200 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 200 "src/Test/Predicates.hs" #-}- (accept (lt 5) 5)- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:202: "-{-# LINE 202 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 202 "src/Test/Predicates.hs" #-}- (accept (lt 5) 6)- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:209: "-{-# LINE 209 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 209 "src/Test/Predicates.hs" #-}- (accept (leq 5) 4)- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:211: "-{-# LINE 211 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 211 "src/Test/Predicates.hs" #-}- (accept (leq 5) 5)- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:213: "-{-# LINE 213 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 213 "src/Test/Predicates.hs" #-}- (accept (leq 5) 6)- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:221: "-{-# LINE 221 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 221 "src/Test/Predicates.hs" #-}- (accept (just (eq "value")) Nothing)- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:223: "-{-# LINE 223 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 223 "src/Test/Predicates.hs" #-}- (accept (just (eq "value")) (Just "value"))- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:225: "-{-# LINE 225 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 225 "src/Test/Predicates.hs" #-}- (accept (just (eq "value")) (Just "wrong value"))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:239: "-{-# LINE 239 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 239 "src/Test/Predicates.hs" #-}- (accept nothing Nothing)- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:242: "-{-# LINE 242 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 242 "src/Test/Predicates.hs" #-}- (accept nothing (Just "something"))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:256: "-{-# LINE 256 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 256 "src/Test/Predicates.hs" #-}- (accept (left (eq "value")) (Left "value"))- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:258: "-{-# LINE 258 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 258 "src/Test/Predicates.hs" #-}- (accept (left (eq "value")) (Right "value"))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:260: "-{-# LINE 260 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 260 "src/Test/Predicates.hs" #-}- (accept (left (eq "value")) (Left "wrong value"))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:274: "-{-# LINE 274 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 274 "src/Test/Predicates.hs" #-}- (accept (right (eq "value")) (Right "value"))- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:276: "-{-# LINE 276 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 276 "src/Test/Predicates.hs" #-}- (accept (right (eq "value")) (Right "wrong value"))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:278: "-{-# LINE 278 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 278 "src/Test/Predicates.hs" #-}- (accept (right (eq "value")) (Left "value"))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:292: "-{-# LINE 292 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 292 "src/Test/Predicates.hs" #-}- (accept (zipP (eq "foo") (eq "bar")) ("foo", "bar"))- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:294: "-{-# LINE 294 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 294 "src/Test/Predicates.hs" #-}- (accept (zipP (eq "foo") (eq "bar")) ("bar", "foo"))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:318: "-{-# LINE 318 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 318 "src/Test/Predicates.hs" #-}- (accept (zip3P (eq "foo") (eq "bar") (eq "qux")) ("foo", "bar", "qux"))- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:320: "-{-# LINE 320 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 320 "src/Test/Predicates.hs" #-}- (accept (zip3P (eq "foo") (eq "bar") (eq "qux")) ("qux", "bar", "foo"))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:345: "-{-# LINE 345 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 345 "src/Test/Predicates.hs" #-}- (accept (zip4P (eq 1) (eq 2) (eq 3) (eq 4)) (1, 2, 3, 4))- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:347: "-{-# LINE 347 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 347 "src/Test/Predicates.hs" #-}- (accept (zip4P (eq 1) (eq 2) (eq 3) (eq 4)) (4, 3, 2, 1))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:378: "-{-# LINE 378 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 378 "src/Test/Predicates.hs" #-}- (accept (zip5P (eq 1) (eq 2) (eq 3) (eq 4) (eq 5)) (1, 2, 3, 4, 5))- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:380: "-{-# LINE 380 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 380 "src/Test/Predicates.hs" #-}- (accept (zip5P (eq 1) (eq 2) (eq 3) (eq 4) (eq 5)) (5, 4, 3, 2, 1))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:412: "-{-# LINE 412 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 412 "src/Test/Predicates.hs" #-}- (accept (lt "foo" `andP` gt "bar") "eta")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:414: "-{-# LINE 414 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 414 "src/Test/Predicates.hs" #-}- (accept (lt "foo" `andP` gt "bar") "quz")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:416: "-{-# LINE 416 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 416 "src/Test/Predicates.hs" #-}- (accept (lt "foo" `andP` gt "bar") "alpha")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:433: "-{-# LINE 433 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 433 "src/Test/Predicates.hs" #-}- (accept (lt "bar" `orP` gt "foo") "eta")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:435: "-{-# LINE 435 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 435 "src/Test/Predicates.hs" #-}- (accept (lt "bar" `orP` gt "foo") "quz")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:437: "-{-# LINE 437 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 437 "src/Test/Predicates.hs" #-}- (accept (lt "bar" `orP` gt "foo") "alpha")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:445: "-{-# LINE 445 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 445 "src/Test/Predicates.hs" #-}- (accept (notP (eq "negative")) "positive")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:447: "-{-# LINE 447 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 447 "src/Test/Predicates.hs" #-}- (accept (notP (eq "negative")) "negative")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:460: "-{-# LINE 460 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 460 "src/Test/Predicates.hs" #-}- (accept (startsWith "fun") "fungible")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:462: "-{-# LINE 462 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 462 "src/Test/Predicates.hs" #-}- (accept (startsWith "gib") "fungible")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:475: "-{-# LINE 475 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 475 "src/Test/Predicates.hs" #-}- (accept (endsWith "ow") "crossbow")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:477: "-{-# LINE 477 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 477 "src/Test/Predicates.hs" #-}- (accept (endsWith "ow") "trebuchet")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:491: "-{-# LINE 491 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 491 "src/Test/Predicates.hs" #-}- (accept (hasSubstr "i") "team")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:493: "-{-# LINE 493 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 493 "src/Test/Predicates.hs" #-}- (accept (hasSubstr "i") "partnership")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:507: "-{-# LINE 507 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 507 "src/Test/Predicates.hs" #-}- (accept (hasSubsequence [1..5]) [1, 2, 3, 4, 5])- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:509: "-{-# LINE 509 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 509 "src/Test/Predicates.hs" #-}- (accept (hasSubsequence [1..5]) [0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0])- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:511: "-{-# LINE 511 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 511 "src/Test/Predicates.hs" #-}- (accept (hasSubsequence [1..5]) [2, 3, 5, 7, 11])- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:525: "-{-# LINE 525 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 525 "src/Test/Predicates.hs" #-}- (accept (caseInsensitive startsWith "foo") "FOOTBALL!")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:527: "-{-# LINE 527 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 527 "src/Test/Predicates.hs" #-}- (accept (caseInsensitive endsWith "ball") "soccer")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:529: "-{-# LINE 529 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 529 "src/Test/Predicates.hs" #-}- (accept (caseInsensitive eq "time") "TIME")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:531: "-{-# LINE 531 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 531 "src/Test/Predicates.hs" #-}- (accept (caseInsensitive gt "NOTHING") "everything")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:558: "-{-# LINE 558 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 558 "src/Test/Predicates.hs" #-}- (accept (matchesRegex "x{2,5}y?") "xxxy")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:560: "-{-# LINE 560 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 560 "src/Test/Predicates.hs" #-}- (accept (matchesRegex "x{2,5}y?") "xyy")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:562: "-{-# LINE 562 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 562 "src/Test/Predicates.hs" #-}- (accept (matchesRegex "x{2,5}y?") "wxxxyz")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:592: "-{-# LINE 592 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 592 "src/Test/Predicates.hs" #-}- (accept (matchesCaseInsensitiveRegex "x{2,5}y?") "XXXY")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:594: "-{-# LINE 594 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 594 "src/Test/Predicates.hs" #-}- (accept (matchesCaseInsensitiveRegex "x{2,5}y?") "XYY")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:596: "-{-# LINE 596 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 596 "src/Test/Predicates.hs" #-}- (accept (matchesCaseInsensitiveRegex "x{2,5}y?") "WXXXYZ")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:632: "-{-# LINE 632 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 632 "src/Test/Predicates.hs" #-}- (accept (containsRegex "x{2,5}y?") "xxxy")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:634: "-{-# LINE 634 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 634 "src/Test/Predicates.hs" #-}- (accept (containsRegex "x{2,5}y?") "xyy")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:636: "-{-# LINE 636 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 636 "src/Test/Predicates.hs" #-}- (accept (containsRegex "x{2,5}y?") "wxxxyz")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:660: "-{-# LINE 660 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 660 "src/Test/Predicates.hs" #-}- (accept (containsCaseInsensitiveRegex "x{2,5}y?") "XXXY")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:662: "-{-# LINE 662 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 662 "src/Test/Predicates.hs" #-}- (accept (containsCaseInsensitiveRegex "x{2,5}y?") "XYY")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:664: "-{-# LINE 664 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 664 "src/Test/Predicates.hs" #-}- (accept (containsCaseInsensitiveRegex "x{2,5}y?") "WXXXYZ")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:688: "-{-# LINE 688 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 688 "src/Test/Predicates.hs" #-}- (accept isEmpty ([] :: [Int]))- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:690: "-{-# LINE 690 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 690 "src/Test/Predicates.hs" #-}- (accept isEmpty [1, 2, 3])- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:692: "-{-# LINE 692 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 692 "src/Test/Predicates.hs" #-}- (accept isEmpty "")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:694: "-{-# LINE 694 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 694 "src/Test/Predicates.hs" #-}- (accept isEmpty "gas tank")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:707: "-{-# LINE 707 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 707 "src/Test/Predicates.hs" #-}- (accept nonEmpty ([] :: [Int]))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:709: "-{-# LINE 709 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 709 "src/Test/Predicates.hs" #-}- (accept nonEmpty [1, 2, 3])- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:711: "-{-# LINE 711 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 711 "src/Test/Predicates.hs" #-}- (accept nonEmpty "")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:713: "-{-# LINE 713 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 713 "src/Test/Predicates.hs" #-}- (accept nonEmpty "gas tank")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:721: "-{-# LINE 721 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 721 "src/Test/Predicates.hs" #-}- (accept (sizeIs (lt 3)) ['a' .. 'f'])- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:723: "-{-# LINE 723 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 723 "src/Test/Predicates.hs" #-}- (accept (sizeIs (lt 3)) ['a' .. 'b'])- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:744: "-{-# LINE 744 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 744 "src/Test/Predicates.hs" #-}- (accept (elemsAre [lt 3, lt 4, lt 5]) [2, 3, 4])- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:746: "-{-# LINE 746 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 746 "src/Test/Predicates.hs" #-}- (accept (elemsAre [lt 3, lt 4, lt 5]) [2, 3, 4, 5])- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:748: "-{-# LINE 748 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 748 "src/Test/Predicates.hs" #-}- (accept (elemsAre [lt 3, lt 4, lt 5]) [2, 10, 4])- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:780: "-{-# LINE 780 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 780 "src/Test/Predicates.hs" #-}- (accept (unorderedElemsAre [eq 1, eq 2, eq 3]) [1, 2, 3])- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:782: "-{-# LINE 782 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 782 "src/Test/Predicates.hs" #-}- (accept (unorderedElemsAre [eq 1, eq 2, eq 3]) [2, 3, 1])- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:784: "-{-# LINE 784 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 784 "src/Test/Predicates.hs" #-}- (accept (unorderedElemsAre [eq 1, eq 2, eq 3]) [1, 2, 3, 4])- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:786: "-{-# LINE 786 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 786 "src/Test/Predicates.hs" #-}- (accept (unorderedElemsAre [eq 1, eq 2, eq 3]) [1, 3])- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:833: "-{-# LINE 833 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 833 "src/Test/Predicates.hs" #-}- (accept (each (gt 5)) [4, 5, 6])- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:835: "-{-# LINE 835 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 835 "src/Test/Predicates.hs" #-}- (accept (each (gt 5)) [6, 7, 8])- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:837: "-{-# LINE 837 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 837 "src/Test/Predicates.hs" #-}- (accept (each (gt 5)) [])- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:862: "-{-# LINE 862 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 862 "src/Test/Predicates.hs" #-}- (accept (contains (gt 5)) [3, 4, 5])- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:864: "-{-# LINE 864 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 864 "src/Test/Predicates.hs" #-}- (accept (contains (gt 5)) [4, 5, 6])- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:866: "-{-# LINE 866 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 866 "src/Test/Predicates.hs" #-}- (accept (contains (gt 5)) [])- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:874: "-{-# LINE 874 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 874 "src/Test/Predicates.hs" #-}- (accept (containsAll [eq "foo", eq "bar"]) ["bar", "foo"])- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:876: "-{-# LINE 876 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 876 "src/Test/Predicates.hs" #-}- (accept (containsAll [eq "foo", eq "bar"]) ["foo"])- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:878: "-{-# LINE 878 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 878 "src/Test/Predicates.hs" #-}- (accept (containsAll [eq "foo", eq "bar"]) ["foo", "bar", "qux"])- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:886: "-{-# LINE 886 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 886 "src/Test/Predicates.hs" #-}- (accept (containsAll [startsWith "f", endsWith "o"]) ["foo"])- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:888: "-{-# LINE 888 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 888 "src/Test/Predicates.hs" #-}- (accept (contains (startsWith "f") `andP` contains (endsWith "o")) ["foo"])- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:910: "-{-# LINE 910 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 910 "src/Test/Predicates.hs" #-}- (accept (containsOnly [eq "foo", eq "bar"]) ["foo"])- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:912: "-{-# LINE 912 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 912 "src/Test/Predicates.hs" #-}- (accept (containsOnly [eq "foo", eq "bar"]) ["foo", "bar"])- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:914: "-{-# LINE 914 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 914 "src/Test/Predicates.hs" #-}- (accept (containsOnly [eq "foo", eq "bar"]) ["foo", "qux"])- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:921: "-{-# LINE 921 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 921 "src/Test/Predicates.hs" #-}- (accept (containsOnly [eq "foo", eq "bar"]) ["foo", "foo"])- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:923: "-{-# LINE 923 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 923 "src/Test/Predicates.hs" #-}- (accept (each (eq "foo" `orP` eq "bar")) ["foo", "foo"])- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:949: "-{-# LINE 949 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 949 "src/Test/Predicates.hs" #-}- (accept (keys (each (eq "foo"))) [("foo", 5)])- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:952: "-{-# LINE 952 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 952 "src/Test/Predicates.hs" #-}- (accept (keys (each (eq "foo"))) [("foo", 5), ("bar", 6)])- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:968: "-{-# LINE 968 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 968 "src/Test/Predicates.hs" #-}- (accept (values (each (eq 5))) [("foo", 5), ("bar", 5)])- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:971: "-{-# LINE 971 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 971 "src/Test/Predicates.hs" #-}- (accept (values (each (eq 5))) [("foo", 5), ("bar", 6)])- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:989: "-{-# LINE 989 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 989 "src/Test/Predicates.hs" #-}- (accept (eq 1.0) (sum (replicate 100 0.01)))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:996: "-{-# LINE 996 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 996 "src/Test/Predicates.hs" #-}- (accept (approxEq 1.0) (sum (replicate 100 0.01)))- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:998: "-{-# LINE 998 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 998 "src/Test/Predicates.hs" #-}- (accept (approxEq 1.0) (sum (replicate 100 0.009999)))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1013: "-{-# LINE 1013 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1013 "src/Test/Predicates.hs" #-}- (accept positive 1)- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:1016: "-{-# LINE 1016 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1016 "src/Test/Predicates.hs" #-}- (accept positive 0)- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1019: "-{-# LINE 1019 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1019 "src/Test/Predicates.hs" #-}- (accept positive (-1))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1037: "-{-# LINE 1037 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1037 "src/Test/Predicates.hs" #-}- (accept negative 1)- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1040: "-{-# LINE 1040 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1040 "src/Test/Predicates.hs" #-}- (accept negative 0)- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1043: "-{-# LINE 1043 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1043 "src/Test/Predicates.hs" #-}- (accept negative (-1))- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:1062: "-{-# LINE 1062 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1062 "src/Test/Predicates.hs" #-}- (accept nonPositive 1)- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1065: "-{-# LINE 1065 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1065 "src/Test/Predicates.hs" #-}- (accept nonPositive 0)- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:1068: "-{-# LINE 1068 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1068 "src/Test/Predicates.hs" #-}- (accept nonPositive (-1))- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:1076: "-{-# LINE 1076 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1076 "src/Test/Predicates.hs" #-}- (accept nonNegative 1)- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:1079: "-{-# LINE 1079 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1079 "src/Test/Predicates.hs" #-}- (accept nonNegative 0)- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:1082: "-{-# LINE 1082 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1082 "src/Test/Predicates.hs" #-}- (accept nonNegative (-1))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1089: "-{-# LINE 1089 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1089 "src/Test/Predicates.hs" #-}- (accept finite 1.0)- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:1091: "-{-# LINE 1091 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1091 "src/Test/Predicates.hs" #-}- (accept finite (0 / 0))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1093: "-{-# LINE 1093 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1093 "src/Test/Predicates.hs" #-}- (accept finite (1 / 0))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1111: "-{-# LINE 1111 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1111 "src/Test/Predicates.hs" #-}- (accept infinite 1.0)- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1113: "-{-# LINE 1113 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1113 "src/Test/Predicates.hs" #-}- (accept infinite (0 / 0))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1115: "-{-# LINE 1115 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1115 "src/Test/Predicates.hs" #-}- (accept infinite (1 / 0))- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:1131: "-{-# LINE 1131 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1131 "src/Test/Predicates.hs" #-}- (accept nAn 1.0)- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1133: "-{-# LINE 1133 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1133 "src/Test/Predicates.hs" #-}- (accept nAn (0 / 0))- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:1135: "-{-# LINE 1135 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1135 "src/Test/Predicates.hs" #-}- (accept nAn (1 / 0))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1153: "-{-# LINE 1153 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1153 "src/Test/Predicates.hs" #-}- (accept (is even) 3)- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1155: "-{-# LINE 1155 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1155 "src/Test/Predicates.hs" #-}- (accept (is even) 4)- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:1173: "-{-# LINE 1173 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1173 "src/Test/Predicates.hs" #-}- (accept $(qIs [| even |]) 3)- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1175: "-{-# LINE 1175 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1175 "src/Test/Predicates.hs" #-}- (accept $(qIs [| even |]) 4)- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:1178: "-{-# LINE 1178 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1178 "src/Test/Predicates.hs" #-}- (show $(qIs [| even |]))- [ExpectedLine [LineChunk "\"even\""]]- DocTest.printPrefix "Test.Predicates:1196: "-{-# LINE 1196 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1196 "src/Test/Predicates.hs" #-}- (accept (with abs (gt 5)) (-6))- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:1198: "-{-# LINE 1198 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1198 "src/Test/Predicates.hs" #-}- (accept (with abs (gt 5)) (-5))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1200: "-{-# LINE 1200 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1200 "src/Test/Predicates.hs" #-}- (accept (with reverse (eq "olleh")) "hello")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:1202: "-{-# LINE 1202 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1202 "src/Test/Predicates.hs" #-}- (accept (with reverse (eq "olleh")) "goodbye")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1219: "-{-# LINE 1219 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1219 "src/Test/Predicates.hs" #-}- (accept ($(qWith [| abs |]) (gt 5)) (-6))- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:1221: "-{-# LINE 1221 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1221 "src/Test/Predicates.hs" #-}- (accept ($(qWith [| abs |]) (gt 5)) (-5))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1223: "-{-# LINE 1223 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1223 "src/Test/Predicates.hs" #-}- (accept ($(qWith [| reverse |]) (eq "olleh")) "hello")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:1225: "-{-# LINE 1225 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1225 "src/Test/Predicates.hs" #-}- (accept ($(qWith [| reverse |]) (eq "olleh")) "goodbye")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1228: "-{-# LINE 1228 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1228 "src/Test/Predicates.hs" #-}- (show ($(qWith [| abs |]) (gt 5)))- [ExpectedLine [LineChunk "\"abs: > 5\""]]- DocTest.printPrefix "Test.Predicates:1247: "-{-# LINE 1247 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1247 "src/Test/Predicates.hs" #-}- (accept $(qMatch [p| Just (Left _) |]) Nothing)- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1249: "-{-# LINE 1249 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1249 "src/Test/Predicates.hs" #-}- (accept $(qMatch [p| Just (Left _) |]) (Just (Left 5)))- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:1251: "-{-# LINE 1251 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1251 "src/Test/Predicates.hs" #-}- (accept $(qMatch [p| Just (Left _) |]) (Just (Right 5)))- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1254: "-{-# LINE 1254 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1254 "src/Test/Predicates.hs" #-}- (show $(qMatch [p| Just (Left _) |]))- [ExpectedLine [LineChunk "\"Just (Left _)\""]]- DocTest.printPrefix "Test.Predicates:1276: "-{-# LINE 1276 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1276 "src/Test/Predicates.hs" #-}- (accept (typed @String anything) "foo")- [ExpectedLine [LineChunk "True"]]- DocTest.printPrefix "Test.Predicates:1278: "-{-# LINE 1278 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1278 "src/Test/Predicates.hs" #-}- (accept (typed @String (sizeIs (gt 5))) "foo")- [ExpectedLine [LineChunk "False"]]- DocTest.printPrefix "Test.Predicates:1280: "-{-# LINE 1280 "src/Test/Predicates.hs" #-}- DocTest.example-{-# LINE 1280 "src/Test/Predicates.hs" #-}+{-# LINE 133 "src/Test/Predicates.hs" #-}++{-# OPTIONS_GHC -XLambdaCase #-}+{-# OPTIONS_GHC -XTemplateHaskell #-}+{-# OPTIONS_GHC -XTypeApplications #-}+{-# OPTIONS_GHC -Wno-type-defaults #-}+module DocTests.Test.Predicates where++import Test.Predicates+import Test.DocTest.Base+import qualified Test.DocTest.Driver as DocTest++{-# LINE 138 "src/Test/Predicates.hs" #-}++test :: DocTest.T ()+test = do+ DocTest.printPrefix "Test.Predicates:153: "+{-# LINE 153 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 153 "src/Test/Predicates.hs" #-}+ (eq 1 ==~ 1)+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:155: "+{-# LINE 155 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 155 "src/Test/Predicates.hs" #-}+ (eq 2 ==~ 1)+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:171: "+{-# LINE 171 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 171 "src/Test/Predicates.hs" #-}+ (accept anything "foo")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:173: "+{-# LINE 173 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 173 "src/Test/Predicates.hs" #-}+ (accept anything undefined)+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:186: "+{-# LINE 186 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 186 "src/Test/Predicates.hs" #-}+ (accept (eq "foo") "foo")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:188: "+{-# LINE 188 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 188 "src/Test/Predicates.hs" #-}+ (accept (eq "foo") "bar")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:204: "+{-# LINE 204 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 204 "src/Test/Predicates.hs" #-}+ (accept (neq "foo") "foo")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:206: "+{-# LINE 206 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 206 "src/Test/Predicates.hs" #-}+ (accept (neq "foo") "bar")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:213: "+{-# LINE 213 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 213 "src/Test/Predicates.hs" #-}+ (accept (gt 5) 4)+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:215: "+{-# LINE 215 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 215 "src/Test/Predicates.hs" #-}+ (accept (gt 5) 5)+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:217: "+{-# LINE 217 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 217 "src/Test/Predicates.hs" #-}+ (accept (gt 5) 6)+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:231: "+{-# LINE 231 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 231 "src/Test/Predicates.hs" #-}+ (accept (geq 5) 4)+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:233: "+{-# LINE 233 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 233 "src/Test/Predicates.hs" #-}+ (accept (geq 5) 5)+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:235: "+{-# LINE 235 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 235 "src/Test/Predicates.hs" #-}+ (accept (geq 5) 6)+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:248: "+{-# LINE 248 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 248 "src/Test/Predicates.hs" #-}+ (accept (lt 5) 4)+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:250: "+{-# LINE 250 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 250 "src/Test/Predicates.hs" #-}+ (accept (lt 5) 5)+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:252: "+{-# LINE 252 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 252 "src/Test/Predicates.hs" #-}+ (accept (lt 5) 6)+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:259: "+{-# LINE 259 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 259 "src/Test/Predicates.hs" #-}+ (accept (leq 5) 4)+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:261: "+{-# LINE 261 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 261 "src/Test/Predicates.hs" #-}+ (accept (leq 5) 5)+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:263: "+{-# LINE 263 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 263 "src/Test/Predicates.hs" #-}+ (accept (leq 5) 6)+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:271: "+{-# LINE 271 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 271 "src/Test/Predicates.hs" #-}+ (accept (just (eq "value")) Nothing)+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:273: "+{-# LINE 273 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 273 "src/Test/Predicates.hs" #-}+ (accept (just (eq "value")) (Just "value"))+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:275: "+{-# LINE 275 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 275 "src/Test/Predicates.hs" #-}+ (accept (just (eq "value")) (Just "wrong value"))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:289: "+{-# LINE 289 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 289 "src/Test/Predicates.hs" #-}+ (accept nothing Nothing)+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:292: "+{-# LINE 292 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 292 "src/Test/Predicates.hs" #-}+ (accept nothing (Just "something"))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:306: "+{-# LINE 306 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 306 "src/Test/Predicates.hs" #-}+ (accept (left (eq "value")) (Left "value"))+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:308: "+{-# LINE 308 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 308 "src/Test/Predicates.hs" #-}+ (accept (left (eq "value")) (Right "value"))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:310: "+{-# LINE 310 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 310 "src/Test/Predicates.hs" #-}+ (accept (left (eq "value")) (Left "wrong value"))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:324: "+{-# LINE 324 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 324 "src/Test/Predicates.hs" #-}+ (accept (right (eq "value")) (Right "value"))+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:326: "+{-# LINE 326 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 326 "src/Test/Predicates.hs" #-}+ (accept (right (eq "value")) (Right "wrong value"))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:328: "+{-# LINE 328 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 328 "src/Test/Predicates.hs" #-}+ (accept (right (eq "value")) (Left "value"))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:342: "+{-# LINE 342 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 342 "src/Test/Predicates.hs" #-}+ (accept (zipP (eq "foo") (eq "bar")) ("foo", "bar"))+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:344: "+{-# LINE 344 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 344 "src/Test/Predicates.hs" #-}+ (accept (zipP (eq "foo") (eq "bar")) ("bar", "foo"))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:368: "+{-# LINE 368 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 368 "src/Test/Predicates.hs" #-}+ (accept (zip3P (eq "foo") (eq "bar") (eq "qux")) ("foo", "bar", "qux"))+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:370: "+{-# LINE 370 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 370 "src/Test/Predicates.hs" #-}+ (accept (zip3P (eq "foo") (eq "bar") (eq "qux")) ("qux", "bar", "foo"))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:395: "+{-# LINE 395 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 395 "src/Test/Predicates.hs" #-}+ (accept (zip4P (eq 1) (eq 2) (eq 3) (eq 4)) (1, 2, 3, 4))+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:397: "+{-# LINE 397 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 397 "src/Test/Predicates.hs" #-}+ (accept (zip4P (eq 1) (eq 2) (eq 3) (eq 4)) (4, 3, 2, 1))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:428: "+{-# LINE 428 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 428 "src/Test/Predicates.hs" #-}+ (accept (zip5P (eq 1) (eq 2) (eq 3) (eq 4) (eq 5)) (1, 2, 3, 4, 5))+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:430: "+{-# LINE 430 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 430 "src/Test/Predicates.hs" #-}+ (accept (zip5P (eq 1) (eq 2) (eq 3) (eq 4) (eq 5)) (5, 4, 3, 2, 1))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:462: "+{-# LINE 462 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 462 "src/Test/Predicates.hs" #-}+ (accept (lt "foo" `andP` gt "bar") "eta")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:464: "+{-# LINE 464 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 464 "src/Test/Predicates.hs" #-}+ (accept (lt "foo" `andP` gt "bar") "quz")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:466: "+{-# LINE 466 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 466 "src/Test/Predicates.hs" #-}+ (accept (lt "foo" `andP` gt "bar") "alpha")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:483: "+{-# LINE 483 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 483 "src/Test/Predicates.hs" #-}+ (accept (lt "bar" `orP` gt "foo") "eta")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:485: "+{-# LINE 485 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 485 "src/Test/Predicates.hs" #-}+ (accept (lt "bar" `orP` gt "foo") "quz")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:487: "+{-# LINE 487 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 487 "src/Test/Predicates.hs" #-}+ (accept (lt "bar" `orP` gt "foo") "alpha")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:495: "+{-# LINE 495 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 495 "src/Test/Predicates.hs" #-}+ (accept (notP (eq "negative")) "positive")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:497: "+{-# LINE 497 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 497 "src/Test/Predicates.hs" #-}+ (accept (notP (eq "negative")) "negative")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:517: "+{-# LINE 517 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 517 "src/Test/Predicates.hs" #-}+ (accept (matchesRegex "x{2,5}y?") "xxxy")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:519: "+{-# LINE 519 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 519 "src/Test/Predicates.hs" #-}+ (accept (matchesRegex "x{2,5}y?") "xyy")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:521: "+{-# LINE 521 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 521 "src/Test/Predicates.hs" #-}+ (accept (matchesRegex "x{2,5}y?") "wxxxyz")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:551: "+{-# LINE 551 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 551 "src/Test/Predicates.hs" #-}+ (accept (matchesCaseInsensitiveRegex "x{2,5}y?") "XXXY")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:553: "+{-# LINE 553 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 553 "src/Test/Predicates.hs" #-}+ (accept (matchesCaseInsensitiveRegex "x{2,5}y?") "XYY")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:555: "+{-# LINE 555 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 555 "src/Test/Predicates.hs" #-}+ (accept (matchesCaseInsensitiveRegex "x{2,5}y?") "WXXXYZ")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:591: "+{-# LINE 591 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 591 "src/Test/Predicates.hs" #-}+ (accept (containsRegex "x{2,5}y?") "xxxy")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:593: "+{-# LINE 593 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 593 "src/Test/Predicates.hs" #-}+ (accept (containsRegex "x{2,5}y?") "xyy")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:595: "+{-# LINE 595 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 595 "src/Test/Predicates.hs" #-}+ (accept (containsRegex "x{2,5}y?") "wxxxyz")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:619: "+{-# LINE 619 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 619 "src/Test/Predicates.hs" #-}+ (accept (containsCaseInsensitiveRegex "x{2,5}y?") "XXXY")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:621: "+{-# LINE 621 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 621 "src/Test/Predicates.hs" #-}+ (accept (containsCaseInsensitiveRegex "x{2,5}y?") "XYY")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:623: "+{-# LINE 623 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 623 "src/Test/Predicates.hs" #-}+ (accept (containsCaseInsensitiveRegex "x{2,5}y?") "WXXXYZ")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:651: "+{-# LINE 651 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 651 "src/Test/Predicates.hs" #-}+ (accept (startsWith "fun") "fungible")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:653: "+{-# LINE 653 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 653 "src/Test/Predicates.hs" #-}+ (accept (startsWith "gib") "fungible")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:666: "+{-# LINE 666 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 666 "src/Test/Predicates.hs" #-}+ (accept (endsWith "ow") "crossbow")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:668: "+{-# LINE 668 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 668 "src/Test/Predicates.hs" #-}+ (accept (endsWith "ow") "trebuchet")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:682: "+{-# LINE 682 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 682 "src/Test/Predicates.hs" #-}+ (accept (hasSubstr "i") "team")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:684: "+{-# LINE 684 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 684 "src/Test/Predicates.hs" #-}+ (accept (hasSubstr "i") "partnership")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:698: "+{-# LINE 698 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 698 "src/Test/Predicates.hs" #-}+ (accept (hasSubsequence [1..5]) [1, 2, 3, 4, 5])+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:700: "+{-# LINE 700 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 700 "src/Test/Predicates.hs" #-}+ (accept (hasSubsequence [1..5]) [0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0])+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:702: "+{-# LINE 702 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 702 "src/Test/Predicates.hs" #-}+ (accept (hasSubsequence [1..5]) [2, 3, 5, 7, 11])+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:716: "+{-# LINE 716 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 716 "src/Test/Predicates.hs" #-}+ (accept (caseInsensitive startsWith "foo") "FOOTBALL!")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:718: "+{-# LINE 718 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 718 "src/Test/Predicates.hs" #-}+ (accept (caseInsensitive endsWith "ball") "soccer")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:720: "+{-# LINE 720 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 720 "src/Test/Predicates.hs" #-}+ (accept (caseInsensitive eq "time") "TIME")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:722: "+{-# LINE 722 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 722 "src/Test/Predicates.hs" #-}+ (accept (caseInsensitive gt "NOTHING") "everything")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:744: "+{-# LINE 744 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 744 "src/Test/Predicates.hs" #-}+ (accept isEmpty ([] :: [Int]))+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:746: "+{-# LINE 746 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 746 "src/Test/Predicates.hs" #-}+ (accept isEmpty [1, 2, 3])+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:748: "+{-# LINE 748 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 748 "src/Test/Predicates.hs" #-}+ (accept isEmpty "")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:750: "+{-# LINE 750 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 750 "src/Test/Predicates.hs" #-}+ (accept isEmpty "gas tank")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:763: "+{-# LINE 763 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 763 "src/Test/Predicates.hs" #-}+ (accept nonEmpty ([] :: [Int]))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:765: "+{-# LINE 765 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 765 "src/Test/Predicates.hs" #-}+ (accept nonEmpty [1, 2, 3])+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:767: "+{-# LINE 767 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 767 "src/Test/Predicates.hs" #-}+ (accept nonEmpty "")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:769: "+{-# LINE 769 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 769 "src/Test/Predicates.hs" #-}+ (accept nonEmpty "gas tank")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:777: "+{-# LINE 777 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 777 "src/Test/Predicates.hs" #-}+ (accept (sizeIs (lt 3)) ['a' .. 'f'])+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:779: "+{-# LINE 779 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 779 "src/Test/Predicates.hs" #-}+ (accept (sizeIs (lt 3)) ['a' .. 'b'])+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:800: "+{-# LINE 800 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 800 "src/Test/Predicates.hs" #-}+ (accept (elemsAre [lt 3, lt 4, lt 5]) [2, 3, 4])+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:802: "+{-# LINE 802 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 802 "src/Test/Predicates.hs" #-}+ (accept (elemsAre [lt 3, lt 4, lt 5]) [2, 3, 4, 5])+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:804: "+{-# LINE 804 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 804 "src/Test/Predicates.hs" #-}+ (accept (elemsAre [lt 3, lt 4, lt 5]) [2, 10, 4])+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:836: "+{-# LINE 836 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 836 "src/Test/Predicates.hs" #-}+ (accept (unorderedElemsAre [eq 1, eq 2, eq 3]) [1, 2, 3])+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:838: "+{-# LINE 838 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 838 "src/Test/Predicates.hs" #-}+ (accept (unorderedElemsAre [eq 1, eq 2, eq 3]) [2, 3, 1])+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:840: "+{-# LINE 840 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 840 "src/Test/Predicates.hs" #-}+ (accept (unorderedElemsAre [eq 1, eq 2, eq 3]) [1, 2, 3, 4])+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:842: "+{-# LINE 842 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 842 "src/Test/Predicates.hs" #-}+ (accept (unorderedElemsAre [eq 1, eq 2, eq 3]) [1, 3])+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:889: "+{-# LINE 889 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 889 "src/Test/Predicates.hs" #-}+ (accept (each (gt 5)) [4, 5, 6])+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:891: "+{-# LINE 891 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 891 "src/Test/Predicates.hs" #-}+ (accept (each (gt 5)) [6, 7, 8])+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:893: "+{-# LINE 893 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 893 "src/Test/Predicates.hs" #-}+ (accept (each (gt 5)) [])+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:918: "+{-# LINE 918 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 918 "src/Test/Predicates.hs" #-}+ (accept (contains (gt 5)) [3, 4, 5])+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:920: "+{-# LINE 920 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 920 "src/Test/Predicates.hs" #-}+ (accept (contains (gt 5)) [4, 5, 6])+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:922: "+{-# LINE 922 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 922 "src/Test/Predicates.hs" #-}+ (accept (contains (gt 5)) [])+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:930: "+{-# LINE 930 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 930 "src/Test/Predicates.hs" #-}+ (accept (containsAll [eq "foo", eq "bar"]) ["bar", "foo"])+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:932: "+{-# LINE 932 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 932 "src/Test/Predicates.hs" #-}+ (accept (containsAll [eq "foo", eq "bar"]) ["foo"])+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:934: "+{-# LINE 934 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 934 "src/Test/Predicates.hs" #-}+ (accept (containsAll [eq "foo", eq "bar"]) ["foo", "bar", "qux"])+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:942: "+{-# LINE 942 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 942 "src/Test/Predicates.hs" #-}+ (accept (containsAll [startsWith "f", endsWith "o"]) ["foo"])+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:944: "+{-# LINE 944 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 944 "src/Test/Predicates.hs" #-}+ (accept (contains (startsWith "f") `andP` contains (endsWith "o")) ["foo"])+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:966: "+{-# LINE 966 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 966 "src/Test/Predicates.hs" #-}+ (accept (containsOnly [eq "foo", eq "bar"]) ["foo"])+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:968: "+{-# LINE 968 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 968 "src/Test/Predicates.hs" #-}+ (accept (containsOnly [eq "foo", eq "bar"]) ["foo", "bar"])+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:970: "+{-# LINE 970 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 970 "src/Test/Predicates.hs" #-}+ (accept (containsOnly [eq "foo", eq "bar"]) ["foo", "qux"])+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:977: "+{-# LINE 977 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 977 "src/Test/Predicates.hs" #-}+ (accept (containsOnly [eq "foo", eq "bar"]) ["foo", "foo"])+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:979: "+{-# LINE 979 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 979 "src/Test/Predicates.hs" #-}+ (accept (each (eq "foo" `orP` eq "bar")) ["foo", "foo"])+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1005: "+{-# LINE 1005 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1005 "src/Test/Predicates.hs" #-}+ (accept (keys (each (eq "foo"))) [("foo", 5)])+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1008: "+{-# LINE 1008 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1008 "src/Test/Predicates.hs" #-}+ (accept (keys (each (eq "foo"))) [("foo", 5), ("bar", 6)])+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1024: "+{-# LINE 1024 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1024 "src/Test/Predicates.hs" #-}+ (accept (values (each (eq 5))) [("foo", 5), ("bar", 5)])+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1027: "+{-# LINE 1027 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1027 "src/Test/Predicates.hs" #-}+ (accept (values (each (eq 5))) [("foo", 5), ("bar", 6)])+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1047: "+{-# LINE 1047 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1047 "src/Test/Predicates.hs" #-}+ (accept (eq 1.0) (sum (replicate 100 0.01)))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1054: "+{-# LINE 1054 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1054 "src/Test/Predicates.hs" #-}+ (accept (approxEq 1.0) (sum (replicate 100 0.01)))+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1056: "+{-# LINE 1056 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1056 "src/Test/Predicates.hs" #-}+ (accept (approxEq 1.0) (sum (replicate 100 0.009999)))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1071: "+{-# LINE 1071 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1071 "src/Test/Predicates.hs" #-}+ (accept positive 1)+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1074: "+{-# LINE 1074 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1074 "src/Test/Predicates.hs" #-}+ (accept positive 0)+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1077: "+{-# LINE 1077 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1077 "src/Test/Predicates.hs" #-}+ (accept positive (-1))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1095: "+{-# LINE 1095 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1095 "src/Test/Predicates.hs" #-}+ (accept negative 1)+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1098: "+{-# LINE 1098 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1098 "src/Test/Predicates.hs" #-}+ (accept negative 0)+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1101: "+{-# LINE 1101 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1101 "src/Test/Predicates.hs" #-}+ (accept negative (-1))+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1120: "+{-# LINE 1120 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1120 "src/Test/Predicates.hs" #-}+ (accept nonPositive 1)+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1123: "+{-# LINE 1123 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1123 "src/Test/Predicates.hs" #-}+ (accept nonPositive 0)+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1126: "+{-# LINE 1126 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1126 "src/Test/Predicates.hs" #-}+ (accept nonPositive (-1))+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1134: "+{-# LINE 1134 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1134 "src/Test/Predicates.hs" #-}+ (accept nonNegative 1)+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1137: "+{-# LINE 1137 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1137 "src/Test/Predicates.hs" #-}+ (accept nonNegative 0)+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1140: "+{-# LINE 1140 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1140 "src/Test/Predicates.hs" #-}+ (accept nonNegative (-1))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1147: "+{-# LINE 1147 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1147 "src/Test/Predicates.hs" #-}+ (accept finite 1.0)+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1149: "+{-# LINE 1149 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1149 "src/Test/Predicates.hs" #-}+ (accept finite (0 / 0))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1151: "+{-# LINE 1151 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1151 "src/Test/Predicates.hs" #-}+ (accept finite (1 / 0))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1169: "+{-# LINE 1169 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1169 "src/Test/Predicates.hs" #-}+ (accept infinite 1.0)+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1171: "+{-# LINE 1171 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1171 "src/Test/Predicates.hs" #-}+ (accept infinite (0 / 0))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1173: "+{-# LINE 1173 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1173 "src/Test/Predicates.hs" #-}+ (accept infinite (1 / 0))+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1189: "+{-# LINE 1189 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1189 "src/Test/Predicates.hs" #-}+ (accept nAn 1.0)+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1191: "+{-# LINE 1191 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1191 "src/Test/Predicates.hs" #-}+ (accept nAn (0 / 0))+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1193: "+{-# LINE 1193 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1193 "src/Test/Predicates.hs" #-}+ (accept nAn (1 / 0))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1212: "+{-# LINE 1212 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1212 "src/Test/Predicates.hs" #-}+ (accept (is even) 3)+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1214: "+{-# LINE 1214 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1214 "src/Test/Predicates.hs" #-}+ (accept (is even) 4)+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1231: "+{-# LINE 1231 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1231 "src/Test/Predicates.hs" #-}+ (accept $(qIs [| even |]) 3)+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1233: "+{-# LINE 1233 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1233 "src/Test/Predicates.hs" #-}+ (accept $(qIs [| even |]) 4)+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1236: "+{-# LINE 1236 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1236 "src/Test/Predicates.hs" #-}+ (show $(qIs [| even |]))+ [ExpectedLine [LineChunk "\"even\""]]+ DocTest.printPrefix "Test.Predicates:1256: "+{-# LINE 1256 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1256 "src/Test/Predicates.hs" #-}+ (accept (with abs (gt 5)) (-6))+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1258: "+{-# LINE 1258 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1258 "src/Test/Predicates.hs" #-}+ (accept (with abs (gt 5)) (-5))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1260: "+{-# LINE 1260 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1260 "src/Test/Predicates.hs" #-}+ (accept (with reverse (eq "olleh")) "hello")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1262: "+{-# LINE 1262 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1262 "src/Test/Predicates.hs" #-}+ (accept (with reverse (eq "olleh")) "goodbye")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1288: "+{-# LINE 1288 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1288 "src/Test/Predicates.hs" #-}+ (accept ($(qWith [| abs |]) (gt 5)) (-6))+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1290: "+{-# LINE 1290 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1290 "src/Test/Predicates.hs" #-}+ (accept ($(qWith [| abs |]) (gt 5)) (-5))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1292: "+{-# LINE 1292 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1292 "src/Test/Predicates.hs" #-}+ (accept ($(qWith [| reverse |]) (eq "olleh")) "hello")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1294: "+{-# LINE 1294 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1294 "src/Test/Predicates.hs" #-}+ (accept ($(qWith [| reverse |]) (eq "olleh")) "goodbye")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1297: "+{-# LINE 1297 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1297 "src/Test/Predicates.hs" #-}+ (show ($(qWith [| abs |]) (gt 5)))+ [ExpectedLine [LineChunk "\"abs: > 5\""]]+ DocTest.printPrefix "Test.Predicates:1317: "+{-# LINE 1317 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1317 "src/Test/Predicates.hs" #-}+ (accept (inBranch "Left" (\case {Left x -> Just x; _ -> Nothing}) positive) (Left 1))+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1319: "+{-# LINE 1319 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1319 "src/Test/Predicates.hs" #-}+ (accept (inBranch "Left" (\case {Left x -> Just x; _ -> Nothing}) positive) (Left 0))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1321: "+{-# LINE 1321 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1321 "src/Test/Predicates.hs" #-}+ (accept (inBranch "Left" (\case {Left x -> Just x; _ -> Nothing}) positive) (Right 1))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1399: "+{-# LINE 1399 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1399 "src/Test/Predicates.hs" #-}+ (accept $(qMatch [p| Just (Left _) |]) Nothing)+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1401: "+{-# LINE 1401 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1401 "src/Test/Predicates.hs" #-}+ (accept $(qMatch [p| Just (Left _) |]) (Just (Left 5)))+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1403: "+{-# LINE 1403 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1403 "src/Test/Predicates.hs" #-}+ (accept $(qMatch [p| Just (Left _) |]) (Just (Right 5)))+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1406: "+{-# LINE 1406 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1406 "src/Test/Predicates.hs" #-}+ (show $(qMatch [p| Just (Left _) |]))+ [ExpectedLine [LineChunk "\"Just (Left _)\""]]+ DocTest.printPrefix "Test.Predicates:1428: "+{-# LINE 1428 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1428 "src/Test/Predicates.hs" #-}+ (accept (typed @String anything) "foo")+ [ExpectedLine [LineChunk "True"]]+ DocTest.printPrefix "Test.Predicates:1430: "+{-# LINE 1430 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1430 "src/Test/Predicates.hs" #-}+ (accept (typed @String (sizeIs (gt 5))) "foo")+ [ExpectedLine [LineChunk "False"]]+ DocTest.printPrefix "Test.Predicates:1432: "+{-# LINE 1432 "src/Test/Predicates.hs" #-}+ DocTest.example+{-# LINE 1432 "src/Test/Predicates.hs" #-} (accept (typed @String anything) (42 :: Int)) [ExpectedLine [LineChunk "False"]]
test/DocTests/Test/Predicates/Internal/FlowMatcher.hs view
@@ -1,5 +1,5 @@ -- Do not edit! Automatically created with doctest-extract from src/Test/Predicates/Internal/FlowMatcher.hs-{-# LINE 14 "src/Test/Predicates/Internal/FlowMatcher.hs" #-}+{-# LINE 21 "src/Test/Predicates/Internal/FlowMatcher.hs" #-} {-# OPTIONS_GHC -Wno-type-defaults #-} module DocTests.Test.Predicates.Internal.FlowMatcher where@@ -8,13 +8,13 @@ import Test.DocTest.Base import qualified Test.DocTest.Driver as DocTest -{-# LINE 16 "src/Test/Predicates/Internal/FlowMatcher.hs" #-}+{-# LINE 23 "src/Test/Predicates/Internal/FlowMatcher.hs" #-} test :: DocTest.T () test = do- DocTest.printPrefix "Test.Predicates.Internal.FlowMatcher:23: "-{-# LINE 23 "src/Test/Predicates/Internal/FlowMatcher.hs" #-}+ DocTest.printPrefix "Test.Predicates.Internal.FlowMatcher:30: "+{-# LINE 30 "src/Test/Predicates/Internal/FlowMatcher.hs" #-} DocTest.example-{-# LINE 23 "src/Test/Predicates/Internal/FlowMatcher.hs" #-}+{-# LINE 30 "src/Test/Predicates/Internal/FlowMatcher.hs" #-} (bipartiteMatching (==) [1 .. 5] [6, 5 .. 2]) [ExpectedLine [LineChunk "([(2,2),(3,3),(4,4),(5,5)],[1],[6])"]]
test/Main.hs view
@@ -1,17 +1,30 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeApplications #-} import Data.List (isPrefixOf) import Data.Typeable (Typeable)-import qualified DocTests.All-import qualified Test.DocTest.Driver as DocTest import Test.Hspec import Test.Predicates +#ifdef DOCTESTS++import qualified DocTests.All+import qualified Test.DocTest.Driver as DocTest++#endif++-- Sample ADT to use for testing.+data Foo = Foo0 | Foo1 Int | Foo2 Int Int++$(pure [])+ main :: IO () main = do hspec predicateTests+#ifdef DOCTESTS DocTest.run DocTests.All.main+#endif predicateTests :: SpecWith () predicateTests = do@@ -46,6 +59,17 @@ show (lt "bar" `orP` gt "foo") `shouldBe` "< \"bar\" or > \"foo\"" show (notP (gt "foo")) `shouldBe` "≤ \"foo\""+#ifdef REGEX+ show (matchesRegex "foo" :: Predicate String)+ `shouldBe` "/foo/"+ show (matchesCaseInsensitiveRegex "foo" :: Predicate String)+ `shouldBe` "/foo/i"+ show (containsRegex "foo" :: Predicate String)+ `shouldBe` "contains /foo/"+ show (containsCaseInsensitiveRegex "foo" :: Predicate String)+ `shouldBe` "contains /foo/i"+#endif+#ifdef CONTAINERS show (startsWith "fun") `shouldBe` "starts with \"fun\"" show (endsWith "ing") `shouldBe` "ends with \"ing\"" show (hasSubstr "i") `shouldBe` "has substring \"i\""@@ -55,14 +79,6 @@ `shouldBe` "(case insensitive) starts with \"foo\"" show (caseInsensitive endsWith "foo") `shouldBe` "(case insensitive) ends with \"foo\""- show (matchesRegex "foo" :: Predicate String)- `shouldBe` "/foo/"- show (matchesCaseInsensitiveRegex "foo" :: Predicate String)- `shouldBe` "/foo/i"- show (containsRegex "foo" :: Predicate String)- `shouldBe` "contains /foo/"- show (containsCaseInsensitiveRegex "foo" :: Predicate String)- `shouldBe` "contains /foo/i" show (isEmpty :: Predicate [()]) `shouldBe` "empty" show (nonEmpty :: Predicate [()]) `shouldBe` "non-empty" show (sizeIs (gt 5) :: Predicate [()]) `shouldBe` "size > 5"@@ -90,6 +106,7 @@ show (values (elemsAre [eq "one", eq "two"]) :: Predicate [(Int, String)]) `shouldBe` "values ([\"one\",\"two\"])"+#endif show (approxEq 1.0 :: Predicate Double) `shouldBe` "≈ 1.0" show (finite :: Predicate Double) `shouldBe` "finite" show (infinite :: Predicate Double) `shouldBe` "infinite"@@ -105,6 +122,23 @@ `shouldSatisfy` ("property at " `isPrefixOf`) show ($(qWith [|length|]) (gt 5) :: Predicate String) `shouldBe` "length: > 5"++ it "matches ADTs" $+ example $ do+ accept $(qADT 'Foo0) Foo0 `shouldBe` True+ accept $(qADT 'Foo0) (Foo1 5) `shouldBe` False+ accept $(qADT 'Foo0) (Foo2 5 6) `shouldBe` False++ accept ($(qADT 'Foo1) positive) Foo0 `shouldBe` False+ accept ($(qADT 'Foo1) positive) (Foo1 5) `shouldBe` True+ accept ($(qADT 'Foo1) positive) (Foo1 0) `shouldBe` False+ accept ($(qADT 'Foo1) positive) (Foo2 5 6) `shouldBe` False++ accept ($(qADT 'Foo2) positive positive) Foo0 `shouldBe` False+ accept ($(qADT 'Foo2) positive positive) (Foo1 5) `shouldBe` False+ accept ($(qADT 'Foo2) positive positive) (Foo2 5 6) `shouldBe` True+ accept ($(qADT 'Foo2) positive positive) (Foo2 0 6) `shouldBe` False+ accept ($(qADT 'Foo2) positive positive) (Foo2 5 0) `shouldBe` False it "matches patterns" $ example $ do