testing-feat- Functional Enumeration of Algebraic Types

Safe HaskellNone




Functions for accessing the values of enumerations including compatibility with the property based testing framework QuickCheck


Accessing functions

optimal :: Enumerable a => Enumerate a Source #

Memoised enumeration. Note that all cardinalities are kept in memory until your program terminates.

index :: Enumerable a => Integer -> a Source #

Index into an enumeration. Mainly used for party tricks (give it a really large number), since usually you want to distinguish values by size.

select :: Enumerable a => Int -> Index -> a Source #

A more fine grained version of index that takes a size and an index into the values of that size. select p i is only defined for i within bounds (meaning i < fst (values !! p)).

values :: Enumerable a => [(Integer, [a])] Source #

All values of the enumeration by increasing cost (which is the number of constructors for most types). Also contains the length of each list.

QuickCheck Compatibility

uniform :: Enumerable a => Int -> Gen a Source #

Compatibility with QuickCheck. Distribution is uniform generator over values bounded by the given size. Typical use: sized uniform.


skipping :: Enumerate a -> Index -> Integer -> Enumerate a Source #

Enumerates every nth value of the enumeration from a given starting index. As a special case striped 0 1 gives all values (starts at index 0 and takes steps of 1).

Useful for running enumerations in parallel since e.g. striped 0 2 is disjoint from striped 1 2 and the union of the two cover all values.

bounded :: Enumerate a -> Integer -> Enumerate a Source #

A version of values with a limited number of values in each inner list. If the list corresponds to a Part which is larger than the bound it evenly distributes the values across the enumeration of the Part.

sizeRange :: Enumerate a -> (Int, Int) -> Enumerate a Source #

Remove all sizes exept those in the given inclusive (low,high) range

Non-class versions of the access functions

indexWith :: Enumerate a -> Integer -> a Source #

Non class version of index.

selectWith :: Enumerate a -> Int -> Index -> a Source #

Non class version of select

valuesWith :: Enumerate a -> [(Integer, [a])] Source #

Non class version of values.

uniformWith :: Enumerate a -> Int -> Gen a Source #

Non class version of uniform.