(* 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 ()