Why Base_quickcheck?
Automatic property-based testing
Base_quickcheck provides simple tools for writing down invariants and testing that they hold for randomly-generated inputs.
Base compatibility
The library comes with random distributions for types provided by Base, including
Int63.t, Set.t, and Map.t. Its interfaces follow Base idioms such as sexp
serialization and parameterization via first-class modules.
Customized distributions
Use the [@@deriving quickcheck] syntax to automatically construct a random
distribution for new types, or use the Generator module to build custom
distributions of existing types.
Minimized test cases
Base_quickcheck supports, and automatically derives, Shrinker.t values
that reduce failing inputs to a minimal value. This can help debug complex
failures by eliminating “red herrings”.
open Base
open Base_quickcheck
type complex =
{ real : float; imaginary : float }
[@@deriving compare, quickcheck, sexp]
let add x y =
{ real = x.real +. y.real
; imaginary = x.imaginary +. y.imaginary
}
let%expect_test "commutativity" =
Test.run_exn
(module struct
type t = complex * complex
[@@deriving quickcheck, sexp]
end)
~f:(fun (x, y) ->
[%test_eq: complex]
(add x y)
(add y x))
Getting Started
Installation
$ opam install base_quickcheck
See here for Base_quickcheck’s opam package file.
Usage
open Base
open Base_quickcheck
...
Documentation
More docs, including detailed API docs, are available here.
Documentation for the wrapper of Base_quickcheck exported as Core.Quickcheck can be found
here.

