Use the Test module to run randomized tests. Each randomized test needs a generator, a shrinker, and a property to test.

module type S = sig ... end
module Config : sig ... end
val default_config : Config.t

Defaults to a deterministic seed, shrink_count and test_count of 10_000 each, and sizes ranging from 0 to 30.

val run : f:('a -> Base.unit Base.Or_error.t) -> ?config:Config.t -> ?examples:'a Base.list -> (module S with type t = 'a) -> Base.unit Base.Or_error.t

Tests the property f, failing if it raises or returns Error _. Tests f first with any examples, then with values from the given generator. Only random values count toward the test_count total, not values from examples.

val run_exn : f:('a -> Base.unit) -> ?config:Config.t -> ?examples:'a Base.list -> (module S with type t = 'a) -> Base.unit

Like run, but raises on failure.

val result : f:('a -> (Base.unit, 'e) Base.Result.t) -> ?config:Config.t -> ?examples:'a Base.list -> (module S with type t = 'a) -> (Base.unit, 'a * 'e) Base.Result.t

Like run, but does not catch exceptions raised by f. Allows arbitrary error types and returns the input that failed along with the error.

val with_sample : f:('a Base.Sequence.t -> Base.unit Base.Or_error.t) -> ?config:Config.t -> ?examples:'a Base.list -> 'a Generator.t -> Base.unit Base.Or_error.t

Calls f with the sequence of values that run would get in the same configuration.

val with_sample_exn : f:('a Base.Sequence.t -> Base.unit) -> ?config:Config.t -> ?examples:'a Base.list -> 'a Generator.t -> Base.unit

Like with_sample, but raises on failure.