Test.QuickCheck.Property
Contents
Synopsis
- type Property = Gen Prop
- class Testable prop where
- newtype Prop = MkProp {}
- data Rose a = MkRose a [Rose a]
- join :: Rose (Rose a) -> Rose a
- protectRose :: Rose (IO Result) -> IO (Rose (IO Result))
- data Callback
- data Result = MkResult {}
- result :: Result
- failed :: Result -> Result
- protectResult :: IO Result -> IO Result
- succeeded :: Result
- rejected :: Result
- liftBool :: Bool -> Property
- liftResult :: Result -> Property
- liftIOResult :: IO Result -> Property
- liftRoseIOResult :: Rose (IO Result) -> Property
- mapResult :: Testable prop => (Result -> Result) -> prop -> Property
- mapIOResult :: Testable prop => (IO Result -> IO Result) -> prop -> Property
- mapRoseIOResult :: Testable prop => (Rose (IO Result) -> Rose (IO Result)) -> prop -> Property
- mapProp :: Testable prop => (Prop -> Prop) -> prop -> Property
- mapSize :: Testable prop => (Int -> Int) -> prop -> Property
- shrinking :: Testable prop => (a -> [a]) -> a -> (a -> prop) -> Property
- noShrinking :: Testable prop => prop -> Property
- callback :: Testable prop => Callback -> prop -> Property
- whenFail :: Testable prop => IO () -> prop -> Property
- whenFail' :: Testable prop => IO () -> prop -> Property
- expectFailure :: Testable prop => prop -> Property
- label :: Testable prop => String -> prop -> Property
- collect :: (Show a, Testable prop) => a -> prop -> Property
- classify :: Testable prop => Bool -> String -> prop -> Property
- cover :: Testable prop => Bool -> Int -> String -> prop -> Property
- (==>) :: Testable prop => Bool -> prop -> Property
- within :: Testable prop => Int -> prop -> Property
- forAll :: (Show a, Testable prop) => Gen a -> (a -> prop) -> Property
- forAllShrink :: (Show a, Testable prop) => Gen a -> (a -> [a]) -> (a -> prop) -> Property
- (.&.) :: (Testable prop1, Testable prop2) => prop1 -> prop2 -> Property
Property and Testable types
class Testable prop whereSource
The class of things which can be tested, i.e. turned into a property.
Type Prop
type Rose
Result type
Different kinds of callbacks
The result of a single test.
Constructors
Fields
- ok :: Maybe Bool
result of the test case; Nothing = discard
- expect :: Bool
indicates what the expected result of the property is
- reason :: String
a message indicating what went wrong
- interrupted :: Bool
indicates if the test case was cancelled by pressing ^C
- stamp :: [(String, Int)]
the collected values for this test case
- callbacks :: [Callback]
the callbacks for this test case
Lifting and mapping functions
liftResult :: Result -> Property Source
liftIOResult :: IO Result -> Property Source
mapRoseIOResult :: Testable prop => (Rose (IO Result) -> Rose (IO Result)) -> prop -> Property Source
Property combinators
mapSize :: Testable prop => (Int -> Int) -> prop -> Property Source
Changes the maximum test case size for a property.
Arguments
shrink -like function.
The original argument
Shrinks the argument to property if it fails. Shrinking is done automatically for most types. This is only needed weh you want to override the default behavior.
noShrinking :: Testable prop => prop -> Property Source
Disables shrinking for a property altogether.
whenFail :: Testable prop => IO () -> prop -> Property Source
Performs an IO action after the last failure of a property.
whenFail' :: Testable prop => IO () -> prop -> Property Source
Performs an IO action every time a property fails. Thus,
if shrinking is done, this can be used to keep track of the
failures along the way.
expectFailure :: Testable prop => prop -> Property Source
Modifies a property so that it is expected to fail for some test cases.
label :: Testable prop => String -> prop -> Property Source
Attaches a label to a property. This is used for reporting test case distribution.
collect :: (Show a, Testable prop) => a -> prop -> Property Source
Labels a property with a value:
collect x = label (show x)
Arguments
True if the test case should be labelled.
Label.
Conditionally labels test case.
Arguments
True if the test case belongs to the class.
The required percentage (0-100) of test cases.
Label for the test case class.
Checks that at least the given proportion of the test cases belong to the given class.
(==>) :: Testable prop => Bool -> prop -> Property Source
Implication for properties: The resulting property holds if
the first argument is False , or if the given property holds.
within :: Testable prop => Int -> prop -> Property Source
Considers a property failed if it does not complete within the given number of microseconds.
forAll :: (Show a, Testable prop) => Gen a -> (a -> prop) -> Property Source
Explicit universal quantification: uses an explicitly given test case generator.