packages feed

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 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