type 'a eq = 'a -> 'a -> bool
type 'a pp = Stdlib.Format.formatter -> 'a -> unit
val pp_list : 'a pp -> 'a list pp
val pp_option : 'a pp -> 'a option pp
val log_part : ('a, Stdlib.Format.formatter, unit) Stdlib.format -> 'a
val log : ?header:string -> ('a, Stdlib.Format.formatter, unit) Stdlib.format -> 'a
val log_results : unit -> bool
val block : (unit -> unit) -> unit
val test : string -> (unit -> unit) -> test
val run : suite list -> unit
val fail : ('a, Stdlib.Format.formatter, unit, unit) Stdlib.format4 -> 'a
val eq : eq:'a eq -> pp:'a pp -> 'a -> 'a -> unit
val eq_char : char -> char -> unit
val eq_str : string -> string -> unit
val eq_bool : bool -> bool -> unit
val eq_int : int -> int -> unit
val eq_int32 : int32 -> int32 -> unit
val eq_int64 : int64 -> int64 -> unit
val eq_float : float -> float -> unit
val eq_nan : float -> unit
val eq_option : eq:'a eq -> pp:'a pp -> 'a option -> 'a option -> unit
val eq_some : 'a option -> unit
val eq_none : pp:'a pp -> 'a option -> unit
val eq_list : eq:'a eq -> pp:'a pp -> 'a list -> 'a list -> unit
val eq_result : eq_ok:'a eq -> pp_ok:'a pp -> eq_error:'b eq -> pp_error:'b pp ->
('a, 'b) Rresult.result -> ('a, 'b) Rresult.result -> unit
val eq_result_msg : eq_ok:'a eq -> pp_ok:'a pp ->
('a, [ `Msg of string ]) Rresult.result -> ('a, [ `Msg of string ]) Rresult.result -> unit
val eq_ok : eq:'a eq -> pp:'a pp -> ('a, 'b) Rresult.result -> 'a -> unit
val ($) : 'a -> (app -> 'a -> 'b) -> 'b
val (@->) : 'a pp -> (app -> 'b -> 'c) -> app -> ('a -> 'b) -> 'a -> 'c
val ret : 'a pp -> app -> 'a -> 'a
val ret_eq : eq:'a eq -> 'a pp -> 'a -> app -> 'a -> 'a
val ret_some : 'a pp -> app -> 'a option -> 'a option
val ret_none : 'a pp -> app -> 'a option -> 'a option
val ret_get_option : 'a pp -> app -> 'a option -> 'a
val app_invalid : pp:'b pp -> ('a -> 'b) -> 'a -> unit
val app_exn : pp:'b pp -> exn -> ('a -> 'b) -> 'a -> unit
val app_raises : pp:'b pp -> ('a -> 'b) -> 'a -> unit