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