QCheck.ShrinkSourceThe Shrink module contains combinators to build up composite shrinkers for user-defined types
⚠️ Warning: QCheck's shrinking phase may loop infinitely if
list permutation may lead to an infinite shrinking cycle).Given a counter-example, return an iterator on smaller versions of the counter-example.
Printable char shrinker. Shrinks towards 'a' like !char. The output is also a printable character.
option shrinker. Shrinks towards None. option shk reduces Some v values using shk to reduce v.
result shrinker. result ashk eshk reduces Ok a values using ashk and Error e values using eshk.
filter f shrink shrinks values the same as shrink, but only keep smaller values that satisfy f. This way it's easy to preserve invariants that are enforced by generators, when shrinking values
Shrink integers by trying all smaller integers (can take a lot of time!)
Shrinks the elements of a list, without changing the list size.
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.
tup2 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.
Similar to tup2
val tup7 :
'a t ->
'b t ->
'c t ->
'd t ->
'e t ->
'f t ->
'g t ->
('a * 'b * 'c * 'd * 'e * 'f * 'g) tSimilar to tup2