QuickCheck-2.1.0.3: Automatic testing of Haskell programs

Test.QuickCheck.Property

Synopsis

Property and Testable types

type Property = Gen Prop Source

class Testable prop whereSource

The class of things which can be tested, i.e. turned into a property.

Methods

property :: prop -> Property Source

Instances

Type Prop

newtype Prop Source

Constructors

Fields

unProp :: Rose (IO Result)

Instances

type Rose

data Rose a Source

Constructors

MkRose a [Rose a]

Instances

join :: Rose (Rose a) -> Rose aSource

protectRose :: Rose (IO Result) -> IO (Rose (IO Result))Source

Result type

data Callback Source

Different kinds of callbacks

Constructors

PostTest (State -> Result -> IO ())

Called just after a test

PostFinalFailure (State -> Result -> IO ())

Called with the final failing test-case

data Result Source

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

Instances

result :: Result Source

failed :: Result -> Result Source

protectResult :: IO Result -> IO Result Source

succeeded :: Result Source

rejected :: Result Source

Lifting and mapping functions

liftBool :: Bool -> Property Source

liftResult :: Result -> Property Source

liftIOResult :: IO Result -> Property Source

liftRoseIOResult :: Rose (IO Result) -> Property Source

mapResult :: Testable prop => (Result -> Result) -> prop -> Property Source

mapIOResult :: Testable prop => (IO Result -> IO Result) -> prop -> Property Source

mapRoseIOResult :: Testable prop => (Rose (IO Result) -> Rose (IO Result)) -> prop -> Property Source

mapProp :: Testable prop => (Prop -> Prop) -> prop -> Property Source

Property combinators

mapSize :: Testable prop => (Int -> Int) -> prop -> Property Source

Changes the maximum test case size for a property.

shrinking Source

Arguments

:: Testable prop
=> (a -> [a])

shrink -like function.

-> a

The original argument

-> (a -> prop)

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.

callback :: Testable prop => Callback -> prop -> Property Source

Adds a callback

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)

classify Source

Arguments

:: Testable prop
=> Bool

True if the test case should be labelled.

-> String

Label.

-> prop

Conditionally labels test case.

cover Source

Arguments

:: Testable prop
=> Bool

True if the test case belongs to the class.

-> Int

The required percentage (0-100) of test cases.

-> String

Label for the test case class.

-> prop

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.

forAllShrink :: (Show a, Testable prop) => Gen a -> (a -> [a]) -> (a -> prop) -> Property Source

Like forAll , but tries to shrink the argument for failing test cases.

(.&.) :: (Testable prop1, Testable prop2) => prop1 -> prop2 -> Property Source

AltStyle によって変換されたページ (->オリジナル) /