Base_quickcheck.ShrinkerSourceShrinkers produce small values from large values. When a random test case fails, a shrinker finds the simplest version of the problem.
This shrinker treats a type as atomic, never attempting to produce smaller values.
This helper module type exists separately just to open Bigarray in its scope.
val bigstring :
(Base.char, Bigarray.int8_unsigned_elt, Bigarray.c_layout) Bigarray.Array1.t
tval float32_vec :
(Base.float, Bigarray.float32_elt, Bigarray.fortran_layout) Bigarray.Array1.t
tval float64_vec :
(Base.float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array1.t
tval float32_mat :
(Base.float, Bigarray.float32_elt, Bigarray.fortran_layout) Bigarray.Array2.t
tval float64_mat :
(Base.float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array2.t
tval map_tree_using_comparator :
comparator:('key, 'cmp) Base.Comparator.t ->
'key t ->
'data t ->
('key, 'data, 'cmp) Base.Map.Using_comparator.Tree.t tval set_tree_using_comparator :
comparator:('elt, 'cmp) Base.Comparator.t ->
'elt t ->
('elt, 'cmp) Base.Set.Using_comparator.Tree.t tFilters and maps according to f, and provides input to t via f_inverse. Only the f direction produces options, intentionally.
Ties the recursive knot to shrink recursive types.
For example, here is an shrinker for binary trees:
let tree_shrinker leaf_shrinker =
fixed_point (fun self ->
either leaf_shrinker (both self self)
|> map
~f:(function
| First leaf -> `Leaf leaf
| Second (l, r) -> `Node (l, r))
~f_inverse:(function
| `Leaf leaf -> First leaf
| `Node (l, r) -> Second (l, r)))Creates a t that forces the lazy argument as necessary. Can be used to tie (mutually) recursive knots.
Most users will not need to call these.