Library
Module
Module type
Parameter
Class
Class type
type 'a t = Random.State.t -> 'a
A random generator for values of type 'a.
type 'a sized = int -> Random.State.t -> 'a
Random generator with a size bound.
val return : 'a -> 'a t
Create a constant generator.
Monadic bind for writing dependent generators. First generates an 'a
and then passes it to the given function, to generate a 'b
.
Infix operator for composing a function generator and an argument generator into a result generator.
map f g
transforms a generator g
by applying f
to each generated element.
map2 f g1 g2
transforms two generators g1
and g2
by applying f
to each pair of generated elements.
map3 f g1 g2 g3
transforms three generators g1
, g2
, and g3
by applying f
to each triple of generated elements.
map_keep_input f g
transforms a generator g
by applying f
to each generated element. Returns both the generated element from g
and the output from f
.
val oneofl : 'a list -> 'a t
Constructs a generator that selects among a given list of values.
val oneofa : 'a array -> 'a t
Constructs a generator that selects among a given array of values.
Constructs a generator that selects among a given list of generators. Each of the given generators are chosen based on a positive integer weight.
val frequencyl : (int * 'a) list -> 'a t
Constructs a generator that selects among a given list of values. Each of the given values are chosen based on a positive integer weight.
val frequencya : (int * 'a) array -> 'a t
Constructs a generator that selects among a given array of values. Each of the array entries are chosen based on a positive integer weight.
val shuffle_a : 'a array -> unit t
Shuffles the array in place.
val shuffle_l : 'a list -> 'a list t
Creates a generator of shuffled lists.
val unit : unit t
The unit generator.
val bool : bool t
The boolean generator.
val float : float t
Generates floating point numbers.
val pfloat : float t
Generates positive floating point numbers (0. included).
val nfloat : float t
Generates negative floating point numbers. (-0. included)
val nat : int t
Generates small natural numbers.
val neg_int : int t
Generates non-strictly negative integers (0 included).
val pint : int t
Generates non-strictly positive integers uniformly (0 included).
val int : int t
Generates integers uniformly.
val small_int : int t
Small UNSIGNED integers, for retrocompatibility.
val small_signed_int : int t
Small SIGNED integers.
val int_bound : int -> int t
Uniform integer generator producing integers within 0... bound
.
val int_range : int -> int -> int t
Uniform integer generator producing integers within low,high
.
graft_corners gen l ()
makes a new generator that enumerates the corner cases in l
and then behaves like g
.
val ui32 : int32 t
Generates (unsigned) int32
values.
val ui64 : int64 t
Generates (unsigned) int64
values.
Builds a list generator from an element generator. List size is generated by nat
.
Builds a list generator from a (non-negative) size generator and an element generator.
list_repeat i g
builds a list generator from exactly i
elements generated by g
.
Builds an array generator from an element generator. Array size is generated by nat
.
Builds an array generator from a (non-negative) size generator and an element generator.
array_repeat i g
builds an array generator from exactly i
elements generated by g
.
val char : char t
Generates characters upto character code 255.
val printable : char t
Generates printable characters.
val numeral : char t
Generates numeral characters.
Builds a string generator from a (non-negative) size generator. Accepts an optional character generator (the default is char
).
Builds a string generator. String size is in the range 0--10
. Accepts an optional character generator (the default is char
).
Creates a generator from a size-bounded generator by first generating a size using nat
and passing the result to the size-bounded generator.
Creates a generator from a size-bounded generator by first generating a size using the integer generator and passing the result to the size-bounded generator.
Fixpoint combinator for generating recursive, size-bounded data types. The passed size-parameter should decrease to ensure termination.
Example:
type tree = Leaf of int | Node of tree * tree
let leaf x = Leaf x
let node x y = Node (x,y)
let g = QCheck.Gen.(sized @@ fix
(fun self n -> match n with
| 0 -> map leaf nat
| n ->
frequency
[1, map leaf nat;
2, map2 node (self (n/2)) (self (n/2))]
))
val generate : ?rand:Random.State.t -> n:int -> 'a t -> 'a list
generate ~n g
generates n
instances of g
.
val generate1 : ?rand:Random.State.t -> 'a t -> 'a
generate1 g
generates one instance of g
.