mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-07 11:45:31 -05:00
55 lines
1.6 KiB
OCaml
55 lines
1.6 KiB
OCaml
|
|
module T = (val Containers_testlib.make ~__FILE__ ())
|
|
include T;;
|
|
|
|
open CCHashtbl;;
|
|
|
|
eq "c" (let tbl = of_list [1,"a"; 2,"b"] in get_or tbl 3 ~default:"c");;
|
|
eq "b" (let tbl = of_list [1,"a"; 2,"b"] in get_or tbl 2 ~default:"c");;
|
|
|
|
t @@ fun () -> of_list [1,"a"; 2,"b"] |> map_list (fun x y -> string_of_int x ^ y)
|
|
|> List.sort Stdlib.compare = ["1a"; "2b"];;
|
|
|
|
t @@ fun () ->
|
|
let tbl = Hashtbl.create 32 in
|
|
update tbl ~f:(fun _ _ -> Some "1") ~k:1;
|
|
assert_equal (Some "1") (get tbl 1);
|
|
update tbl ~f:(fun _ v->match v with Some _ -> assert false | None -> Some "2") ~k:2;
|
|
assert_equal (Some "2") (get tbl 2);
|
|
assert_equal 2 (Hashtbl.length tbl);
|
|
update tbl ~f:(fun _ _ -> None) ~k:1;
|
|
assert_equal None (get tbl 1);
|
|
true
|
|
;;
|
|
|
|
t @@ fun () ->
|
|
let tbl = Hashtbl.create 32 in
|
|
let v1 = get_or_add tbl ~f:(fun _ -> "1") ~k:1 in
|
|
assert_equal "1" v1;
|
|
assert_equal (Some "1") (get tbl 1);
|
|
let v2 = get_or_add tbl ~f:(fun _ ->"2") ~k:2 in
|
|
assert_equal "2" v2;
|
|
assert_equal (Some "2") (get tbl 2);
|
|
assert_equal "2" (get_or_add tbl ~f:(fun _ -> assert false) ~k:2);
|
|
assert_equal 2 (Hashtbl.length tbl);
|
|
true
|
|
;;
|
|
|
|
module TI = Make(CCInt);;
|
|
|
|
eq "c" (let tbl = TI.of_list [1,"a"; 2,"b"] in TI.get_or tbl 3 ~default:"c");;
|
|
eq "b" (let tbl = TI.of_list [1,"a"; 2,"b"] in TI.get_or tbl 2 ~default:"c");;
|
|
|
|
t @@ fun () ->
|
|
let tbl = TI.create 32 in
|
|
TI.incr tbl 1 ;
|
|
TI.incr tbl 2;
|
|
TI.incr tbl 1;
|
|
assert_equal 2 (TI.find tbl 1);
|
|
assert_equal 1 (TI.find tbl 2);
|
|
assert_equal 2 (TI.length tbl);
|
|
TI.decr tbl 2;
|
|
assert_equal 0 (TI.get_or tbl 2 ~default:0);
|
|
assert_equal 1 (TI.length tbl);
|
|
assert(not (TI.mem tbl 2));
|
|
true;;
|