sig
  val assert_failure : string -> 'a
  val assert_bool : string -> bool -> unit
  val ( @? ) : string -> bool -> unit
  val assert_string : string -> unit
  val assert_equal :
    ?cmp:('-> '-> bool) ->
    ?printer:('-> string) -> ?msg:string -> '-> '-> unit
  val assert_raises : ?msg:string -> exn -> (unit -> 'a) -> unit
  val cmp_float : ?epsilon:float -> float -> float -> bool
  val bracket : (unit -> 'a) -> ('-> 'b) -> ('-> 'c) -> unit -> 'c
  type test =
      TestCase of (unit -> unit)
    | TestList of OUnit.test list
    | TestLabel of string * OUnit.test
  val ( >: ) : string -> OUnit.test -> OUnit.test
  val ( >:: ) : string -> (unit -> unit) -> OUnit.test
  val ( >::: ) : string -> OUnit.test list -> OUnit.test
  val test_case_count : OUnit.test -> int
  type node = ListItem of int | Label of string
  type path = OUnit.node list
  val string_of_node : OUnit.node -> string
  val string_of_path : OUnit.path -> string
  val test_case_paths : OUnit.test -> OUnit.path list
  type test_result =
      RSuccess of OUnit.path
    | RFailure of OUnit.path * string
    | RError of OUnit.path * string
  type test_event =
      EStart of OUnit.path
    | EEnd of OUnit.path
    | EResult of OUnit.test_result
  val perform_test :
    (OUnit.test_event -> 'a) -> OUnit.test -> OUnit.test_result list
  val run_test_tt : ?verbose:bool -> OUnit.test -> OUnit.test_result list
  val run_test_tt_main : OUnit.test -> OUnit.test_result list
end