Safe Haskell | Safe-Inferred |
---|
Test.QuickCheck.Arbitrary
Contents
- class Arbitrary a where
- class CoArbitrary a where
- coarbitrary :: a -> Gen c -> Gen c
- arbitrarySizedIntegral :: Num a => Gen a
- arbitraryBoundedIntegral :: (Bounded a, Integral a) => Gen a
- arbitrarySizedBoundedIntegral :: (Bounded a, Integral a) => Gen a
- arbitrarySizedFractional :: Fractional a => Gen a
- arbitraryBoundedRandom :: (Bounded a, Random a) => Gen a
- arbitraryBoundedEnum :: (Bounded a, Enum a) => Gen a
- shrinkNothing :: a -> [a]
- shrinkList :: (a -> [a]) -> [a] -> [[a]]
- shrinkIntegral :: Integral a => a -> [a]
- shrinkRealFrac :: RealFrac a => a -> [a]
- (><) :: (Gen a -> Gen a) -> (Gen a -> Gen a) -> Gen a -> Gen a
- coarbitraryIntegral :: Integral a => a -> Gen b -> Gen b
- coarbitraryReal :: Real a => a -> Gen b -> Gen b
- coarbitraryShow :: Show a => a -> Gen b -> Gen b
- coarbitraryEnum :: Enum a => a -> Gen b -> Gen b
- vector :: Arbitrary a => Int -> Gen [a]
- orderedList :: (Ord a, Arbitrary a) => Gen [a]
Arbitrary and CoArbitrary classes
class Arbitrary a where
Random generation and shrinking of values.
Methods
A generator for values of the given type.
shrink :: a -> [a]
Produces a (possibly) empty list of all the possible immediate shrinks of the given value.
Instances
class CoArbitrary a where
Used for random generation of functions.
Methods
coarbitrary :: a -> Gen c -> Gen c
Used to generate a function of type a -> c
. The implementation
should use the first argument to perturb the random generator
given as the second argument. the returned generator
is then used to generate the function result.
You can often use variant
and ><
to implement
coarbitrary
.
Instances
Helper functions for implementing arbitrary
arbitrarySizedIntegral :: Num a => Gen a
Generates an integral number. The number can be positive or negative and its maximum absolute value depends on the size parameter.
arbitraryBoundedIntegral :: (Bounded a, Integral a) => Gen a
Generates an integral number. The number is chosen uniformly from
the entire range of the type. You may want to use
arbitrarySizedBoundedIntegral
instead.
arbitrarySizedBoundedIntegral :: (Bounded a, Integral a) => Gen a
Generates an integral number from a bounded domain. The number is chosen from the entire range of the type, but small numbers are generated more often than big numbers. Inspired by demands from Phil Wadler.
arbitrarySizedFractional :: Fractional a => Gen a
Generates a fractional number. The number can be positive or negative and its maximum absolute value depends on the size parameter.
arbitraryBoundedRandom :: (Bounded a, Random a) => Gen a
Generates an element of a bounded type. The element is chosen from the entire range of the type.
arbitraryBoundedEnum :: (Bounded a, Enum a) => Gen a
Generates an element of a bounded enumeration.
Helper functions for implementing shrink
shrinkNothing :: a -> [a]
Returns no shrinking alternatives.
shrinkList :: (a -> [a]) -> [a] -> [[a]]
shrinkIntegral :: Integral a => a -> [a]
Shrink an integral number.
shrinkRealFrac :: RealFrac a => a -> [a]
Shrink a fraction.
Helper functions for implementing coarbitrary
(><) :: (Gen a -> Gen a) -> (Gen a -> Gen a) -> Gen a -> Gen a
Combine two generator perturbing functions, for example the
results of calls to variant
or coarbitrary
.
coarbitraryIntegral :: Integral a => a -> Gen b -> Gen b
A coarbitrary
implementation for integral numbers.
coarbitraryReal :: Real a => a -> Gen b -> Gen b
A coarbitrary
implementation for real numbers.
coarbitraryShow :: Show a => a -> Gen b -> Gen b
coarbitrary
helper for lazy people :-).
coarbitraryEnum :: Enum a => a -> Gen b -> Gen b
A coarbitrary
implementation for enums.
Generators which use arbitrary
orderedList :: (Ord a, Arbitrary a) => Gen [a]
Generates an ordered list of a given length.