From 35c2d0ed54611cd0a1ae621520def6f2a7531d9f Mon Sep 17 00:00:00 2001 From: Jacques-Pascal Deplaix Date: Sat, 30 Dec 2017 15:53:56 +0100 Subject: [PATCH] Fix tests --- src/core/CCArray.ml | 28 +++++++++++++------------- src/core/CCArray_slice.ml | 2 +- src/core/CCList.ml | 42 +++++++++++++++++++-------------------- src/core/CCList.mli | 2 +- src/data/CCCache.ml | 6 +++--- src/data/CCDeque.ml | 4 ++-- src/data/CCGraph.ml | 14 ++++++++----- src/data/CCRAL.ml | 6 +++--- 8 files changed, 54 insertions(+), 50 deletions(-) diff --git a/src/core/CCArray.ml b/src/core/CCArray.ml index f74f5704..4fa0a86f 100644 --- a/src/core/CCArray.ml +++ b/src/core/CCArray.ml @@ -304,13 +304,13 @@ let lookup ~cmp k a = with Not_found -> None (*$T - lookup 2 [|0;1;2;3;4;5|] = Some 2 - lookup 4 [|0;1;2;3;4;5|] = Some 4 - lookup 0 [|1;2;3;4;5|] = None - lookup 6 [|1;2;3;4;5|] = None - lookup 3 [| |] = None - lookup 1 [| 1 |] = Some 0 - lookup 2 [| 1 |] = None + lookup ~cmp:CCInt.compare 2 [|0;1;2;3;4;5|] = Some 2 + lookup ~cmp:CCInt.compare 4 [|0;1;2;3;4;5|] = Some 4 + lookup ~cmp:CCInt.compare 0 [|1;2;3;4;5|] = None + lookup ~cmp:CCInt.compare 6 [|1;2;3;4;5|] = None + lookup ~cmp:CCInt.compare 3 [| |] = None + lookup ~cmp:CCInt.compare 1 [| 1 |] = Some 0 + lookup ~cmp:CCInt.compare 2 [| 1 |] = None *) let bsearch ~cmp k a = @@ -332,13 +332,13 @@ let bsearch ~cmp k a = | _ -> aux 0 (n-1) (*$T bsearch - bsearch 3 [|1; 2; 2; 3; 4; 10|] = `At 3 - bsearch 5 [|1; 2; 2; 3; 4; 10|] = `Just_after 4 - bsearch 1 [|1; 2; 5; 5; 11; 12|] = `At 0 - bsearch 12 [|1; 2; 5; 5; 11; 12|] = `At 5 - bsearch 10 [|1; 2; 2; 3; 4; 9|] = `All_lower - bsearch 0 [|1; 2; 2; 3; 4; 9|] = `All_bigger - bsearch 3 [| |] = `Empty + bsearch ~cmp:CCInt.compare 3 [|1; 2; 2; 3; 4; 10|] = `At 3 + bsearch ~cmp:CCInt.compare 5 [|1; 2; 2; 3; 4; 10|] = `Just_after 4 + bsearch ~cmp:CCInt.compare 1 [|1; 2; 5; 5; 11; 12|] = `At 0 + bsearch ~cmp:CCInt.compare 12 [|1; 2; 5; 5; 11; 12|] = `At 5 + bsearch ~cmp:CCInt.compare 10 [|1; 2; 2; 3; 4; 9|] = `All_lower + bsearch ~cmp:CCInt.compare 0 [|1; 2; 2; 3; 4; 9|] = `All_bigger + bsearch ~cmp:CCInt.compare 3 [| |] = `Empty *) let (>>=) a f = flat_map f a diff --git a/src/core/CCArray_slice.ml b/src/core/CCArray_slice.ml index e3e994d9..9e96841b 100644 --- a/src/core/CCArray_slice.ml +++ b/src/core/CCArray_slice.ml @@ -353,7 +353,7 @@ let lookup ~cmp k a = with Not_found -> None (*$= - (Some 1) (lookup "c" (make [| "a"; "b"; "c" |] 1 2)) + (Some 1) (lookup ~cmp:CCString.compare "c" (make [| "a"; "b"; "c" |] 1 2)) *) let bsearch ~cmp k a = diff --git a/src/core/CCList.ml b/src/core/CCList.ml index c1d78a1a..9f6e6b82 100644 --- a/src/core/CCList.ml +++ b/src/core/CCList.ml @@ -991,11 +991,11 @@ let remove_one ~eq x l = (*$Q Q.(pair int (list int)) (fun (x,l) -> \ - remove_one x (add_nodup x l) = l) + remove_one ~eq:CCInt.equal x (add_nodup ~eq:CCInt.equal x l) = l) Q.(pair int (list int)) (fun (x,l) -> \ - mem x l || List.length (add_nodup x l) = List.length l + 1) + mem ~eq:CCInt.equal x l || List.length (add_nodup ~eq:CCInt.equal x l) = List.length l + 1) Q.(pair int (list int)) (fun (x,l) -> \ - not (mem x l) || List.length (remove_one x l) = List.length l - 1) + not (mem ~eq:CCInt.equal x l) || List.length (remove_one ~eq:CCInt.equal x l) = List.length l - 1) *) let subset ~eq l1 l2 = @@ -1011,12 +1011,12 @@ let uniq ~eq l = in uniq eq [] l (*$T - uniq [1;1;2;2;3;4;4;2;4;1;5] |> List.sort Pervasives.compare = [1;2;3;4;5] + uniq ~eq:CCInt.equal [1;1;2;2;3;4;4;2;4;1;5] |> List.sort Pervasives.compare = [1;2;3;4;5] *) (*$Q Q.(small_list small_int) (fun l -> \ - sort_uniq l = (uniq l |> sort Pervasives.compare)) + sort_uniq ~cmp:CCInt.compare l = (uniq ~eq:CCInt.equal l |> sort Pervasives.compare)) *) let union ~eq l1 l2 = @@ -1027,7 +1027,7 @@ let union ~eq l1 l2 = in union eq [] l1 l2 (*$T - union [1;2;4] [2;3;4;5] = [1;2;3;4;5] + union ~eq:CCInt.equal [1;2;4] [2;3;4;5] = [1;2;3;4;5] *) let inter ~eq l1 l2 = @@ -1038,7 +1038,7 @@ let inter ~eq l1 l2 = in inter eq [] l1 l2 (*$T - inter [1;2;4] [2;3;4;5] = [2;4] + inter ~eq:CCInt.equal [1;2;4] [2;3;4;5] = [2;4] *) let mapi f l = @@ -1243,10 +1243,10 @@ module Assoc = struct with Not_found -> None (*$T - Assoc.get 1 [1, "1"; 2, "2"] = Some "1" - Assoc.get 2 [1, "1"; 2, "2"] = Some "2" - Assoc.get 3 [1, "1"; 2, "2"] = None - Assoc.get 42 [] = None + Assoc.get ~eq:CCInt.equal 1 [1, "1"; 2, "2"] = Some "1" + Assoc.get ~eq:CCInt.equal 2 [1, "1"; 2, "2"] = Some "2" + Assoc.get ~eq:CCInt.equal 3 [1, "1"; 2, "2"] = None + Assoc.get ~eq:CCInt.equal 42 [] = None *) (* search for a binding for [x] in [l], and calls [f x (Some v) rest] @@ -1264,9 +1264,9 @@ module Assoc = struct ~f:(fun x _ l -> (x,y)::l) (*$T - Assoc.set 2 "two" [1,"1"; 2, "2"] |> List.sort Pervasives.compare \ + Assoc.set ~eq:CCInt.equal 2 "two" [1,"1"; 2, "2"] |> List.sort Pervasives.compare \ = [1, "1"; 2, "two"] - Assoc.set 3 "3" [1,"1"; 2, "2"] |> List.sort Pervasives.compare \ + Assoc.set ~eq:CCInt.equal 3 "3" [1,"1"; 2, "2"] |> List.sort Pervasives.compare \ = [1, "1"; 2, "2"; 3, "3"] *) @@ -1275,8 +1275,8 @@ module Assoc = struct with Not_found -> false (*$T - Assoc.mem 1 [1,"1"; 2,"2"; 3, "3"] - not (Assoc.mem 4 [1,"1"; 2,"2"; 3, "3"]) + Assoc.mem ~eq:CCInt.equal 1 [1,"1"; 2,"2"; 3, "3"] + not (Assoc.mem ~eq:CCInt.equal 4 [1,"1"; 2,"2"; 3, "3"]) *) let update ~eq ~f x l = @@ -1287,13 +1287,13 @@ module Assoc = struct | Some y' -> (x,y') :: rest) (*$= [1,"1"; 2,"22"] \ - (Assoc.update 2 [1,"1"; 2,"2"] \ + (Assoc.update ~eq:CCInt.equal 2 [1,"1"; 2,"2"] \ ~f:(function Some "2" -> Some "22" | _ -> assert false) |> lsort) [1,"1"; 3,"3"] \ - (Assoc.update 2 [1,"1"; 2,"2"; 3,"3"] \ + (Assoc.update ~eq:CCInt.equal 2 [1,"1"; 2,"2"; 3,"3"] \ ~f:(function Some "2" -> None | _ -> assert false) |> lsort) [1,"1"; 2,"2"; 3,"3"] \ - (Assoc.update 3 [1,"1"; 2,"2"] \ + (Assoc.update ~eq:CCInt.equal 3 [1,"1"; 2,"2"] \ ~f:(function None -> Some "3" | _ -> assert false) |> lsort) *) @@ -1305,11 +1305,11 @@ module Assoc = struct (*$= [1,"1"] \ - (Assoc.remove 2 [1,"1"; 2,"2"] |> lsort) + (Assoc.remove ~eq:CCInt.equal 2 [1,"1"; 2,"2"] |> lsort) [1,"1"; 3,"3"] \ - (Assoc.remove 2 [1,"1"; 2,"2"; 3,"3"] |> lsort) + (Assoc.remove ~eq:CCInt.equal 2 [1,"1"; 2,"2"; 3,"3"] |> lsort) [1,"1"; 2,"2"] \ - (Assoc.remove 3 [1,"1"; 2,"2"] |> lsort) + (Assoc.remove ~eq:CCInt.equal 3 [1,"1"; 2,"2"] |> lsort) *) end diff --git a/src/core/CCList.mli b/src/core/CCList.mli index cbe94587..47ac6a3c 100644 --- a/src/core/CCList.mli +++ b/src/core/CCList.mli @@ -313,7 +313,7 @@ val sorted_insert : cmp:('a -> 'a -> int) -> ?uniq:bool -> 'a -> 'a list -> 'a l (*$Q Q.(pair small_int (list small_int)) (fun (x,l) -> \ let l = List.sort Pervasives.compare l in \ - is_sorted (sorted_insert x l)) + is_sorted ~cmp:CCInt.compare (sorted_insert ~cmp:CCInt.compare x l)) *) val uniq_succ : eq:('a -> 'a -> bool) -> 'a list -> 'a list diff --git a/src/data/CCCache.ml b/src/data/CCCache.ml index 6f680e60..fce048aa 100644 --- a/src/data/CCCache.ml +++ b/src/data/CCCache.ml @@ -56,7 +56,7 @@ let with_cache_rec ?(cb=default_callback_) c f = f' (*$R - let c = unbounded 256 in + let c = unbounded ~eq:CCInt.equal 256 in let fib = with_cache_rec c (fun self n -> match n with | 1 | 2 -> 1 @@ -321,7 +321,7 @@ let lru (type a) ~eq ?(hash=default_hash_) size = (*$T let f = (let r = ref 0 in fun _ -> incr r; !r) in \ - let c = lru 2 in \ + let c = lru ~eq:CCInt.equal 2 in \ let res1 = with_cache c f 1 in \ let res2 = with_cache c f 2 in \ let res3 = with_cache c f 3 in \ @@ -331,7 +331,7 @@ let lru (type a) ~eq ?(hash=default_hash_) size = (*$R let f = (let r = ref 0 in fun _ -> incr r; !r) in - let c = lru 2 in + let c = lru ~eq:CCEqual.unit 2 in let x = with_cache c f () in assert_equal 1 x; assert_equal 1 (size c); diff --git a/src/data/CCDeque.ml b/src/data/CCDeque.ml index e76fed89..09fff995 100644 --- a/src/data/CCDeque.ml +++ b/src/data/CCDeque.ml @@ -369,7 +369,7 @@ let copy d = let q = of_list [1;2;3;4] in assert_equal 4 (length q); let q' = copy q in - let cmp = equal ?eq:None in + let cmp = equal ~eq:CCInt.equal in assert_equal 4 (length q'); assert_equal ~cmp q q'; push_front q 0; @@ -399,7 +399,7 @@ let compare ~cmp a b = (*$Q Q.(pair (list int) (list int)) (fun (l1,l2) -> \ - CCOrd.equiv (compare (of_list l1) (of_list l2)) \ + CCOrd.equiv (compare ~cmp:Pervasives.compare (of_list l1) (of_list l2)) \ (CCList.compare Pervasives.compare l1 l2)) *) diff --git a/src/data/CCGraph.ml b/src/data/CCGraph.ml index 74208f8e..63c889fb 100644 --- a/src/data/CCGraph.ml +++ b/src/data/CCGraph.ml @@ -289,7 +289,8 @@ module Traverse = struct (*$R let l = - Traverse.Event.dfs ~graph:divisors_graph (Sequence.return 345614) + let tbl = mk_table ~eq:CCInt.equal 128 in + Traverse.Event.dfs ~tbl ~eq:CCInt.equal ~graph:divisors_graph (Sequence.return 345614) |> Sequence.to_list in let expected = [`Enter (345614, 0, []); `Edge (345614, (), 172807, `Forward); @@ -339,13 +340,15 @@ let topo_sort ~eq ?rev ~tbl ~graph seq = topo_sort_tag ~eq ?rev ~tags ~graph seq (*$T - let l = topo_sort ~graph:divisors_graph (Seq.return 42) in \ + let tbl = mk_table ~eq:CCInt.equal 128 in \ + let l = topo_sort ~tbl ~eq:CCInt.equal ~graph:divisors_graph (Seq.return 42) in \ List.for_all (fun (i,j) -> \ let idx_i = CCList.find_idx ((=)i) l |> CCOpt.get_exn |> fst in \ let idx_j = CCList.find_idx ((=)j) l |> CCOpt.get_exn |> fst in \ idx_i < idx_j) \ [ 42, 21; 14, 2; 3, 1; 21, 7; 42, 3] - let l = topo_sort ~rev:true ~graph:divisors_graph (Seq.return 42) in \ + let tbl = mk_table ~eq:CCInt.equal 128 in \ + let l = topo_sort ~tbl ~eq:CCInt.equal ~rev:true ~graph:divisors_graph (Seq.return 42) in \ List.for_all (fun (i,j) -> \ let idx_i = CCList.find_idx ((=)i) l |> CCOpt.get_exn |> fst in \ let idx_j = CCList.find_idx ((=)j) l |> CCOpt.get_exn |> fst in \ @@ -487,7 +490,7 @@ let scc ~tbl ~graph seq = SCC.explore ~tbl ~graph seq (* example from https://en.wikipedia.org/wiki/Strongly_connected_component *) (*$R let set_eq ?(eq=(=)) l1 l2 = CCList.subset ~eq l1 l2 && CCList.subset ~eq l2 l1 in - let graph = of_list + let graph = of_list ~eq:CCString.equal [ "a", "b" ; "b", "e" ; "e", "a" @@ -503,7 +506,8 @@ let scc ~tbl ~graph seq = SCC.explore ~tbl ~graph seq ; "h", "d" ; "h", "g" ] in - let res = scc ~graph (Seq.return "a") |> Seq.to_list in + let tbl = mk_table ~eq:CCString.equal 128 in + let res = scc ~tbl ~graph (Seq.return "a") |> Seq.to_list in assert_bool "scc" (set_eq ~eq:(set_eq ?eq:None) res [ [ "a"; "b"; "e" ] diff --git a/src/data/CCRAL.ml b/src/data/CCRAL.ml index 4783e3b4..e540b755 100644 --- a/src/data/CCRAL.ml +++ b/src/data/CCRAL.ml @@ -96,7 +96,7 @@ let tl l = match l with (*$Q Q.(list_of_size Gen.(1--100) int) (fun l -> \ let l' = of_list l in \ - (not (is_empty l')) ==> (equal l' (cons (hd l') (tl l'))) ) + (not (is_empty l')) ==> (equal ~eq:CCInt.equal l' (cons (hd l') (tl l'))) ) *) let front l = match l with @@ -389,7 +389,7 @@ let equal ~eq l1 l2 = (*$Q Q.(pair (list int)(list int)) (fun (l1,l2) -> \ - equal (of_list l1) (of_list l2) = (l1=l2)) + equal ~eq:CCInt.equal (of_list l1) (of_list l2) = (l1=l2)) *) (** {2 Utils} *) @@ -556,7 +556,7 @@ let compare ~cmp l1 l2 = (*$Q Q.(pair (list int)(list int)) (fun (l1,l2) -> \ - compare (of_list l1) (of_list l2) = (Pervasives.compare l1 l2)) + compare ~cmp:CCInt.compare (of_list l1) (of_list l2) = (Pervasives.compare l1 l2)) *) (** {2 Infix} *)