QuickCheck-2.4.1.1: Automatic testing of Haskell programs

Test.QuickCheck.Modifiers

Contents

Description

Modifiers for test data.

These types do things such as restricting the kind of test data that can be generated. They can be pattern-matched on in properties as a stylistic alternative to using explicit quantification.

Examples:

 -- Functions cannot be shown (but see Test.QuickCheck.Function)
 prop_TakeDropWhile (Blind p) (xs :: [A]) =
   takeWhile p xs ++ dropWhile p xs == xs
 prop_TakeDrop (NonNegative n) (xs :: [A]) =
   take n xs ++ drop n xs == xs
 -- cycle does not work for empty lists
 prop_Cycle (NonNegative n) (NonEmpty (xs :: [A])) =
   take n (cycle xs) == take n (xs ++ cycle xs)
 -- Instead of forAll orderedList
 prop_Sort (Ordered (xs :: [OrdA])) =
   sort xs == xs

Synopsis

Type-level modifiers for changing generator behavior

newtype Blind a Source

Blind x: as x, but x does not have to be in the Show class.

Constructors

Blind a 

newtype Fixed a Source

Fixed x: as x, but will not be shrunk.

Constructors

Fixed a 

newtype OrderedList a Source

Ordered xs: guarantees that xs is ordered.

Constructors

Ordered [a] 

newtype NonEmptyList a Source

NonEmpty xs: guarantees that xs is non-empty.

Constructors

NonEmpty [a] 

newtype Positive a Source

Positive x: guarantees that x > 0.

Constructors

Positive a 

newtype NonZero a Source

NonZero x: guarantees that x /= 0.

Constructors

NonZero a 

newtype NonNegative a Source

NonNegative x: guarantees that x >= 0.

Constructors

NonNegative a 

data Smart a Source

Smart _ x: tries a different order when shrinking.

Constructors

Smart Int a 

newtype Shrink2 a Source

Shrink2 x: allows 2 shrinking steps at the same time when shrinking x

Constructors

Shrink2 a 

data Shrinking s a Source

Shrinking _ x: allows for maintaining a state during shrinking.

Constructors

Shrinking s a 

class ShrinkState s a whereSource

Methods

shrinkInit :: a -> sSource

shrinkState :: a -> s -> [(a, s)]Source