module Shrink:sig
..end
Shrinking is used to reduce the size of a counter-example. It tries
to make the counter-example smaller by decreasing it, or removing
elements, until the property to test holds again; then it returns the
smallest value that still made the test fail.
type'a
t ='a -> 'a QCheck.Iter.t
val nil : 'a t
val unit : unit t
val char : char t
val int : int t
val option : 'a t -> 'a option t
val string : string t
val list : ?shrink:'a t -> 'a list t
shrink
: if provided, will be used to also try to reduce
the elements of the list themselves (e.g. in an int list
one can try to decrease the integers).val array : ?shrink:'a t -> 'a array t
shrink
: see QCheck.Shrink.list
val pair : 'a t -> 'b t -> ('a * 'b) t
pair a b
uses a
to shrink the first element of tuples,
then tries to shrink the second element using b
.
It is often better, when generating tuples, to put the "simplest"
element first (atomic type rather than list, etc.) because it will be
shrunk earlier. In particular, putting functions last might help.val triple : 'a t ->
'b t -> 'c t -> ('a * 'b * 'c) t
QCheck.Shrink.pair
val quad : 'a t ->
'b t ->
'c t ->
'd t -> ('a * 'b * 'c * 'd) t
QCheck.Shrink.pair