ocaml-containers/tests/test_splayMap.ml

44 lines
1.4 KiB
OCaml

open OUnit
open Containers_misc
module Sequence = CCSequence
let test1 () =
let empty = SplayMap.empty () in
let m = SplayMap.of_seq empty (Sequence.of_list [1, "1"; 2, "2"; 3, "3"]) in
OUnit.assert_equal ~printer:(fun s -> s) "2" (SplayMap.find m 2);
OUnit.assert_equal ~printer:(fun s -> s) "2" (SplayMap.find m 2);
OUnit.assert_equal ~printer:(fun s -> s) "3" (SplayMap.find m 3);
OUnit.assert_equal ~printer:(fun s -> s) "1" (SplayMap.find m 1);
OUnit.assert_raises Not_found (fun () -> SplayMap.find m 4);
()
let test_remove () =
let n = 100 in
let m = SplayMap.of_seq (SplayMap.empty ())
(Sequence.zip (Sequence.zip_i (Sequence.int_range ~start:0 ~stop:n))) in
for i = 0 to n do
OUnit.assert_equal ~printer:string_of_int i (SplayMap.find m i);
done;
let m = SplayMap.remove m (n/2) in
OUnit.assert_equal ~printer:string_of_int n (SplayMap.find m n);
OUnit.assert_raises Not_found (fun () -> SplayMap.find m (n/2));
()
let test_big () =
let n = 100_000 in
let m = SplayMap.of_seq (SplayMap.empty ())
(Sequence.zip (Sequence.zip_i (Sequence.int_range ~start:0 ~stop:n))) in
for i = 0 to n do
OUnit.assert_equal ~printer:string_of_int i (SplayMap.find m i);
done;
OUnit.assert_equal ~printer:string_of_int (n+1) (SplayMap.size m);
()
let suite =
"test_splayMap" >:::
[ "test1" >:: test1;
"test_remove" >:: test_remove;
"test_big" >:: test_big;
]