Community
Modules 18

Test.QuickCheck.Gen

Test case generation.

Note: the contents of this module (except for the definition of Gen) are re-exported by Test.QuickCheck. You probably do not need to import it directly.

4 generation diagnostics
  • unattached documentation comment at 57:1
  • unattached documentation comment at 106:1
  • unattached documentation comment at 259:1
  • unattached documentation comment at 276:1

newtype Gen a

A generator for values of type a.

The third-party packages QuickCheck-GenT and quickcheck-transformer provide monad transformer versions of Gen.

MkGen :: QCGen -> Int -> a -> Gen a

unGen :: Gen a -> QCGen -> Int -> a

Run the generator on a particular seed and size. If you just want to get a random value out, consider using generate.

variant :: Integral n => n -> Gen a -> Gen a

Modifies a generator using an integer seed.

sized :: (Int -> Gen a) -> Gen a

Used to construct generators that depend on the size parameter.

For example, listOf, which uses the size parameter as an upper bound on length of lists it generates, can be defined like this:

listOf :: Gen a -> Gen [a]
listOf gen = sized $ \n ->
  do k <- choose (0,n)
     vectorOf k gen

You can also do this using getSize.

getSize :: Gen Int

Returns the size parameter. Used to construct generators that depend on the size parameter.

For example, listOf, which uses the size parameter as an upper bound on length of lists it generates, can be defined like this:

listOf :: Gen a -> Gen [a]
listOf gen = do
  n <- getSize
  k <- choose (0,n)
  vectorOf k gen

You can also do this using sized.

resize :: HasCallStack => Int -> Gen a -> Gen a

Overrides the size parameter. Returns a generator which uses the given size instead of the runtime-size parameter.

scale :: (Int -> Int) -> Gen a -> Gen a

Adjust the size parameter, by transforming it with the given function.

choose :: Random a => (a, a) -> Gen a

Generates a random element in the given inclusive range. For integral and enumerated types, the specialised variants of choose below run much quicker.

chooseAny :: Random a => Gen a

Generates a random element over the natural range of a.

chooseEnum :: Enum a => (a, a) -> Gen a

A fast implementation of choose for enumerated types.

chooseInt :: (Int, Int) -> Gen Int

A fast implementation of choose for Int.

chooseBoundedIntegral :: (Bounded a, Integral a) => (a, a) -> Gen a

A fast implementation of choose for bounded integral types.

chooseInteger :: (Integer, Integer) -> Gen Integer

A fast implementation of choose for Integer.

generate :: Gen a -> IO a

Run a generator. The size passed to the generator is always 30; if you want another size then you should explicitly use resize.

sample' :: Gen a -> IO [a]

Generates some example values.

sample :: Show a => Gen a -> IO ()

Generates some example values and prints them to stdout.

genDouble :: Gen Double

Generate Double in 0..1 range

genFloat :: Gen Float

Generate Float in 0..1 range

suchThat :: Gen a -> (a -> Bool) -> Gen a

Generates a value that satisfies a predicate.

suchThatMap :: Gen a -> (a -> Maybe b) -> Gen b

Generates a value for which the given function returns a Just, and then applies the function.

suchThatMaybe :: Gen a -> (a -> Bool) -> Gen (Maybe a)

Tries to generate a value that satisfies a predicate. If it fails to do so after enough attempts, returns Nothing.

oneof :: HasCallStack => [Gen a] -> Gen a

Randomly uses one of the given generators. The input list must be non-empty.

frequency :: HasCallStack => [(Int, Gen a)] -> Gen a

Chooses one of the given generators, with a weighted random distribution. The input list must be non-empty.

elements :: HasCallStack => [a] -> Gen a

Generates one of the given values. The input list must be non-empty.

sublistOf :: [a] -> Gen [a]

Generates a random subsequence of the given list.

shuffle :: [a] -> Gen [a]

Generates a random permutation of the given list.

growingElements :: HasCallStack => [a] -> Gen a

Takes a list of elements of increasing size, and chooses among an initial segment of the list. The size of this initial segment increases with the size parameter. The input list must be non-empty.

listOf :: Gen a -> Gen [a]

Generates a list of random length. The maximum length depends on the size parameter.

listOf1 :: Gen a -> Gen [a]

Generates a non-empty list of random length. The maximum length depends on the size parameter.

vectorOf :: Int -> Gen a -> Gen [a]

Generates a list of the given length.

Instances

4
  • instance Functor Gen
  • instance Applicative Gen
  • instance Monad Gen
  • instance MonadFix Gen
Build record and source files

Community contribution. The service has not verified this documentation. The generator reported 30 diagnostics.

Target: Linux on x86-64. Some inferred types and resolved links are not available.

Generator: aihc-haddock-aa6debbd-web-3

Metadata snapshot: f17ab6aeb2a7b6daf9fba7614097e138beeef85fa92c3fb7fdfed9ed0e49728c

Open the dependency plan · Download the documentation model

Import a package

Enter a package name and an exact version from Hackage. The site contains imported versions only.