Module for easily generating unit tests. Based on code posted by padiolea@irisa.fr to the caml mailing list.
type 'a gen = unit -> 'a
the type of a random 'a-generator
val fg : float gen
float generator (no nan, inf, etc.)
val cg : char gen
character generator
val nng : int gen
natural number generator
val uig : int gen
unsigned int generator (uniform random in range min_int, max_int)
val pg : 'a gen -> 'b gen -> ('a * 'b) gen
pair generator
val tg : 'a gen -> 'b gen -> 'c gen -> ('a * 'b * 'c) gen
triple generator
val lg : 'a gen -> ?size_gen:int gen -> 'a list gen
list generator
val sg : ?char_gen:char gen -> ?size_gen:int gen -> string gen
string generator
val always : 'a -> 'a gen
generator that always returns given value
val laws : int -> 'a gen -> ('a -> bool) -> 'a option
laws iter gen func applies func repeatedly (iter times) on output of gen, and if func ever returns false, then the input that caused the failure is returned optionally.
val laws_exn : string -> int -> 'a gen -> ('a -> bool) -> unit
Like laws, but throws an exception instead of returning an option.
val repeat : int -> ('a -> unit) -> 'a gen -> unit