--- /dev/null
+module Array = ArrayLabels
+
+let () =
+ let (module T : Tree.S) =
+ match Sys.argv.(1) with
+ | "balanced" -> (module Tree_balanced_red_black : Tree.S)
+ | "unbalanced" -> (module Tree_unbalanced_vanilla : Tree.S)
+ | other ->
+ failwith ("Expected: \"balanced\" | \"unbalanced\". Got: " ^ other)
+ in
+
+ let t = T.empty in
+ let t = T.set t ~k:"k1" ~v:"v1" in
+ let t = T.set t ~k:"k2" ~v:"v2" in
+ assert (T.member t ~k:"k1");
+ assert (T.member t ~k:"k2");
+ assert (Some "v1" = T.get t ~k:"k1");
+ assert (Some "v2" = T.get t ~k:"k2");
+ Sys.argv
+ |> Array.sub ~pos:2 ~len:((Array.length Sys.argv) - 2)
+ |> Array.fold_left ~init:T.empty ~f:(fun t k -> T.set t ~k ~v:())
+ |> T.to_dot ~k_to_string:(fun x -> x)
+ |> print_endline