sig
module Tree :
sig
type 'a t
val root : 'a QCheck2.Tree.t -> 'a
val children : 'a QCheck2.Tree.t -> 'a QCheck2.Tree.t Stdlib.Seq.t
val pp :
?depth:int ->
(Stdlib.Format.formatter -> 'a -> unit) ->
Stdlib.Format.formatter -> 'a QCheck2.Tree.t -> unit
end
module Gen :
sig
type 'a t
type 'a sized = int -> 'a QCheck2.Gen.t
val unit : unit QCheck2.Gen.t
val bool : bool QCheck2.Gen.t
val int : int QCheck2.Gen.t
val pint : ?origin:int -> int QCheck2.Gen.t
val small_nat : int QCheck2.Gen.t
val nat : int QCheck2.Gen.t
val big_nat : int QCheck2.Gen.t
val neg_int : int QCheck2.Gen.t
val small_int : int QCheck2.Gen.t
val small_signed_int : int QCheck2.Gen.t
val small_int_corners : unit -> int QCheck2.Gen.t
val int32 : int32 QCheck2.Gen.t
val ui32 : int32 QCheck2.Gen.t
val int64 : int64 QCheck2.Gen.t
val ui64 : int64 QCheck2.Gen.t
val float : float QCheck2.Gen.t
val pfloat : float QCheck2.Gen.t
val nfloat : float QCheck2.Gen.t
val char : char QCheck2.Gen.t
val printable : char QCheck2.Gen.t
val numeral : char QCheck2.Gen.t
val string_size :
?gen:char QCheck2.Gen.t -> int QCheck2.Gen.t -> string QCheck2.Gen.t
val string : string QCheck2.Gen.t
val string_of : char QCheck2.Gen.t -> string QCheck2.Gen.t
val string_printable : string QCheck2.Gen.t
val small_string : ?gen:char QCheck2.Gen.t -> string QCheck2.Gen.t
val pure : 'a -> 'a QCheck2.Gen.t
val return : 'a -> 'a QCheck2.Gen.t
val make_primitive :
gen:(Stdlib.Random.State.t -> 'a) ->
shrink:('a -> 'a Stdlib.Seq.t) -> 'a QCheck2.Gen.t
val add_shrink_invariant :
('a -> bool) -> 'a QCheck2.Gen.t -> 'a QCheck2.Gen.t
val int_bound : int -> int QCheck2.Gen.t
val int_range : ?origin:int -> int -> int -> int QCheck2.Gen.t
val ( -- ) : int -> int -> int QCheck2.Gen.t
val float_bound_inclusive :
?origin:float -> float -> float QCheck2.Gen.t
val float_bound_exclusive :
?origin:float -> float -> float QCheck2.Gen.t
val float_range :
?origin:float -> float -> float -> float QCheck2.Gen.t
val ( --. ) : float -> float -> float QCheck2.Gen.t
val char_range : ?origin:char -> char -> char -> char QCheck2.Gen.t
val oneof : 'a QCheck2.Gen.t list -> 'a QCheck2.Gen.t
val oneofl : 'a list -> 'a QCheck2.Gen.t
val oneofa : 'a array -> 'a QCheck2.Gen.t
val frequency : (int * 'a QCheck2.Gen.t) list -> 'a QCheck2.Gen.t
val frequencyl : (int * 'a) list -> 'a QCheck2.Gen.t
val frequencya : (int * 'a) array -> 'a QCheck2.Gen.t
val shuffle_a : 'a array -> 'a array QCheck2.Gen.t
val shuffle_l : 'a list -> 'a list QCheck2.Gen.t
val shuffle_w_l : (int * 'a) list -> 'a list QCheck2.Gen.t
val graft_corners :
'a QCheck2.Gen.t -> 'a list -> unit -> 'a QCheck2.Gen.t
val int_pos_corners : int list
val int_corners : int list
val list : 'a QCheck2.Gen.t -> 'a list QCheck2.Gen.t
val small_list : 'a QCheck2.Gen.t -> 'a list QCheck2.Gen.t
val list_size :
int QCheck2.Gen.t -> 'a QCheck2.Gen.t -> 'a list QCheck2.Gen.t
val list_repeat : int -> 'a QCheck2.Gen.t -> 'a list QCheck2.Gen.t
val array : 'a QCheck2.Gen.t -> 'a array QCheck2.Gen.t
val array_size :
int QCheck2.Gen.t -> 'a QCheck2.Gen.t -> 'a array QCheck2.Gen.t
val small_array : 'a QCheck2.Gen.t -> 'a array QCheck2.Gen.t
val array_repeat : int -> 'a QCheck2.Gen.t -> 'a array QCheck2.Gen.t
val opt : ?ratio:float -> 'a QCheck2.Gen.t -> 'a option QCheck2.Gen.t
val pair :
'a QCheck2.Gen.t -> 'b QCheck2.Gen.t -> ('a * 'b) QCheck2.Gen.t
val triple :
'a QCheck2.Gen.t ->
'b QCheck2.Gen.t -> 'c QCheck2.Gen.t -> ('a * 'b * 'c) QCheck2.Gen.t
val quad :
'a QCheck2.Gen.t ->
'b QCheck2.Gen.t ->
'c QCheck2.Gen.t ->
'd QCheck2.Gen.t -> ('a * 'b * 'c * 'd) QCheck2.Gen.t
val flatten_l : 'a QCheck2.Gen.t list -> 'a list QCheck2.Gen.t
val flatten_a : 'a QCheck2.Gen.t array -> 'a array QCheck2.Gen.t
val flatten_opt : 'a QCheck2.Gen.t option -> 'a option QCheck2.Gen.t
val flatten_res :
('a QCheck2.Gen.t, 'e) Stdlib.result ->
('a, 'e) Stdlib.result QCheck2.Gen.t
val join : 'a QCheck2.Gen.t QCheck2.Gen.t -> 'a QCheck2.Gen.t
val sized : 'a QCheck2.Gen.sized -> 'a QCheck2.Gen.t
val sized_size :
int QCheck2.Gen.t -> 'a QCheck2.Gen.sized -> 'a QCheck2.Gen.t
val fix :
(('a -> 'b QCheck2.Gen.t) -> 'a -> 'b QCheck2.Gen.t) ->
'a -> 'b QCheck2.Gen.t
val delay : (unit -> 'a QCheck2.Gen.t) -> 'a QCheck2.Gen.t
val map : ('a -> 'b) -> 'a QCheck2.Gen.t -> 'b QCheck2.Gen.t
val ( >|= ) : 'a QCheck2.Gen.t -> ('a -> 'b) -> 'b QCheck2.Gen.t
val ( <$> ) : ('a -> 'b) -> 'a QCheck2.Gen.t -> 'b QCheck2.Gen.t
val map2 :
('a -> 'b -> 'c) ->
'a QCheck2.Gen.t -> 'b QCheck2.Gen.t -> 'c QCheck2.Gen.t
val map3 :
('a -> 'b -> 'c -> 'd) ->
'a QCheck2.Gen.t ->
'b QCheck2.Gen.t -> 'c QCheck2.Gen.t -> 'd QCheck2.Gen.t
val ap :
('a -> 'b) QCheck2.Gen.t -> 'a QCheck2.Gen.t -> 'b QCheck2.Gen.t
val ( <*> ) :
('a -> 'b) QCheck2.Gen.t -> 'a QCheck2.Gen.t -> 'b QCheck2.Gen.t
val bind :
'a QCheck2.Gen.t -> ('a -> 'b QCheck2.Gen.t) -> 'b QCheck2.Gen.t
val ( >>= ) :
'a QCheck2.Gen.t -> ('a -> 'b QCheck2.Gen.t) -> 'b QCheck2.Gen.t
val ( let+ ) : 'a QCheck2.Gen.t -> ('a -> 'b) -> 'b QCheck2.Gen.t
val ( and+ ) :
'a QCheck2.Gen.t -> 'b QCheck2.Gen.t -> ('a * 'b) QCheck2.Gen.t
val ( let* ) :
'a QCheck2.Gen.t -> ('a -> 'b QCheck2.Gen.t) -> 'b QCheck2.Gen.t
val ( and* ) :
'a QCheck2.Gen.t -> 'b QCheck2.Gen.t -> ('a * 'b) QCheck2.Gen.t
val generate :
?rand:Stdlib.Random.State.t -> n:int -> 'a QCheck2.Gen.t -> 'a list
val generate1 : ?rand:Stdlib.Random.State.t -> 'a QCheck2.Gen.t -> 'a
val generate_tree :
?rand:Stdlib.Random.State.t -> 'a QCheck2.Gen.t -> 'a QCheck2.Tree.t
end
module Print :
sig
type 'a t = 'a -> string
val unit : unit QCheck2.Print.t
val int : int QCheck2.Print.t
val bool : bool QCheck2.Print.t
val float : float QCheck2.Print.t
val char : char QCheck2.Print.t
val string : string QCheck2.Print.t
val option : 'a QCheck2.Print.t -> 'a option QCheck2.Print.t
val pair :
'a QCheck2.Print.t -> 'b QCheck2.Print.t -> ('a * 'b) QCheck2.Print.t
val triple :
'a QCheck2.Print.t ->
'b QCheck2.Print.t ->
'c QCheck2.Print.t -> ('a * 'b * 'c) QCheck2.Print.t
val quad :
'a QCheck2.Print.t ->
'b QCheck2.Print.t ->
'c QCheck2.Print.t ->
'd QCheck2.Print.t -> ('a * 'b * 'c * 'd) QCheck2.Print.t
val list : 'a QCheck2.Print.t -> 'a list QCheck2.Print.t
val array : 'a QCheck2.Print.t -> 'a array QCheck2.Print.t
val contramap : ('b -> 'a) -> 'a QCheck2.Print.t -> 'b QCheck2.Print.t
val comap : ('b -> 'a) -> 'a QCheck2.Print.t -> 'b QCheck2.Print.t
end
module Shrink :
sig
module type Number =
sig
type t
val equal :
QCheck2.Shrink.Number.t -> QCheck2.Shrink.Number.t -> bool
val div :
QCheck2.Shrink.Number.t ->
QCheck2.Shrink.Number.t -> QCheck2.Shrink.Number.t
val add :
QCheck2.Shrink.Number.t ->
QCheck2.Shrink.Number.t -> QCheck2.Shrink.Number.t
val sub :
QCheck2.Shrink.Number.t ->
QCheck2.Shrink.Number.t -> QCheck2.Shrink.Number.t
val of_int : int -> QCheck2.Shrink.Number.t
end
val number_towards :
(module QCheck2.Shrink.Number with type t = 'a) ->
destination:'a -> 'a -> 'a Stdlib.Seq.t
val int_towards : int -> int -> int Stdlib.Seq.t
val int32_towards : int32 -> int32 -> int32 Stdlib.Seq.t
val int64_towards : int64 -> int64 -> int64 Stdlib.Seq.t
val float_towards : float -> float -> float Stdlib.Seq.t
val int_aggressive_towards : int -> int -> int Stdlib.Seq.t
val int_aggressive : int -> int Stdlib.Seq.t
end
module Observable :
sig
type -'a t
val make :
?eq:('a -> 'a -> bool) ->
?hash:('a -> int) -> 'a QCheck2.Print.t -> 'a QCheck2.Observable.t
val equal : 'a QCheck2.Observable.t -> 'a -> 'a -> bool
val hash : 'a QCheck2.Observable.t -> 'a -> int
val print : 'a QCheck2.Observable.t -> 'a QCheck2.Print.t
val unit : unit QCheck2.Observable.t
val bool : bool QCheck2.Observable.t
val int : int QCheck2.Observable.t
val float : float QCheck2.Observable.t
val string : string QCheck2.Observable.t
val char : char QCheck2.Observable.t
val contramap :
('b -> 'a) -> 'a QCheck2.Observable.t -> 'b QCheck2.Observable.t
val map :
('b -> 'a) -> 'a QCheck2.Observable.t -> 'b QCheck2.Observable.t
val option : 'a QCheck2.Observable.t -> 'a option QCheck2.Observable.t
val list : 'a QCheck2.Observable.t -> 'a list QCheck2.Observable.t
val array : 'a QCheck2.Observable.t -> 'a array QCheck2.Observable.t
val pair :
'a QCheck2.Observable.t ->
'b QCheck2.Observable.t -> ('a * 'b) QCheck2.Observable.t
val triple :
'a QCheck2.Observable.t ->
'b QCheck2.Observable.t ->
'c QCheck2.Observable.t -> ('a * 'b * 'c) QCheck2.Observable.t
val quad :
'a QCheck2.Observable.t ->
'b QCheck2.Observable.t ->
'c QCheck2.Observable.t ->
'd QCheck2.Observable.t -> ('a * 'b * 'c * 'd) QCheck2.Observable.t
end
module Tuple :
sig
type 'a t =
Nil : unit QCheck2.Tuple.t
| Cons : 'a * 'b QCheck2.Tuple.t -> ('a * 'b) QCheck2.Tuple.t
val nil : unit QCheck2.Tuple.t
val cons : 'a -> 'b QCheck2.Tuple.t -> ('a * 'b) QCheck2.Tuple.t
type 'a obs
val o_nil : unit QCheck2.Tuple.obs
val o_cons :
'a QCheck2.Observable.t ->
'b QCheck2.Tuple.obs -> ('a * 'b) QCheck2.Tuple.obs
val observable :
'a QCheck2.Tuple.obs -> 'a QCheck2.Tuple.t QCheck2.Observable.t
module Infix :
sig
val ( @:: ) : 'a -> 'b QCheck2.Tuple.t -> ('a * 'b) QCheck2.Tuple.t
val ( @-> ) :
'a QCheck2.Observable.t ->
'b QCheck2.Tuple.obs -> ('a * 'b) QCheck2.Tuple.obs
end
val ( @:: ) : 'a -> 'b t -> ('a * 'b) t
val ( @-> ) : 'a Observable.t -> 'b obs -> ('a * 'b) obs
end
type 'f fun_repr
type 'f fun_ = Fun of 'f QCheck2.fun_repr * 'f
val fun1 :
'a QCheck2.Observable.t ->
?print:'b QCheck2.Print.t ->
'b QCheck2.Gen.t -> ('a -> 'b) QCheck2.fun_ QCheck2.Gen.t
val fun2 :
'a QCheck2.Observable.t ->
'b QCheck2.Observable.t ->
?print:'c QCheck2.Print.t ->
'c QCheck2.Gen.t -> ('a -> 'b -> 'c) QCheck2.fun_ QCheck2.Gen.t
val fun3 :
'a QCheck2.Observable.t ->
'b QCheck2.Observable.t ->
'c QCheck2.Observable.t ->
?print:'d QCheck2.Print.t ->
'd QCheck2.Gen.t -> ('a -> 'b -> 'c -> 'd) QCheck2.fun_ QCheck2.Gen.t
val fun4 :
'a QCheck2.Observable.t ->
'b QCheck2.Observable.t ->
'c QCheck2.Observable.t ->
'd QCheck2.Observable.t ->
?print:'e QCheck2.Print.t ->
'e QCheck2.Gen.t ->
('a -> 'b -> 'c -> 'd -> 'e) QCheck2.fun_ QCheck2.Gen.t
val fun_nary :
'a QCheck2.Tuple.obs ->
?print:'b QCheck2.Print.t ->
'b QCheck2.Gen.t -> ('a QCheck2.Tuple.t -> 'b) QCheck2.fun_ QCheck2.Gen.t
module Fn :
sig
val print : 'f QCheck2.fun_ QCheck2.Print.t
val apply : 'f QCheck2.fun_ -> 'f
end
val assume : bool -> unit
val ( ==> ) : bool -> bool -> bool
val assume_fail : unit -> 'a
type 'a stat = string * ('a -> int)
module TestResult :
sig
type 'a counter_ex = {
instance : 'a;
shrink_steps : int;
msg_l : string list;
}
type 'a state =
Success
| Failed of { instances : 'a QCheck2.TestResult.counter_ex list; }
| Failed_other of { msg : string; }
| Error of { instance : 'a QCheck2.TestResult.counter_ex; exn : exn;
backtrace : string;
}
type 'a t
val get_state : 'a QCheck2.TestResult.t -> 'a QCheck2.TestResult.state
val get_count : 'a QCheck2.TestResult.t -> int
val get_count_gen : 'a QCheck2.TestResult.t -> int
val get_collect :
'a QCheck2.TestResult.t -> (string, int) Stdlib.Hashtbl.t option
val get_stats :
'a QCheck2.TestResult.t ->
('a QCheck2.stat * (int, int) Stdlib.Hashtbl.t) list
val get_warnings : 'a QCheck2.TestResult.t -> string list
val get_instances : 'a QCheck2.TestResult.t -> 'a list
val is_success : 'a QCheck2.TestResult.t -> bool
val stats :
'a QCheck2.TestResult.t ->
('a QCheck2.stat * (int, int) Stdlib.Hashtbl.t) list
val warnings : 'a QCheck2.TestResult.t -> string list
val collect :
'a QCheck2.TestResult.t -> (string, int) Stdlib.Hashtbl.t option
end
module Test_exceptions :
sig
exception Test_fail of string * string list
exception Test_error of string * string * exn * string
end
module Test :
sig
type 'a cell
val make_cell :
?if_assumptions_fail:[ `Fatal | `Warning ] * float ->
?count:int ->
?long_factor:int ->
?max_gen:int ->
?max_fail:int ->
?name:string ->
?print:'a QCheck2.Print.t ->
?collect:('a -> string) ->
?stats:'a QCheck2.stat list ->
'a QCheck2.Gen.t -> ('a -> bool) -> 'a QCheck2.Test.cell
val make_cell_from_QCheck1 :
?if_assumptions_fail:[ `Fatal | `Warning ] * float ->
?count:int ->
?long_factor:int ->
?max_gen:int ->
?max_fail:int ->
?name:string ->
gen:(Stdlib.Random.State.t -> 'a) ->
?shrink:('a -> ('a -> unit) -> unit) ->
?print:('a -> string) ->
?collect:('a -> string) ->
stats:'a QCheck2.stat list -> ('a -> bool) -> 'a QCheck2.Test.cell
val get_law : 'a QCheck2.Test.cell -> 'a -> bool
val get_name : 'a QCheck2.Test.cell -> string
val get_gen : 'a QCheck2.Test.cell -> 'a QCheck2.Gen.t
val get_print_opt : 'a QCheck2.Test.cell -> 'a QCheck2.Print.t option
val get_collect_opt : 'a QCheck2.Test.cell -> ('a -> string) option
val get_stats : 'a QCheck2.Test.cell -> 'a QCheck2.stat list
val set_name : 'a QCheck2.Test.cell -> string -> unit
val get_count : 'a QCheck2.Test.cell -> int
val get_long_factor : 'a QCheck2.Test.cell -> int
type t = Test : 'a QCheck2.Test.cell -> QCheck2.Test.t
val make :
?if_assumptions_fail:[ `Fatal | `Warning ] * float ->
?count:int ->
?long_factor:int ->
?max_gen:int ->
?max_fail:int ->
?name:string ->
?print:'a QCheck2.Print.t ->
?collect:('a -> string) ->
?stats:'a QCheck2.stat list ->
'a QCheck2.Gen.t -> ('a -> bool) -> QCheck2.Test.t
val test_get_count : QCheck2.Test.t -> int
val fail_report : string -> 'a
val fail_reportf :
('a, Stdlib.Format.formatter, unit, 'b) Stdlib.format4 -> 'a
exception Test_fail of string * string list
exception Test_error of string * string * exn * string
val print_instance : 'a QCheck2.Test.cell -> 'a -> string
val print_c_ex :
'a QCheck2.Test.cell -> 'a QCheck2.TestResult.counter_ex -> string
val print_fail :
'a QCheck2.Test.cell ->
string -> 'a QCheck2.TestResult.counter_ex list -> string
val print_fail_other : string -> msg:string -> string
val print_error :
?st:string ->
'a QCheck2.Test.cell ->
string -> 'a QCheck2.TestResult.counter_ex * exn -> string
val print_test_fail : string -> string list -> string
val print_test_error : string -> string -> exn -> string -> string
val print_collect : (string, int) Stdlib.Hashtbl.t -> string
val print_stat :
'a QCheck2.stat * (int, int) Stdlib.Hashtbl.t -> string
val check_result :
'a QCheck2.Test.cell -> 'a QCheck2.TestResult.t -> unit
type res = Success | Failure | FalseAssumption | Error of exn * string
type 'a event =
Generating
| Collecting of 'a
| Testing of 'a
| Shrunk of int * 'a
| Shrinking of int * int * 'a
type 'a handler =
string -> 'a QCheck2.Test.cell -> 'a QCheck2.Test.event -> unit
type 'a step =
string -> 'a QCheck2.Test.cell -> 'a -> QCheck2.Test.res -> unit
type 'a callback =
string -> 'a QCheck2.Test.cell -> 'a QCheck2.TestResult.t -> unit
val check_cell :
?long:bool ->
?call:'a QCheck2.Test.callback ->
?step:'a QCheck2.Test.step ->
?handler:'a QCheck2.Test.handler ->
?rand:Stdlib.Random.State.t ->
'a QCheck2.Test.cell -> 'a QCheck2.TestResult.t
val check_cell_exn :
?long:bool ->
?call:'a QCheck2.Test.callback ->
?step:'a QCheck2.Test.step ->
?rand:Stdlib.Random.State.t -> 'a QCheck2.Test.cell -> unit
val check_exn :
?long:bool -> ?rand:Stdlib.Random.State.t -> QCheck2.Test.t -> unit
end
exception No_example_found of string
val find_example :
?name:string ->
?count:int -> f:('a -> bool) -> 'a QCheck2.Gen.t -> 'a QCheck2.Gen.t
val find_example_gen :
?rand:Stdlib.Random.State.t ->
?name:string -> ?count:int -> f:('a -> bool) -> 'a QCheck2.Gen.t -> 'a
end