Library containing a collection of basic shrinking strategies and helper functions to help you construct shrinking strategies.
Empty shrinker. Always returns the empty list.
Shrink the empty tuple. Equivalent to noShrink.
Shrinker of bools.
Shrinker of Order.
Shrinker of integers.
Construct a shrinker of ints which considers the given int to be most minimal.
Shrinker of floats.
Construct a shrinker of floats which considers the given float to be most minimal.
Shrinker of chars.
Construct a shrinker of chars which considers the given char to be most minimal.
Shrinker of chars which considers the empty space as the most minimal char and omits the control key codes.
Equivalent to:
atLeastChar (Char.fromCode 32)Shrinker of strings. Considers the empty string to be the most minimal string and the space to be the most minimal char.
Equivalent to:
convert String.fromList String.toList (list character)Maybe shrinker constructor. Takes a shrinker of values and returns a shrinker of Maybes.
Result shrinker constructor. Takes a shrinker of errors and a shrinker of values and returns a shrinker of Results.
Lazy List shrinker constructor. (must be finite) Takes a shrinker of values and returns a shrinker of Lazy Lists.
List shrinker constructor. Takes a shrinker of values and returns a shrinker of Lists.
Array shrinker constructor. Takes a shrinker of values and returns a shrinker of Arrays.
2-Tuple shrinker constructor. Takes a tuple of shrinkers and returns a shrinker of tuples.
3-Tuple shrinker constructor. Takes a tuple of shrinkers and returns a shrinker of tuples.
4-Tuple shrinker constructor. Takes a tuple of shrinkers and returns a shrinker of tuples.
5-Tuple shrinker constructor. Takes a tuple of shrinkers and returns a shrinker of tuples.
Convert a Shrinker of a's into a Shrinker of b's using two inverse functions.
If you use this function as follows:
shrinkerB = f g shrinkerAMake sure that
`f(g(x)) == x` for all xOr else this process will generate garbage.
Filter out the results of a shrinker. The resulting shrinker will only produce shrinks which satisfy the given predicate.
Filter out the results of a shrinker. The resulting shrinker will only throw away shrinks which satisfy the given predicate.
Merge two shrinkers.
Re-export of Lazy.List.map
This is useful in order to compose shrinkers, especially when used in
conjunction with andMap.
Example:
type alias Vector =
{ x : Float
, y : Float
, z : Float
}
vector : Shrinker Float
vector {x,y,z} =
Vector
map float x
andMap float y
andMap float z
Apply a lazy list of functions on a lazy list of values.
andMap = Lazy.List.map2 (<|)
This is useful in order to compose shrinkers, especially when used in
conjunction with andMap.
Shrinker type. A shrinker is a function that takes a value and returns a list of values that are in some sense "smaller" than the given value. If there are no such values conceptually, then the shrinker should just return the empty list.