Test.QuickCheck.Arbitrary

| QuickCheck-2.1.1.1: Automatic testing of Haskell programs | Contents | Index
Test.QuickCheck.Arbitrary
Contents
Arbitrary and CoArbitrary classes. Helper functions for implementing arbitrary Helper functions for implementing shrink Helper functions for implementing coarbitrary Generators which use arbitrary
Synopsis
class Arbitrary a where
arbitrary :: Gen a
shrink :: a -> [a]
class CoArbitrary a where
coarbitrary :: a -> Gen c -> Gen c
arbitrarySizedIntegral :: Num a => Gen a
arbitrarySizedFractional :: Fractional a => Gen a
arbitraryBoundedIntegral :: (Bounded a, Integral a) => Gen a
arbitraryBoundedRandom :: (Bounded a, Random 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
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
arbitrary :: Gen a
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
Arbitrary Bool |
Arbitrary Char |
Arbitrary Double |
Arbitrary Float |
Arbitrary Int |
Arbitrary Integer |
Arbitrary () |
Arbitrary OrdC |
Arbitrary OrdB |
Arbitrary OrdA |
Arbitrary C |
Arbitrary B |
Arbitrary A |
Arbitrary a => Arbitrary [a] |
(Integral a, Arbitrary a) => Arbitrary (Ratio a) |
Arbitrary a => Arbitrary (Maybe a) |
(RealFloat a, Arbitrary a) => Arbitrary (Complex a) |
Arbitrary a => Arbitrary (Smart a) |
Arbitrary a => Arbitrary (Shrink2 a) |
(Num a, Ord a, Arbitrary a) => Arbitrary (NonNegative a) |
(Num a, Ord a, Arbitrary a) => Arbitrary (NonZero a) |
(Num a, Ord a, Arbitrary a) => Arbitrary (Positive a) |
Arbitrary a => Arbitrary (NonEmptyList a) |
(Ord a, Arbitrary a) => Arbitrary (OrderedList a) |
Arbitrary a => Arbitrary (Fixed a) |
Arbitrary a => Arbitrary (Blind a) |
(CoArbitrary a, Arbitrary b) => Arbitrary (a -> b) |
(Arbitrary a, Arbitrary b) => Arbitrary (Either a b) |
(Arbitrary a, Arbitrary b) => Arbitrary (a, b) |
(Arbitrary a, ShrinkState s a) => Arbitrary (Shrinking s a) |
(FunArbitrary a, Arbitrary b) => Arbitrary (Fun a b) |
(FunArbitrary a, Arbitrary c) => Arbitrary (:-> a c) |
(Arbitrary a, Arbitrary b, Arbitrary c) => Arbitrary (a, b, c) |
(Arbitrary a, Arbitrary b, Arbitrary c, Arbitrary d) => Arbitrary (a, b, c, d) |
(Arbitrary a, Arbitrary b, Arbitrary c, Arbitrary d, Arbitrary e) => Arbitrary (a, b, c, d, e) |
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
CoArbitrary Bool |
CoArbitrary Char |
CoArbitrary Double |
CoArbitrary Float |
CoArbitrary Int |
CoArbitrary Integer |
CoArbitrary () |
CoArbitrary OrdC |
CoArbitrary OrdB |
CoArbitrary OrdA |
CoArbitrary C |
CoArbitrary B |
CoArbitrary A |
CoArbitrary a => CoArbitrary [a] |
(Integral a, CoArbitrary a) => CoArbitrary (Ratio a) |
CoArbitrary a => CoArbitrary (Maybe a) |
(RealFloat a, CoArbitrary a) => CoArbitrary (Complex a) |
(Arbitrary a, CoArbitrary b) => CoArbitrary (a -> b) |
(CoArbitrary a, CoArbitrary b) => CoArbitrary (Either a b) |
(CoArbitrary a, CoArbitrary b) => CoArbitrary (a, b) |
(CoArbitrary a, CoArbitrary b, CoArbitrary c) => CoArbitrary (a, b, c) |
(CoArbitrary a, CoArbitrary b, CoArbitrary c, CoArbitrary d) => CoArbitrary (a, b, c, d) |
(CoArbitrary a, CoArbitrary b, CoArbitrary c, CoArbitrary d, CoArbitrary e) => CoArbitrary (a, b, c, d, e) |
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.
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.
arbitraryBoundedIntegral :: (Bounded a, Integral a) => Gen a
Generates an integral number. The number is chosen from the entire range of the type.
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.
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 :-).
Generators which use arbitrary
vector :: Arbitrary a => Int -> Gen [a]
Generates a list of a given length.
orderedList :: (Ord a, Arbitrary a) => Gen [a]
Generates an ordered list of a given length.
Produced by Haddock version 2.7.2