33 lines
960 B
OCaml
33 lines
960 B
OCaml
(* Tiny unit test framework - really just to help find which line is busted *)
|
|
let exit_status = ref 0
|
|
|
|
let suite_name = ref ""
|
|
|
|
let group_name = ref ""
|
|
|
|
let case_num = ref 0
|
|
|
|
let print_checkpoints = false
|
|
|
|
let group name =
|
|
group_name := !suite_name ^ "/" ^ name;
|
|
case_num := 0;
|
|
if print_checkpoints then prerr_endline (" " ^ name ^ "...")
|
|
|
|
let insist ?(exit_on_fail = false) cond =
|
|
incr case_num;
|
|
if not cond then exit_status := 10;
|
|
( match (print_checkpoints, cond) with
|
|
| false, true -> ()
|
|
| false, false ->
|
|
prerr_endline
|
|
( "FAILED: " ^ !suite_name ^ "/" ^ !group_name ^ " #"
|
|
^ string_of_int !case_num )
|
|
| true, true -> prerr_endline (" " ^ string_of_int !case_num)
|
|
| true, false -> prerr_endline (" " ^ string_of_int !case_num ^ " FAIL") );
|
|
if exit_on_fail && not cond then exit !exit_status else ()
|
|
|
|
let suite name f =
|
|
suite_name := name;
|
|
if print_checkpoints then prerr_endline (name ^ ":");
|
|
f ()
|