| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Hedgehog.Internal.Property
Synopsis
- data Property = Property {
- propertyConfig :: !PropertyConfig
- propertyTest :: PropertyT IO ()
- newtype PropertyT (m :: Type -> Type) a = PropertyT {
- unPropertyT :: TestT (GenT m) a
- newtype PropertyName = PropertyName {}
- data PropertyConfig = PropertyConfig {}
- newtype TestLimit = TestLimit Int
- newtype TestCount = TestCount Int
- newtype DiscardLimit = DiscardLimit Int
- newtype DiscardCount = DiscardCount Int
- newtype ShrinkLimit = ShrinkLimit Int
- newtype ShrinkCount = ShrinkCount Int
- data Skip
- newtype ShrinkPath = ShrinkPath [Int]
- newtype ShrinkRetries = ShrinkRetries Int
- withTests :: TestLimit -> Property -> Property
- withDiscards :: DiscardLimit -> Property -> Property
- withShrinks :: ShrinkLimit -> Property -> Property
- withRetries :: ShrinkRetries -> Property -> Property
- withSkip :: Skip -> Property -> Property
- property :: HasCallStack => PropertyT IO () -> Property
- test :: forall (m :: Type -> Type) a. Monad m => TestT m a -> PropertyT m a
- forAll :: forall (m :: Type -> Type) a. (Monad m, Show a, HasCallStack) => Gen a -> PropertyT m a
- forAllT :: forall (m :: Type -> Type) a. (Monad m, Show a, HasCallStack) => GenT m a -> PropertyT m a
- forAllWith :: forall (m :: Type -> Type) a. (Monad m, HasCallStack) => (a -> String) -> Gen a -> PropertyT m a
- forAllWithT :: forall (m :: Type -> Type) a. (Monad m, HasCallStack) => (a -> String) -> GenT m a -> PropertyT m a
- defaultMinTests :: TestLimit
- discard :: forall (m :: Type -> Type) a. Monad m => PropertyT m a
- skipCompress :: Skip -> String
- shrinkPathCompress :: ShrinkPath -> String
- skipDecompress :: String -> Maybe Skip
- shrinkPathDecompress :: String -> Maybe ShrinkPath
- data Group = Group {
- groupName :: !GroupName
- groupProperties :: ![(PropertyName, Property)]
- newtype GroupName = GroupName {}
- newtype PropertyCount = PropertyCount Int
- class Monad m => MonadTest (m :: Type -> Type) where
- type Test = TestT Identity
- newtype TestT (m :: Type -> Type) a = TestT {}
- data Log
- newtype Journal = Journal {
- journalLogs :: [Log]
- data Failure = Failure (Maybe Span) String (Maybe Diff)
- data Diff = Diff {}
- annotate :: (MonadTest m, HasCallStack) => String -> m ()
- annotateShow :: (MonadTest m, Show a, HasCallStack) => a -> m ()
- footnote :: MonadTest m => String -> m ()
- footnoteShow :: (MonadTest m, Show a) => a -> m ()
- failure :: (MonadTest m, HasCallStack) => m a
- success :: MonadTest m => m ()
- assert :: (MonadTest m, HasCallStack) => Bool -> m ()
- diff :: (MonadTest m, Show a, Show b, HasCallStack) => a -> (a -> b -> Bool) -> b -> m ()
- (===) :: (MonadTest m, Eq a, Show a, HasCallStack) => a -> a -> m ()
- (/==) :: (MonadTest m, Eq a, Show a, HasCallStack) => a -> a -> m ()
- eval :: (MonadTest m, HasCallStack) => a -> m a
- evalNF :: (MonadTest m, NFData a, HasCallStack) => a -> m a
- evalM :: (MonadTest m, MonadCatch m, HasCallStack) => m a -> m a
- evalIO :: (MonadTest m, MonadIO m, HasCallStack) => IO a -> m a
- evalEither :: (MonadTest m, Show x, HasCallStack) => Either x a -> m a
- evalEitherM :: (MonadTest m, Show x, MonadCatch m, HasCallStack) => m (Either x a) -> m a
- evalExceptT :: (MonadTest m, Show x, HasCallStack) => ExceptT x m a -> m a
- evalMaybe :: (MonadTest m, HasCallStack) => Maybe a -> m a
- evalMaybeM :: (MonadTest m, MonadCatch m, HasCallStack) => m (Maybe a) -> m a
- newtype Coverage a = Coverage {
- coverageLabels :: Map LabelName (Label a)
- data Label a = MkLabel {
- labelName :: !LabelName
- labelLocation :: !(Maybe Span)
- labelMinimum :: !CoverPercentage
- labelAnnotation :: !a
- newtype LabelName = LabelName {}
- cover :: (MonadTest m, HasCallStack) => CoverPercentage -> LabelName -> Bool -> m ()
- classify :: (MonadTest m, HasCallStack) => LabelName -> Bool -> m ()
- label :: (MonadTest m, HasCallStack) => LabelName -> m ()
- collect :: (MonadTest m, Show a, HasCallStack) => a -> m ()
- coverPercentage :: TestCount -> CoverCount -> CoverPercentage
- labelCovered :: TestCount -> Label CoverCount -> Bool
- coverageSuccess :: TestCount -> Coverage CoverCount -> Bool
- coverageFailures :: TestCount -> Coverage CoverCount -> [Label CoverCount]
- journalCoverage :: Journal -> Coverage CoverCount
- data Cover
- newtype CoverCount = CoverCount {
- unCoverCount :: Int
- newtype CoverPercentage = CoverPercentage {}
- toCoverCount :: Cover -> CoverCount
- newtype Confidence = Confidence {}
- data TerminationCriteria
- confidenceSuccess :: TestCount -> Confidence -> Coverage CoverCount -> Bool
- confidenceFailure :: TestCount -> Confidence -> Coverage CoverCount -> Bool
- withConfidence :: Confidence -> Property -> Property
- verifiedTermination :: Property -> Property
- defaultConfidence :: Confidence
- defaultConfig :: PropertyConfig
- mapConfig :: (PropertyConfig -> PropertyConfig) -> Property -> Property
- failDiff :: (MonadTest m, Show a, Show b, HasCallStack) => a -> b -> m ()
- failException :: (MonadTest m, HasCallStack) => SomeException -> m a
- failWith :: (MonadTest m, HasCallStack) => Maybe Diff -> String -> m a
- writeLog :: MonadTest m => Log -> m ()
- mkTest :: (Either Failure a, Journal) -> Test a
- mkTestT :: m (Either Failure a, Journal) -> TestT m a
- runTest :: Test a -> (Either Failure a, Journal)
- runTestT :: TestT m a -> m (Either Failure a, Journal)
- wilsonBounds :: Integer -> Integer -> Double -> (Double, Double)
Property
A property test, along with some configurable limits like how many times to run the test.
Constructors
| Property | |
Fields
| |
newtype PropertyT (m :: Type -> Type) a Source #
The property monad transformer allows both the generation of test inputs and the assertion of expectations.
Constructors
| PropertyT | |
Fields
| |
Instances
newtype PropertyName Source #
The name of a property.
Should be constructed using OverloadedStrings:
"apples" :: PropertyName
Constructors
| PropertyName | |
Fields | |
Instances
| Semigroup PropertyName Source # | |
Defined in Hedgehog.Internal.Property Methods (<>) :: PropertyName -> PropertyName -> PropertyName Source # sconcat :: NonEmpty PropertyName -> PropertyName Source # stimes :: Integral b => b -> PropertyName -> PropertyName Source # | |
| IsString PropertyName Source # | |
Defined in Hedgehog.Internal.Property Methods fromString :: String -> PropertyName Source # | |
| Show PropertyName Source # | |
Defined in Hedgehog.Internal.Property | |
| Eq PropertyName Source # | |
Defined in Hedgehog.Internal.Property Methods (==) :: PropertyName -> PropertyName -> Bool Source # (/=) :: PropertyName -> PropertyName -> Bool Source # | |
| Ord PropertyName Source # | |
Defined in Hedgehog.Internal.Property Methods compare :: PropertyName -> PropertyName -> Ordering Source # (<) :: PropertyName -> PropertyName -> Bool Source # (<=) :: PropertyName -> PropertyName -> Bool Source # (>) :: PropertyName -> PropertyName -> Bool Source # (>=) :: PropertyName -> PropertyName -> Bool Source # max :: PropertyName -> PropertyName -> PropertyName Source # min :: PropertyName -> PropertyName -> PropertyName Source # | |
| Lift PropertyName Source # | |
Defined in Hedgehog.Internal.Property Methods lift :: Quote m => PropertyName -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => PropertyName -> Code m PropertyName Source # | |
data PropertyConfig Source #
Configuration for a property test.
Constructors
| PropertyConfig | |
Fields
| |
Instances
| Show PropertyConfig Source # | |
Defined in Hedgehog.Internal.Property | |
| Eq PropertyConfig Source # | |
Defined in Hedgehog.Internal.Property Methods (==) :: PropertyConfig -> PropertyConfig -> Bool Source # (/=) :: PropertyConfig -> PropertyConfig -> Bool Source # | |
| Ord PropertyConfig Source # | |
Defined in Hedgehog.Internal.Property Methods compare :: PropertyConfig -> PropertyConfig -> Ordering Source # (<) :: PropertyConfig -> PropertyConfig -> Bool Source # (<=) :: PropertyConfig -> PropertyConfig -> Bool Source # (>) :: PropertyConfig -> PropertyConfig -> Bool Source # (>=) :: PropertyConfig -> PropertyConfig -> Bool Source # max :: PropertyConfig -> PropertyConfig -> PropertyConfig Source # min :: PropertyConfig -> PropertyConfig -> PropertyConfig Source # | |
| Lift PropertyConfig Source # | |
Defined in Hedgehog.Internal.Property Methods lift :: Quote m => PropertyConfig -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => PropertyConfig -> Code m PropertyConfig Source # | |
The number of successful tests that need to be run before a property test is considered successful.
Can be constructed using numeric literals:
200 :: TestLimit
Instances
| Enum TestLimit Source # | |
Defined in Hedgehog.Internal.Property Methods succ :: TestLimit -> TestLimit Source # pred :: TestLimit -> TestLimit Source # toEnum :: Int -> TestLimit Source # fromEnum :: TestLimit -> Int Source # enumFrom :: TestLimit -> [TestLimit] Source # enumFromThen :: TestLimit -> TestLimit -> [TestLimit] Source # enumFromTo :: TestLimit -> TestLimit -> [TestLimit] Source # enumFromThenTo :: TestLimit -> TestLimit -> TestLimit -> [TestLimit] Source # | |
| Num TestLimit Source # | |
Defined in Hedgehog.Internal.Property Methods (+) :: TestLimit -> TestLimit -> TestLimit Source # (-) :: TestLimit -> TestLimit -> TestLimit Source # (*) :: TestLimit -> TestLimit -> TestLimit Source # negate :: TestLimit -> TestLimit Source # abs :: TestLimit -> TestLimit Source # signum :: TestLimit -> TestLimit Source # fromInteger :: Integer -> TestLimit Source # | |
| Integral TestLimit Source # | |
Defined in Hedgehog.Internal.Property Methods quot :: TestLimit -> TestLimit -> TestLimit Source # rem :: TestLimit -> TestLimit -> TestLimit Source # div :: TestLimit -> TestLimit -> TestLimit Source # mod :: TestLimit -> TestLimit -> TestLimit Source # quotRem :: TestLimit -> TestLimit -> (TestLimit, TestLimit) Source # divMod :: TestLimit -> TestLimit -> (TestLimit, TestLimit) Source # | |
| Real TestLimit Source # | |
Defined in Hedgehog.Internal.Property Methods toRational :: TestLimit -> Rational Source # | |
| Show TestLimit Source # | |
| Eq TestLimit Source # | |
| Ord TestLimit Source # | |
Defined in Hedgehog.Internal.Property | |
| Lift TestLimit Source # | |
The number of tests a property ran successfully.
Instances
| Enum TestCount Source # | |
Defined in Hedgehog.Internal.Property Methods succ :: TestCount -> TestCount Source # pred :: TestCount -> TestCount Source # toEnum :: Int -> TestCount Source # fromEnum :: TestCount -> Int Source # enumFrom :: TestCount -> [TestCount] Source # enumFromThen :: TestCount -> TestCount -> [TestCount] Source # enumFromTo :: TestCount -> TestCount -> [TestCount] Source # enumFromThenTo :: TestCount -> TestCount -> TestCount -> [TestCount] Source # | |
| Num TestCount Source # | |
Defined in Hedgehog.Internal.Property Methods (+) :: TestCount -> TestCount -> TestCount Source # (-) :: TestCount -> TestCount -> TestCount Source # (*) :: TestCount -> TestCount -> TestCount Source # negate :: TestCount -> TestCount Source # abs :: TestCount -> TestCount Source # signum :: TestCount -> TestCount Source # fromInteger :: Integer -> TestCount Source # | |
| Integral TestCount Source # | |
Defined in Hedgehog.Internal.Property Methods quot :: TestCount -> TestCount -> TestCount Source # rem :: TestCount -> TestCount -> TestCount Source # div :: TestCount -> TestCount -> TestCount Source # mod :: TestCount -> TestCount -> TestCount Source # quotRem :: TestCount -> TestCount -> (TestCount, TestCount) Source # divMod :: TestCount -> TestCount -> (TestCount, TestCount) Source # | |
| Real TestCount Source # | |
Defined in Hedgehog.Internal.Property Methods toRational :: TestCount -> Rational Source # | |
| Show TestCount Source # | |
| Eq TestCount Source # | |
| Ord TestCount Source # | |
Defined in Hedgehog.Internal.Property | |
| Lift TestCount Source # | |
newtype DiscardLimit Source #
The number of discards to allow before giving up.
Can be constructed using numeric literals:
10000 :: DiscardLimit
Constructors
| DiscardLimit Int |
Instances
| Enum DiscardLimit Source # | |
Defined in Hedgehog.Internal.Property Methods succ :: DiscardLimit -> DiscardLimit Source # pred :: DiscardLimit -> DiscardLimit Source # toEnum :: Int -> DiscardLimit Source # fromEnum :: DiscardLimit -> Int Source # enumFrom :: DiscardLimit -> [DiscardLimit] Source # enumFromThen :: DiscardLimit -> DiscardLimit -> [DiscardLimit] Source # enumFromTo :: DiscardLimit -> DiscardLimit -> [DiscardLimit] Source # enumFromThenTo :: DiscardLimit -> DiscardLimit -> DiscardLimit -> [DiscardLimit] Source # | |
| Num DiscardLimit Source # | |
Defined in Hedgehog.Internal.Property Methods (+) :: DiscardLimit -> DiscardLimit -> DiscardLimit Source # (-) :: DiscardLimit -> DiscardLimit -> DiscardLimit Source # (*) :: DiscardLimit -> DiscardLimit -> DiscardLimit Source # negate :: DiscardLimit -> DiscardLimit Source # abs :: DiscardLimit -> DiscardLimit Source # signum :: DiscardLimit -> DiscardLimit Source # fromInteger :: Integer -> DiscardLimit Source # | |
| Integral DiscardLimit Source # | |
Defined in Hedgehog.Internal.Property Methods quot :: DiscardLimit -> DiscardLimit -> DiscardLimit Source # rem :: DiscardLimit -> DiscardLimit -> DiscardLimit Source # div :: DiscardLimit -> DiscardLimit -> DiscardLimit Source # mod :: DiscardLimit -> DiscardLimit -> DiscardLimit Source # quotRem :: DiscardLimit -> DiscardLimit -> (DiscardLimit, DiscardLimit) Source # divMod :: DiscardLimit -> DiscardLimit -> (DiscardLimit, DiscardLimit) Source # toInteger :: DiscardLimit -> Integer Source # | |
| Real DiscardLimit Source # | |
Defined in Hedgehog.Internal.Property Methods toRational :: DiscardLimit -> Rational Source # | |
| Show DiscardLimit Source # | |
Defined in Hedgehog.Internal.Property | |
| Eq DiscardLimit Source # | |
Defined in Hedgehog.Internal.Property Methods (==) :: DiscardLimit -> DiscardLimit -> Bool Source # (/=) :: DiscardLimit -> DiscardLimit -> Bool Source # | |
| Ord DiscardLimit Source # | |
Defined in Hedgehog.Internal.Property Methods compare :: DiscardLimit -> DiscardLimit -> Ordering Source # (<) :: DiscardLimit -> DiscardLimit -> Bool Source # (<=) :: DiscardLimit -> DiscardLimit -> Bool Source # (>) :: DiscardLimit -> DiscardLimit -> Bool Source # (>=) :: DiscardLimit -> DiscardLimit -> Bool Source # max :: DiscardLimit -> DiscardLimit -> DiscardLimit Source # min :: DiscardLimit -> DiscardLimit -> DiscardLimit Source # | |
| Lift DiscardLimit Source # | |
Defined in Hedgehog.Internal.Property Methods lift :: Quote m => DiscardLimit -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => DiscardLimit -> Code m DiscardLimit Source # | |
newtype DiscardCount Source #
The number of tests a property had to discard.
Constructors
| DiscardCount Int |
Instances
| Enum DiscardCount Source # | |
Defined in Hedgehog.Internal.Property Methods succ :: DiscardCount -> DiscardCount Source # pred :: DiscardCount -> DiscardCount Source # toEnum :: Int -> DiscardCount Source # fromEnum :: DiscardCount -> Int Source # enumFrom :: DiscardCount -> [DiscardCount] Source # enumFromThen :: DiscardCount -> DiscardCount -> [DiscardCount] Source # enumFromTo :: DiscardCount -> DiscardCount -> [DiscardCount] Source # enumFromThenTo :: DiscardCount -> DiscardCount -> DiscardCount -> [DiscardCount] Source # | |
| Num DiscardCount Source # | |
Defined in Hedgehog.Internal.Property Methods (+) :: DiscardCount -> DiscardCount -> DiscardCount Source # (-) :: DiscardCount -> DiscardCount -> DiscardCount Source # (*) :: DiscardCount -> DiscardCount -> DiscardCount Source # negate :: DiscardCount -> DiscardCount Source # abs :: DiscardCount -> DiscardCount Source # signum :: DiscardCount -> DiscardCount Source # fromInteger :: Integer -> DiscardCount Source # | |
| Integral DiscardCount Source # | |
Defined in Hedgehog.Internal.Property Methods quot :: DiscardCount -> DiscardCount -> DiscardCount Source # rem :: DiscardCount -> DiscardCount -> DiscardCount Source # div :: DiscardCount -> DiscardCount -> DiscardCount Source # mod :: DiscardCount -> DiscardCount -> DiscardCount Source # quotRem :: DiscardCount -> DiscardCount -> (DiscardCount, DiscardCount) Source # divMod :: DiscardCount -> DiscardCount -> (DiscardCount, DiscardCount) Source # toInteger :: DiscardCount -> Integer Source # | |
| Real DiscardCount Source # | |
Defined in Hedgehog.Internal.Property Methods toRational :: DiscardCount -> Rational Source # | |
| Show DiscardCount Source # | |
Defined in Hedgehog.Internal.Property | |
| Eq DiscardCount Source # | |
Defined in Hedgehog.Internal.Property Methods (==) :: DiscardCount -> DiscardCount -> Bool Source # (/=) :: DiscardCount -> DiscardCount -> Bool Source # | |
| Ord DiscardCount Source # | |
Defined in Hedgehog.Internal.Property Methods compare :: DiscardCount -> DiscardCount -> Ordering Source # (<) :: DiscardCount -> DiscardCount -> Bool Source # (<=) :: DiscardCount -> DiscardCount -> Bool Source # (>) :: DiscardCount -> DiscardCount -> Bool Source # (>=) :: DiscardCount -> DiscardCount -> Bool Source # max :: DiscardCount -> DiscardCount -> DiscardCount Source # min :: DiscardCount -> DiscardCount -> DiscardCount Source # | |
| Lift DiscardCount Source # | |
Defined in Hedgehog.Internal.Property Methods lift :: Quote m => DiscardCount -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => DiscardCount -> Code m DiscardCount Source # | |
newtype ShrinkLimit Source #
The number of shrinks to try before giving up on shrinking.
Can be constructed using numeric literals:
1000 :: ShrinkLimit
Constructors
| ShrinkLimit Int |
Instances
| Enum ShrinkLimit Source # | |
Defined in Hedgehog.Internal.Property Methods succ :: ShrinkLimit -> ShrinkLimit Source # pred :: ShrinkLimit -> ShrinkLimit Source # toEnum :: Int -> ShrinkLimit Source # fromEnum :: ShrinkLimit -> Int Source # enumFrom :: ShrinkLimit -> [ShrinkLimit] Source # enumFromThen :: ShrinkLimit -> ShrinkLimit -> [ShrinkLimit] Source # enumFromTo :: ShrinkLimit -> ShrinkLimit -> [ShrinkLimit] Source # enumFromThenTo :: ShrinkLimit -> ShrinkLimit -> ShrinkLimit -> [ShrinkLimit] Source # | |
| Num ShrinkLimit Source # | |
Defined in Hedgehog.Internal.Property Methods (+) :: ShrinkLimit -> ShrinkLimit -> ShrinkLimit Source # (-) :: ShrinkLimit -> ShrinkLimit -> ShrinkLimit Source # (*) :: ShrinkLimit -> ShrinkLimit -> ShrinkLimit Source # negate :: ShrinkLimit -> ShrinkLimit Source # abs :: ShrinkLimit -> ShrinkLimit Source # signum :: ShrinkLimit -> ShrinkLimit Source # fromInteger :: Integer -> ShrinkLimit Source # | |
| Integral ShrinkLimit Source # | |
Defined in Hedgehog.Internal.Property Methods quot :: ShrinkLimit -> ShrinkLimit -> ShrinkLimit Source # rem :: ShrinkLimit -> ShrinkLimit -> ShrinkLimit Source # div :: ShrinkLimit -> ShrinkLimit -> ShrinkLimit Source # mod :: ShrinkLimit -> ShrinkLimit -> ShrinkLimit Source # quotRem :: ShrinkLimit -> ShrinkLimit -> (ShrinkLimit, ShrinkLimit) Source # divMod :: ShrinkLimit -> ShrinkLimit -> (ShrinkLimit, ShrinkLimit) Source # toInteger :: ShrinkLimit -> Integer Source # | |
| Real ShrinkLimit Source # | |
Defined in Hedgehog.Internal.Property Methods toRational :: ShrinkLimit -> Rational Source # | |
| Show ShrinkLimit Source # | |
Defined in Hedgehog.Internal.Property | |
| Eq ShrinkLimit Source # | |
Defined in Hedgehog.Internal.Property Methods (==) :: ShrinkLimit -> ShrinkLimit -> Bool Source # (/=) :: ShrinkLimit -> ShrinkLimit -> Bool Source # | |
| Ord ShrinkLimit Source # | |
Defined in Hedgehog.Internal.Property Methods compare :: ShrinkLimit -> ShrinkLimit -> Ordering Source # (<) :: ShrinkLimit -> ShrinkLimit -> Bool Source # (<=) :: ShrinkLimit -> ShrinkLimit -> Bool Source # (>) :: ShrinkLimit -> ShrinkLimit -> Bool Source # (>=) :: ShrinkLimit -> ShrinkLimit -> Bool Source # max :: ShrinkLimit -> ShrinkLimit -> ShrinkLimit Source # min :: ShrinkLimit -> ShrinkLimit -> ShrinkLimit Source # | |
| Lift ShrinkLimit Source # | |
Defined in Hedgehog.Internal.Property Methods lift :: Quote m => ShrinkLimit -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => ShrinkLimit -> Code m ShrinkLimit Source # | |
newtype ShrinkCount Source #
The numbers of times a property was able to shrink after a failing test.
Constructors
| ShrinkCount Int |
Instances
| Enum ShrinkCount Source # | |
Defined in Hedgehog.Internal.Property Methods succ :: ShrinkCount -> ShrinkCount Source # pred :: ShrinkCount -> ShrinkCount Source # toEnum :: Int -> ShrinkCount Source # fromEnum :: ShrinkCount -> Int Source # enumFrom :: ShrinkCount -> [ShrinkCount] Source # enumFromThen :: ShrinkCount -> ShrinkCount -> [ShrinkCount] Source # enumFromTo :: ShrinkCount -> ShrinkCount -> [ShrinkCount] Source # enumFromThenTo :: ShrinkCount -> ShrinkCount -> ShrinkCount -> [ShrinkCount] Source # | |
| Num ShrinkCount Source # | |
Defined in Hedgehog.Internal.Property Methods (+) :: ShrinkCount -> ShrinkCount -> ShrinkCount Source # (-) :: ShrinkCount -> ShrinkCount -> ShrinkCount Source # (*) :: ShrinkCount -> ShrinkCount -> ShrinkCount Source # negate :: ShrinkCount -> ShrinkCount Source # abs :: ShrinkCount -> ShrinkCount Source # signum :: ShrinkCount -> ShrinkCount Source # fromInteger :: Integer -> ShrinkCount Source # | |
| Integral ShrinkCount Source # | |
Defined in Hedgehog.Internal.Property Methods quot :: ShrinkCount -> ShrinkCount -> ShrinkCount Source # rem :: ShrinkCount -> ShrinkCount -> ShrinkCount Source # div :: ShrinkCount -> ShrinkCount -> ShrinkCount Source # mod :: ShrinkCount -> ShrinkCount -> ShrinkCount Source # quotRem :: ShrinkCount -> ShrinkCount -> (ShrinkCount, ShrinkCount) Source # divMod :: ShrinkCount -> ShrinkCount -> (ShrinkCount, ShrinkCount) Source # toInteger :: ShrinkCount -> Integer Source # | |
| Real ShrinkCount Source # | |
Defined in Hedgehog.Internal.Property Methods toRational :: ShrinkCount -> Rational Source # | |
| Show ShrinkCount Source # | |
Defined in Hedgehog.Internal.Property | |
| Eq ShrinkCount Source # | |
Defined in Hedgehog.Internal.Property Methods (==) :: ShrinkCount -> ShrinkCount -> Bool Source # (/=) :: ShrinkCount -> ShrinkCount -> Bool Source # | |
| Ord ShrinkCount Source # | |
Defined in Hedgehog.Internal.Property Methods compare :: ShrinkCount -> ShrinkCount -> Ordering Source # (<) :: ShrinkCount -> ShrinkCount -> Bool Source # (<=) :: ShrinkCount -> ShrinkCount -> Bool Source # (>) :: ShrinkCount -> ShrinkCount -> Bool Source # (>=) :: ShrinkCount -> ShrinkCount -> Bool Source # max :: ShrinkCount -> ShrinkCount -> ShrinkCount Source # min :: ShrinkCount -> ShrinkCount -> ShrinkCount Source # | |
Where to start running a property's tests.
Constructors
| SkipNothing | Don't skip anything. |
| SkipToTest TestCount DiscardCount | Skip to a specific test number. If it fails, shrink as normal. If it passes, move on to the next test. Coverage checks are disabled. We also need to count discards, since failing "after 7 tests" points at a different generated value than failing "after 7 tests and 5 discards". |
| SkipToShrink TestCount DiscardCount ShrinkPath | Skip to a specific test number and shrink state. If it fails, stop without shrinking further. If it passes, the property will pass without running any more tests. Due to implementation details, all intermediate shrink states - those on the direct path from the original test input to the target state - will be tested too, and their results discarded. |
Instances
| IsString Skip Source # | We use this instance to support usage like withSkip "3:aB" It throws an error if the input is not a valid compressed |
Defined in Hedgehog.Internal.Property Methods fromString :: String -> Skip Source # | |
| Show Skip Source # | |
| Eq Skip Source # | |
| Ord Skip Source # | |
Defined in Hedgehog.Internal.Property | |
| Lift Skip Source # | |
newtype ShrinkPath Source #
The path taken to reach a shrink state.
Constructors
| ShrinkPath [Int] |
Instances
| Show ShrinkPath Source # | |
Defined in Hedgehog.Internal.Property | |
| Eq ShrinkPath Source # | |
Defined in Hedgehog.Internal.Property Methods (==) :: ShrinkPath -> ShrinkPath -> Bool Source # (/=) :: ShrinkPath -> ShrinkPath -> Bool Source # | |
| Ord ShrinkPath Source # | |
Defined in Hedgehog.Internal.Property Methods compare :: ShrinkPath -> ShrinkPath -> Ordering Source # (<) :: ShrinkPath -> ShrinkPath -> Bool Source # (<=) :: ShrinkPath -> ShrinkPath -> Bool Source # (>) :: ShrinkPath -> ShrinkPath -> Bool Source # (>=) :: ShrinkPath -> ShrinkPath -> Bool Source # max :: ShrinkPath -> ShrinkPath -> ShrinkPath Source # min :: ShrinkPath -> ShrinkPath -> ShrinkPath Source # | |
| Lift ShrinkPath Source # | |
Defined in Hedgehog.Internal.Property Methods lift :: Quote m => ShrinkPath -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => ShrinkPath -> Code m ShrinkPath Source # | |
newtype ShrinkRetries Source #
The number of times to re-run a test during shrinking. This is useful if you are testing something which fails non-deterministically and you want to increase the change of getting a good shrink.
If you are doing parallel state machine testing, you should probably set
shrink retries to something like 10. This will mean that during
shrinking, a parallel test case requires 10 successful runs before it is
passes and we try a different shrink.
Can be constructed using numeric literals:
0 :: ShrinkRetries
Constructors
| ShrinkRetries Int |
Instances
| Enum ShrinkRetries Source # | |
Defined in Hedgehog.Internal.Property Methods succ :: ShrinkRetries -> ShrinkRetries Source # pred :: ShrinkRetries -> ShrinkRetries Source # toEnum :: Int -> ShrinkRetries Source # fromEnum :: ShrinkRetries -> Int Source # enumFrom :: ShrinkRetries -> [ShrinkRetries] Source # enumFromThen :: ShrinkRetries -> ShrinkRetries -> [ShrinkRetries] Source # enumFromTo :: ShrinkRetries -> ShrinkRetries -> [ShrinkRetries] Source # enumFromThenTo :: ShrinkRetries -> ShrinkRetries -> ShrinkRetries -> [ShrinkRetries] Source # | |
| Num ShrinkRetries Source # | |
Defined in Hedgehog.Internal.Property Methods (+) :: ShrinkRetries -> ShrinkRetries -> ShrinkRetries Source # (-) :: ShrinkRetries -> ShrinkRetries -> ShrinkRetries Source # (*) :: ShrinkRetries -> ShrinkRetries -> ShrinkRetries Source # negate :: ShrinkRetries -> ShrinkRetries Source # abs :: ShrinkRetries -> ShrinkRetries Source # signum :: ShrinkRetries -> ShrinkRetries Source # fromInteger :: Integer -> ShrinkRetries Source # | |
| Integral ShrinkRetries Source # | |
Defined in Hedgehog.Internal.Property Methods quot :: ShrinkRetries -> ShrinkRetries -> ShrinkRetries Source # rem :: ShrinkRetries -> ShrinkRetries -> ShrinkRetries Source # div :: ShrinkRetries -> ShrinkRetries -> ShrinkRetries Source # mod :: ShrinkRetries -> ShrinkRetries -> ShrinkRetries Source # quotRem :: ShrinkRetries -> ShrinkRetries -> (ShrinkRetries, ShrinkRetries) Source # divMod :: ShrinkRetries -> ShrinkRetries -> (ShrinkRetries, ShrinkRetries) Source # toInteger :: ShrinkRetries -> Integer Source # | |
| Real ShrinkRetries Source # | |
Defined in Hedgehog.Internal.Property Methods toRational :: ShrinkRetries -> Rational Source # | |
| Show ShrinkRetries Source # | |
Defined in Hedgehog.Internal.Property | |
| Eq ShrinkRetries Source # | |
Defined in Hedgehog.Internal.Property Methods (==) :: ShrinkRetries -> ShrinkRetries -> Bool Source # (/=) :: ShrinkRetries -> ShrinkRetries -> Bool Source # | |
| Ord ShrinkRetries Source # | |
Defined in Hedgehog.Internal.Property Methods compare :: ShrinkRetries -> ShrinkRetries -> Ordering Source # (<) :: ShrinkRetries -> ShrinkRetries -> Bool Source # (<=) :: ShrinkRetries -> ShrinkRetries -> Bool Source # (>) :: ShrinkRetries -> ShrinkRetries -> Bool Source # (>=) :: ShrinkRetries -> ShrinkRetries -> Bool Source # max :: ShrinkRetries -> ShrinkRetries -> ShrinkRetries Source # min :: ShrinkRetries -> ShrinkRetries -> ShrinkRetries Source # | |
| Lift ShrinkRetries Source # | |
Defined in Hedgehog.Internal.Property Methods lift :: Quote m => ShrinkRetries -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => ShrinkRetries -> Code m ShrinkRetries Source # | |
withTests :: TestLimit -> Property -> Property Source #
Set the number of times a property should be executed before it is considered successful.
If you have a test that does not involve any generators and thus does not
need to run repeatedly, you can use withTests 1 to define a property that
will only be checked once.
withDiscards :: DiscardLimit -> Property -> Property Source #
Set the number of times a property is allowed to discard before the test runner gives up.
withShrinks :: ShrinkLimit -> Property -> Property Source #
Set the number of times a property is allowed to shrink before the test runner gives up and prints the counterexample.
withRetries :: ShrinkRetries -> Property -> Property Source #
Set the number of times a property will be executed for each shrink before
the test runner gives up and tries a different shrink. See ShrinkRetries
for more information.
withSkip :: Skip -> Property -> Property Source #
Set the target that a property will skip to before it starts to run.
property :: HasCallStack => PropertyT IO () -> Property Source #
Creates a property with the default configuration.
test :: forall (m :: Type -> Type) a. Monad m => TestT m a -> PropertyT m a Source #
Lift a test in to a property.
Because both TestT and PropertyT have MonadTest instances, this
function is not often required. It can however be useful for writing
functions directly in TestT and thus gaining a MonadTransControl
instance at the expense of not being able to generate additional inputs
using forAll.
An example where this is useful is parallel state machine testing, as
executeParallel requires MonadBaseControl IO
in order to be able to spawn threads in MonadTest.
forAll :: forall (m :: Type -> Type) a. (Monad m, Show a, HasCallStack) => Gen a -> PropertyT m a Source #
Generates a random input for the test by running the provided generator.
forAllT :: forall (m :: Type -> Type) a. (Monad m, Show a, HasCallStack) => GenT m a -> PropertyT m a Source #
Generates a random input for the test by running the provided generator.
forAllWith :: forall (m :: Type -> Type) a. (Monad m, HasCallStack) => (a -> String) -> Gen a -> PropertyT m a Source #
forAllWithT :: forall (m :: Type -> Type) a. (Monad m, HasCallStack) => (a -> String) -> GenT m a -> PropertyT m a Source #
defaultMinTests :: TestLimit Source #
The minimum amount of tests to run for a Property
discard :: forall (m :: Type -> Type) a. Monad m => PropertyT m a Source #
Discards the current test entirely.
skipCompress :: Skip -> String Source #
Compress a Skip into a hopefully-short alphanumeric string.
The bit that might be long is the ShrinkPath in SkipToShrink. For that,
we encode the path components in base 26, alternating between uppercase and
lowercase alphabets to distinguish list elements. Additionally when we have
runs of equal components, we use the normal base 10 encoding to indicate
the length.
This gives something which is hopefully quite short, but a human can roughly interpret it by eyeball.
shrinkPathCompress :: ShrinkPath -> String Source #
Compress a ShrinkPath into a hopefully-short alphanumeric string.
We encode the path components in base 26, alternating between uppercase and lowercase alphabets to distinguish list elements. Additionally when we have runs of equal components, we use the normal base 10 encoding to indicate the length.
Group
A named collection of property tests.
Constructors
| Group | |
Fields
| |
The name of a group of properties.
Should be constructed using OverloadedStrings:
"fruit" :: GroupName
Constructors
| GroupName | |
Fields | |
Instances
| Semigroup GroupName Source # | |
| IsString GroupName Source # | |
Defined in Hedgehog.Internal.Property Methods fromString :: String -> GroupName Source # | |
| Show GroupName Source # | |
| Eq GroupName Source # | |
| Ord GroupName Source # | |
Defined in Hedgehog.Internal.Property | |
| Lift GroupName Source # | |
newtype PropertyCount Source #
The number of properties in a group.
Constructors
| PropertyCount Int |
Instances
| Enum PropertyCount Source # | |
Defined in Hedgehog.Internal.Property Methods succ :: PropertyCount -> PropertyCount Source # pred :: PropertyCount -> PropertyCount Source # toEnum :: Int -> PropertyCount Source # fromEnum :: PropertyCount -> Int Source # enumFrom :: PropertyCount -> [PropertyCount] Source # enumFromThen :: PropertyCount -> PropertyCount -> [PropertyCount] Source # enumFromTo :: PropertyCount -> PropertyCount -> [PropertyCount] Source # enumFromThenTo :: PropertyCount -> PropertyCount -> PropertyCount -> [PropertyCount] Source # | |
| Num PropertyCount Source # | |
Defined in Hedgehog.Internal.Property Methods (+) :: PropertyCount -> PropertyCount -> PropertyCount Source # (-) :: PropertyCount -> PropertyCount -> PropertyCount Source # (*) :: PropertyCount -> PropertyCount -> PropertyCount Source # negate :: PropertyCount -> PropertyCount Source # abs :: PropertyCount -> PropertyCount Source # signum :: PropertyCount -> PropertyCount Source # fromInteger :: Integer -> PropertyCount Source # | |
| Integral PropertyCount Source # | |
Defined in Hedgehog.Internal.Property Methods quot :: PropertyCount -> PropertyCount -> PropertyCount Source # rem :: PropertyCount -> PropertyCount -> PropertyCount Source # div :: PropertyCount -> PropertyCount -> PropertyCount Source # mod :: PropertyCount -> PropertyCount -> PropertyCount Source # quotRem :: PropertyCount -> PropertyCount -> (PropertyCount, PropertyCount) Source # divMod :: PropertyCount -> PropertyCount -> (PropertyCount, PropertyCount) Source # toInteger :: PropertyCount -> Integer Source # | |
| Real PropertyCount Source # | |
Defined in Hedgehog.Internal.Property Methods toRational :: PropertyCount -> Rational Source # | |
| Show PropertyCount Source # | |
Defined in Hedgehog.Internal.Property | |
| Eq PropertyCount Source # | |
Defined in Hedgehog.Internal.Property Methods (==) :: PropertyCount -> PropertyCount -> Bool Source # (/=) :: PropertyCount -> PropertyCount -> Bool Source # | |
| Ord PropertyCount Source # | |
Defined in Hedgehog.Internal.Property Methods compare :: PropertyCount -> PropertyCount -> Ordering Source # (<) :: PropertyCount -> PropertyCount -> Bool Source # (<=) :: PropertyCount -> PropertyCount -> Bool Source # (>) :: PropertyCount -> PropertyCount -> Bool Source # (>=) :: PropertyCount -> PropertyCount -> Bool Source # max :: PropertyCount -> PropertyCount -> PropertyCount Source # min :: PropertyCount -> PropertyCount -> PropertyCount Source # | |
TestT
class Monad m => MonadTest (m :: Type -> Type) where Source #
Instances
| Monad m => MonadTest (PropertyT m) Source # | |
| Monad m => MonadTest (TestT m) Source # | |
| MonadTest m => MonadTest (ResourceT m) Source # | |
| MonadTest m => MonadTest (MaybeT m) Source # | |
| MonadTest m => MonadTest (ExceptT x m) Source # | |
| MonadTest m => MonadTest (IdentityT m) Source # | |
| MonadTest m => MonadTest (ReaderT r m) Source # | |
| MonadTest m => MonadTest (StateT s m) Source # | |
| MonadTest m => MonadTest (StateT s m) Source # | |
| (MonadTest m, Monoid w) => MonadTest (WriterT w m) Source # | |
| (MonadTest m, Monoid w) => MonadTest (WriterT w m) Source # | |
| MonadTest m => MonadTest (ContT r m) Source # | |
| (MonadTest m, Monoid w) => MonadTest (RWST r w s m) Source # | |
| (MonadTest m, Monoid w) => MonadTest (RWST r w s m) Source # | |
newtype TestT (m :: Type -> Type) a Source #
A test monad transformer allows the assertion of expectations.
Instances
| MonadTransDistributive TestT Source # | |||||
Defined in Hedgehog.Internal.Property Associated Types
Methods distributeT :: forall f (m :: Type -> Type) a. Transformer f TestT m => TestT (f m) a -> f (TestT m) a Source # | |||||
| MonadTransControl TestT Source # | |||||
| MonadTrans TestT Source # | |||||
| MFunctor TestT Source # | |||||
| MonadBaseControl b m => MonadBaseControl b (TestT m) Source # | |||||
| MonadError e m => MonadError e (TestT m) Source # | |||||
Defined in Hedgehog.Internal.Property Methods throwError :: e -> TestT m a Source # catchError :: TestT m a -> (e -> TestT m a) -> TestT m a Source # | |||||
| MonadReader r m => MonadReader r (TestT m) Source # | |||||
| MonadState s m => MonadState s (TestT m) Source # | |||||
| MonadBase b m => MonadBase b (TestT m) Source # | |||||
Defined in Hedgehog.Internal.Property | |||||
| MonadIO m => MonadIO (TestT m) Source # | |||||
| MonadCatch m => MonadCatch (TestT m) Source # | |||||
Defined in Hedgehog.Internal.Property | |||||
| MonadThrow m => MonadThrow (TestT m) Source # | |||||
Defined in Hedgehog.Internal.Property | |||||
| Monad m => Applicative (TestT m) Source # | |||||
Defined in Hedgehog.Internal.Property | |||||
| Functor m => Functor (TestT m) Source # | |||||
| Monad m => Monad (TestT m) Source # | |||||
| Monad m => MonadFail (TestT m) Source # | |||||
| Monad m => MonadTest (TestT m) Source # | |||||
| PrimMonad m => PrimMonad (TestT m) Source # | |||||
| MonadResource m => MonadResource (TestT m) Source # | |||||
Defined in Hedgehog.Internal.Property | |||||
| type StT TestT a Source # | |||||
| type Transformer t TestT m Source # | |||||
Defined in Hedgehog.Internal.Property type Transformer t TestT m = (Transformer t (WriterT Journal) m, Transformer t (ExceptT Failure) (WriterT Journal m)) | |||||
| type PrimState (TestT m) Source # | |||||
Defined in Hedgehog.Internal.Property | |||||
| type StM (TestT m) a Source # | |||||
Defined in Hedgehog.Internal.Property | |||||
A record containing the details of a test run.
Constructors
| Journal | |
Fields
| |
The difference between some expected and actual value.
Constructors
| Diff | |
Fields
| |
annotate :: (MonadTest m, HasCallStack) => String -> m () Source #
Annotates the source code with a message that might be useful for debugging a test failure.
annotateShow :: (MonadTest m, Show a, HasCallStack) => a -> m () Source #
Annotates the source code with a value that might be useful for debugging a test failure.
footnote :: MonadTest m => String -> m () Source #
Logs a message to be displayed as additional information in the footer of the failure report.
footnoteShow :: (MonadTest m, Show a) => a -> m () Source #
Logs a value to be displayed as additional information in the footer of the failure report.
failure :: (MonadTest m, HasCallStack) => m a Source #
Causes a test to fail.
assert :: (MonadTest m, HasCallStack) => Bool -> m () Source #
Fails the test if the condition provided is False.
diff :: (MonadTest m, Show a, Show b, HasCallStack) => a -> (a -> b -> Bool) -> b -> m () Source #
Fails the test and shows a git-like diff if the comparison operation
evaluates to False when applied to its arguments.
The comparison function is the second argument, which may be counter-intuitive to Haskell programmers. However, it allows operators to be written infix for easy reading:
diff y (<) 87
diff x (<=) r
This function behaves like the unix diff tool, which gives a 0 exit
code if the compared files are identical, or a 1 exit code code
otherwise. Like unix diff, if the arguments fail the comparison, a
/diff is shown.
(===) :: (MonadTest m, Eq a, Show a, HasCallStack) => a -> a -> m () infix 4 Source #
Fails the test if the two arguments provided are not equal.
(/==) :: (MonadTest m, Eq a, Show a, HasCallStack) => a -> a -> m () infix 4 Source #
Fails the test if the two arguments provided are equal.
eval :: (MonadTest m, HasCallStack) => a -> m a Source #
Fails the test if the value throws an exception when evaluated to weak head normal form (WHNF).
evalNF :: (MonadTest m, NFData a, HasCallStack) => a -> m a Source #
Fails the test if the value throws an exception when evaluated to normal form (NF).
evalM :: (MonadTest m, MonadCatch m, HasCallStack) => m a -> m a Source #
Fails the test if the action throws an exception.
The benefit of using this over simply letting the exception bubble up is
that the location of the closest evalM will be shown in the output.
evalEither :: (MonadTest m, Show x, HasCallStack) => Either x a -> m a Source #
evalEitherM :: (MonadTest m, Show x, MonadCatch m, HasCallStack) => m (Either x a) -> m a Source #
evalExceptT :: (MonadTest m, Show x, HasCallStack) => ExceptT x m a -> m a Source #
evalMaybeM :: (MonadTest m, MonadCatch m, HasCallStack) => m (Maybe a) -> m a Source #
Coverage
The extent to which all classifiers cover a test.
When a given classification's coverage does not exceed the required minimum, the test will be failed.
Constructors
| Coverage | |
Fields
| |
Instances
| Functor Coverage Source # | |
| Foldable Coverage Source # | |
Defined in Hedgehog.Internal.Property Methods fold :: Monoid m => Coverage m -> m Source # foldMap :: Monoid m => (a -> m) -> Coverage a -> m Source # foldMap' :: Monoid m => (a -> m) -> Coverage a -> m Source # foldr :: (a -> b -> b) -> b -> Coverage a -> b Source # foldr' :: (a -> b -> b) -> b -> Coverage a -> b Source # foldl :: (b -> a -> b) -> b -> Coverage a -> b Source # foldl' :: (b -> a -> b) -> b -> Coverage a -> b Source # foldr1 :: (a -> a -> a) -> Coverage a -> a Source # foldl1 :: (a -> a -> a) -> Coverage a -> a Source # toList :: Coverage a -> [a] Source # null :: Coverage a -> Bool Source # length :: Coverage a -> Int Source # elem :: Eq a => a -> Coverage a -> Bool Source # maximum :: Ord a => Coverage a -> a Source # minimum :: Ord a => Coverage a -> a Source # | |
| Traversable Coverage Source # | |
Defined in Hedgehog.Internal.Property | |
| (Semigroup a, Monoid a) => Monoid (Coverage a) Source # | |
| Semigroup a => Semigroup (Coverage a) Source # | |
| Show a => Show (Coverage a) Source # | |
| Eq a => Eq (Coverage a) Source # | |
The extent to which a test is covered by a classifier.
When a classifier's coverage does not exceed the required minimum, the test will be failed.
Constructors
| MkLabel | |
Fields
| |
Instances
| Functor Label Source # | |
| Foldable Label Source # | |
Defined in Hedgehog.Internal.Property Methods fold :: Monoid m => Label m -> m Source # foldMap :: Monoid m => (a -> m) -> Label a -> m Source # foldMap' :: Monoid m => (a -> m) -> Label a -> m Source # foldr :: (a -> b -> b) -> b -> Label a -> b Source # foldr' :: (a -> b -> b) -> b -> Label a -> b Source # foldl :: (b -> a -> b) -> b -> Label a -> b Source # foldl' :: (b -> a -> b) -> b -> Label a -> b Source # foldr1 :: (a -> a -> a) -> Label a -> a Source # foldl1 :: (a -> a -> a) -> Label a -> a Source # toList :: Label a -> [a] Source # null :: Label a -> Bool Source # length :: Label a -> Int Source # elem :: Eq a => a -> Label a -> Bool Source # maximum :: Ord a => Label a -> a Source # minimum :: Ord a => Label a -> a Source # | |
| Traversable Label Source # | |
Defined in Hedgehog.Internal.Property | |
| Semigroup a => Semigroup (Label a) Source # | This semigroup is right biased. The name, location and percentage from the
rightmost |
| Show a => Show (Label a) Source # | |
| Eq a => Eq (Label a) Source # | |
The name of a classifier.
Should be constructed using OverloadedStrings:
"apples" :: LabelName
Constructors
| LabelName | |
Fields | |
Instances
| Monoid LabelName Source # | |
| Semigroup LabelName Source # | |
| IsString LabelName Source # | |
Defined in Hedgehog.Internal.Property Methods fromString :: String -> LabelName Source # | |
| Show LabelName Source # | |
| Eq LabelName Source # | |
| Ord LabelName Source # | |
Defined in Hedgehog.Internal.Property | |
cover :: (MonadTest m, HasCallStack) => CoverPercentage -> LabelName -> Bool -> m () Source #
Require a certain percentage of the tests to be covered by the classifier.
prop_with_coverage :: Property
prop_with_coverage =
property $ do
match <- forAll Gen.bool
cover 30 "True" $ match
cover 30 "False" $ not match
The example above requires a minimum of 30% coverage for both classifiers. If these requirements are not met, it will fail the test.
classify :: (MonadTest m, HasCallStack) => LabelName -> Bool -> m () Source #
Records the proportion of tests which satisfy a given condition.
prop_with_classifier :: Property
prop_with_classifier =
property $ do
xs <- forAll $ Gen.list (Range.linear 0 100) Gen.alpha
for_ xs $ \x -> do
classify "newborns" $ x == 0
classify "children" $ x > 0 && x < 13
classify "teens" $ x > 12 && x < 20
label :: (MonadTest m, HasCallStack) => LabelName -> m () Source #
Add a label for each test run. It produces a table showing the percentage of test runs that produced each label.
coverPercentage :: TestCount -> CoverCount -> CoverPercentage Source #
labelCovered :: TestCount -> Label CoverCount -> Bool Source #
coverageSuccess :: TestCount -> Coverage CoverCount -> Bool Source #
All labels are covered
coverageFailures :: TestCount -> Coverage CoverCount -> [Label CoverCount] Source #
Whether a test is covered by a classifier, and therefore belongs to a
Class.
newtype CoverCount Source #
The total number of tests which are covered by a classifier.
Can be constructed using numeric literals:
30 :: CoverCount
Constructors
| CoverCount | |
Fields
| |
Instances
| Monoid CoverCount Source # | |
Defined in Hedgehog.Internal.Property Methods mempty :: CoverCount Source # mappend :: CoverCount -> CoverCount -> CoverCount Source # mconcat :: [CoverCount] -> CoverCount Source # | |
| Semigroup CoverCount Source # | |
Defined in Hedgehog.Internal.Property Methods (<>) :: CoverCount -> CoverCount -> CoverCount Source # sconcat :: NonEmpty CoverCount -> CoverCount Source # stimes :: Integral b => b -> CoverCount -> CoverCount Source # | |
| Num CoverCount Source # | |
Defined in Hedgehog.Internal.Property Methods (+) :: CoverCount -> CoverCount -> CoverCount Source # (-) :: CoverCount -> CoverCount -> CoverCount Source # (*) :: CoverCount -> CoverCount -> CoverCount Source # negate :: CoverCount -> CoverCount Source # abs :: CoverCount -> CoverCount Source # signum :: CoverCount -> CoverCount Source # fromInteger :: Integer -> CoverCount Source # | |
| Show CoverCount Source # | |
Defined in Hedgehog.Internal.Property | |
| Eq CoverCount Source # | |
Defined in Hedgehog.Internal.Property Methods (==) :: CoverCount -> CoverCount -> Bool Source # (/=) :: CoverCount -> CoverCount -> Bool Source # | |
| Ord CoverCount Source # | |
Defined in Hedgehog.Internal.Property Methods compare :: CoverCount -> CoverCount -> Ordering Source # (<) :: CoverCount -> CoverCount -> Bool Source # (<=) :: CoverCount -> CoverCount -> Bool Source # (>) :: CoverCount -> CoverCount -> Bool Source # (>=) :: CoverCount -> CoverCount -> Bool Source # max :: CoverCount -> CoverCount -> CoverCount Source # min :: CoverCount -> CoverCount -> CoverCount Source # | |
newtype CoverPercentage Source #
The relative number of tests which are covered by a classifier.
Can be constructed using numeric literals:
30 :: CoverPercentage
Constructors
| CoverPercentage | |
Fields | |
Instances
| Num CoverPercentage Source # | |
Defined in Hedgehog.Internal.Property Methods (+) :: CoverPercentage -> CoverPercentage -> CoverPercentage Source # (-) :: CoverPercentage -> CoverPercentage -> CoverPercentage Source # (*) :: CoverPercentage -> CoverPercentage -> CoverPercentage Source # negate :: CoverPercentage -> CoverPercentage Source # abs :: CoverPercentage -> CoverPercentage Source # signum :: CoverPercentage -> CoverPercentage Source # fromInteger :: Integer -> CoverPercentage Source # | |
| Fractional CoverPercentage Source # | |
Defined in Hedgehog.Internal.Property Methods (/) :: CoverPercentage -> CoverPercentage -> CoverPercentage Source # | |
| Show CoverPercentage Source # | |
Defined in Hedgehog.Internal.Property | |
| Eq CoverPercentage Source # | |
Defined in Hedgehog.Internal.Property Methods (==) :: CoverPercentage -> CoverPercentage -> Bool Source # (/=) :: CoverPercentage -> CoverPercentage -> Bool Source # | |
| Ord CoverPercentage Source # | |
Defined in Hedgehog.Internal.Property Methods compare :: CoverPercentage -> CoverPercentage -> Ordering Source # (<) :: CoverPercentage -> CoverPercentage -> Bool Source # (<=) :: CoverPercentage -> CoverPercentage -> Bool Source # (>) :: CoverPercentage -> CoverPercentage -> Bool Source # (>=) :: CoverPercentage -> CoverPercentage -> Bool Source # max :: CoverPercentage -> CoverPercentage -> CoverPercentage Source # min :: CoverPercentage -> CoverPercentage -> CoverPercentage Source # | |
toCoverCount :: Cover -> CoverCount Source #
Confidence
newtype Confidence Source #
The acceptable occurrence of false positives
Example, Confidence 10^9 would mean that you'd accept a false positive
for 1 in 10^9 tests.
Constructors
| Confidence | |
Fields | |
Instances
| Num Confidence Source # | |
Defined in Hedgehog.Internal.Property Methods (+) :: Confidence -> Confidence -> Confidence Source # (-) :: Confidence -> Confidence -> Confidence Source # (*) :: Confidence -> Confidence -> Confidence Source # negate :: Confidence -> Confidence Source # abs :: Confidence -> Confidence Source # signum :: Confidence -> Confidence Source # fromInteger :: Integer -> Confidence Source # | |
| Show Confidence Source # | |
Defined in Hedgehog.Internal.Property | |
| Eq Confidence Source # | |
Defined in Hedgehog.Internal.Property Methods (==) :: Confidence -> Confidence -> Bool Source # (/=) :: Confidence -> Confidence -> Bool Source # | |
| Ord Confidence Source # | |
Defined in Hedgehog.Internal.Property Methods compare :: Confidence -> Confidence -> Ordering Source # (<) :: Confidence -> Confidence -> Bool Source # (<=) :: Confidence -> Confidence -> Bool Source # (>) :: Confidence -> Confidence -> Bool Source # (>=) :: Confidence -> Confidence -> Bool Source # max :: Confidence -> Confidence -> Confidence Source # min :: Confidence -> Confidence -> Confidence Source # | |
| Lift Confidence Source # | |
Defined in Hedgehog.Internal.Property Methods lift :: Quote m => Confidence -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Confidence -> Code m Confidence Source # | |
data TerminationCriteria Source #
Constructors
| EarlyTermination Confidence TestLimit | |
| NoEarlyTermination Confidence TestLimit | |
| NoConfidenceTermination TestLimit |
Instances
| Show TerminationCriteria Source # | |
Defined in Hedgehog.Internal.Property | |
| Eq TerminationCriteria Source # | |
Defined in Hedgehog.Internal.Property Methods (==) :: TerminationCriteria -> TerminationCriteria -> Bool Source # (/=) :: TerminationCriteria -> TerminationCriteria -> Bool Source # | |
| Ord TerminationCriteria Source # | |
Defined in Hedgehog.Internal.Property Methods compare :: TerminationCriteria -> TerminationCriteria -> Ordering Source # (<) :: TerminationCriteria -> TerminationCriteria -> Bool Source # (<=) :: TerminationCriteria -> TerminationCriteria -> Bool Source # (>) :: TerminationCriteria -> TerminationCriteria -> Bool Source # (>=) :: TerminationCriteria -> TerminationCriteria -> Bool Source # max :: TerminationCriteria -> TerminationCriteria -> TerminationCriteria Source # min :: TerminationCriteria -> TerminationCriteria -> TerminationCriteria Source # | |
| Lift TerminationCriteria Source # | |
Defined in Hedgehog.Internal.Property Methods lift :: Quote m => TerminationCriteria -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => TerminationCriteria -> Code m TerminationCriteria Source # | |
confidenceSuccess :: TestCount -> Confidence -> Coverage CoverCount -> Bool Source #
Is true when the test coverage satisfies the specified Confidence
contstraint for all 'Coverage CoverCount's
confidenceFailure :: TestCount -> Confidence -> Coverage CoverCount -> Bool Source #
Is true when there exists a label that is sure to have failed according to
the Confidence constraint
withConfidence :: Confidence -> Property -> Property Source #
Make sure that the result is statistically significant in accordance to
the passed Confidence
defaultConfidence :: Confidence Source #
The default confidence allows one false positive in 10^9 tests
Internal
These functions are exported in case you need them in a pinch, but are not part of the public API and may change at any time, even as part of a minor update.
defaultConfig :: PropertyConfig Source #
The default configuration for a property test.
mapConfig :: (PropertyConfig -> PropertyConfig) -> Property -> Property Source #
Map a config modification function over a property.
failDiff :: (MonadTest m, Show a, Show b, HasCallStack) => a -> b -> m () Source #
Fails with an error that shows the difference between two values.
failException :: (MonadTest m, HasCallStack) => SomeException -> m a Source #
Fails with an error which renders the type of an exception and its error message.
failWith :: (MonadTest m, HasCallStack) => Maybe Diff -> String -> m a Source #
Fail the test with an error message, useful for building other failure combinators.