Files

40 lines
1.5 KiB
OCaml

(* This is a minimal test file. Your program must pass these tests in order
to get any credit for your work.
In utop:
#directory "_build";;
#load "kvtree.cmo";;
#use "tests.ml";;
run ();;
*)
module M = Kvtree.Make(Int);;
let t = M.of_list [(3, "three"); (2, "two"); (7, "seven"); (6, "six"); (8, "eight")]
let l = [(2, "two"); (3, "three"); (6, "six"); (7, "seven"); (8, "eight")]
let s =
"^(3, three, ^(2, two, #, #), ^(7, seven, ^(6, six, #, #), ^(8, eight, #, #)))"
let t2 = M.of_list [(3, 'a')]
let s2 = "^(3, a, #, #)"
let t3 = M.insert 2 'b' t2
let s3 = "^(3, a, ^(2, b, #, #), #)"
let t4 = M.of_list [(3, "3"); (7, "7"); (5, "5"); (6, "6"); (8, "8"); (9, "9")]
let s4 = "^(3, 3, #, ^(7, 7, ^(5, 5, #, ^(6, 6, #, #)), ^(8, 8, #, ^(9, 9, #, #))))"
let t5 = M.delete 7 t4
let s5a = "^(3, 3, #, ^(6, 6, ^(5, 5, #, #), ^(8, 8, #, ^(9, 9, #, #))))"
let s5b = "^(3, 3, #, ^(8, 8, ^(5, 5, #, ^(6, 6, #, #)), ^(9, 9, #, #)))"
let run () =
assert (M.size t = 5);
assert (M.find 7 t = "seven");
assert (M.find_opt 7 t = Some "seven");
assert (M.to_list t = l);
assert (M.to_string (fun (k, v) -> Printf.sprintf "%d, %s" k v) t = s);
assert (M.to_string (fun (k, v) -> Printf.sprintf "%d, %c" k v) t2 = s2);
assert (M.to_string (fun (k, v) -> Printf.sprintf "%d, %c" k v) t3 = s3);
assert (M.to_string (fun (k, v) -> Printf.sprintf "%d, %s" k v) t4 = s4);
assert (
let s = M.to_string (fun (k, v) -> Printf.sprintf "%d, %s" k v) t5 in
s = s5a || s = s5b)