diff --git a/_oasis b/_oasis index a30d41c1..405d3e37 100644 --- a/_oasis +++ b/_oasis @@ -77,15 +77,15 @@ Library "containers_thread" XMETARequires: containers,threads,lwt Library "containers_lwt" - Path: . + Path: lwt Modules: Behavior, Lwt_automaton Pack: true FindlibName: lwt FindlibParent: containers - Build$: flag(lwt) - Install$: flag(lwt) - BuildDepends: containers,lwt,lwt.unix - XMETARequires: containers,lwt,lwt.unix + Build$: flag(lwt) && flag(misc) + Install$: flag(lwt) && flag(misc) + BuildDepends: containers,lwt,lwt.unix,containers.misc + XMETARequires: containers,lwt,lwt.unix,containers.misc Library "containers_cgi" Path: cgi @@ -137,6 +137,22 @@ Executable test_levenshtein MainIs: test_levenshtein.ml BuildDepends: containers,qcheck +Executable test_lwt + Path: tests/lwt/ + Install: false + CompiledObject: best + Build$: flag(tests) && flag(lwt) + MainIs: test_Behavior.ml + BuildDepends: containers,lwt,lwt.unix,oUnit,containers.lwt + +Executable test_threads + Path: tests/lwt/ + Install: false + CompiledObject: best + Build$: flag(tests) && flag(thread) + MainIs: test_Future.ml + BuildDepends: containers,threads,oUnit,containers.lwt + Test all Command: $run_tests TestTools: run_tests @@ -147,8 +163,8 @@ Executable run_tests Install: false CompiledObject: native MainIs: run_tests.ml - Build$: flag(tests) && flag(lwt) - BuildDepends: containers, oUnit, lwt, threads, lwt.unix + Build$: flag(tests) + BuildDepends: containers, oUnit Executable web_pwd Path: examples/cgi/ diff --git a/tests/helpers.ml b/tests/helpers.ml index d5eb690a..2da169d1 100644 --- a/tests/helpers.ml +++ b/tests/helpers.ml @@ -3,15 +3,11 @@ let print_int_list l = let b = Buffer.create 20 in - Format.bprintf b "@[[%a]@]" - (Sequence.pp_seq ~sep:", " Format.pp_print_int) - (Sequence.of_list l); + CCList.pp CCInt.pp b l; Buffer.contents b let print_int_int_list l = let printer fmt (i,j) = Format.fprintf fmt "%d, %d" i j in let b = Buffer.create 20 in - Format.bprintf b "@[[%a]@]" - (Sequence.pp_seq ~sep:", " printer) - (Sequence.of_list l); + CCList.pp (CCPair.pp CCInt.pp CCInt.pp) b l; Buffer.contents b diff --git a/tests/test_Behavior.ml b/tests/lwt/test_Behavior.ml similarity index 100% rename from tests/test_Behavior.ml rename to tests/lwt/test_Behavior.ml diff --git a/tests/run_tests.ml b/tests/run_tests.ml index 1fd4d89b..a1b8893d 100644 --- a/tests/run_tests.ml +++ b/tests/run_tests.ml @@ -8,7 +8,6 @@ let suite = Test_PersistentHashtbl.suite; Test_bencode.suite; Test_bv.suite; - Test_Behavior.suite; Test_PiCalculus.suite; Test_splayMap.suite; Test_bij.suite; @@ -24,7 +23,6 @@ let suite = Test_heap.suite; Test_graph.suite; Test_univ.suite; - Test_future.suite; ] let props = diff --git a/tests/test_PersistentHashtbl.ml b/tests/test_PersistentHashtbl.ml index feda17e6..4227103b 100644 --- a/tests/test_PersistentHashtbl.ml +++ b/tests/test_PersistentHashtbl.ml @@ -1,8 +1,8 @@ open OUnit -module H = PersistentHashtbl.Make(struct type t = int let equal = (=) let hash i = i end) -open Sequence.Infix +module H = CCPersistentHashtbl.Make(CCInt) +module Sequence = CCSequence let test_add () = let h = H.create 32 in @@ -50,7 +50,7 @@ let test_persistent () = let test_big () = let n = 10000 in - let seq = Sequence.map (fun i -> i, string_of_int i) (0--n) in + let seq = Sequence.map (fun i -> i, string_of_int i) Sequence.(0--n) in let h = H.of_seq seq in (* Format.printf "@[table:%a@]@." (Sequence.pp_seq diff --git a/tests/test_bij.ml b/tests/test_bij.ml index 593a3c29..90fb42ca 100644 --- a/tests/test_bij.ml +++ b/tests/test_bij.ml @@ -1,10 +1,11 @@ open OUnit +module Sequence = CCSequence + let pp_int_list l = let b = Buffer.create 4 in - Format.fprintf (Format.formatter_of_buffer b) "%a@?" - (Sequence.pp_seq Format.pp_print_int) (Sequence.of_list l); + CCList.pp CCInt.pp b l; Buffer.contents b let test_intlist n () = diff --git a/tests/test_bv.ml b/tests/test_bv.ml index e27d4304..d6909679 100644 --- a/tests/test_bv.ml +++ b/tests/test_bv.ml @@ -1,64 +1,66 @@ open OUnit +module Sequence = CCSequence + let test_cardinal () = - let bv1 = BV.create ~size:87 true in - assert_equal ~printer:string_of_int 87 (BV.cardinal bv1); + let bv1 = CCBV.create ~size:87 true in + assert_equal ~printer:string_of_int 87 (CCBV.cardinal bv1); () let test_get () = - let bv = BV.create ~size:99 false in - assert_bool "32 must be false" (not (BV.get bv 32)); - assert_bool "88 must be false" (not (BV.get bv 88)); - assert_bool "5 must be false" (not (BV.get bv 5)); - BV.set bv 32; - BV.set bv 88; - BV.set bv 5; - assert_bool "32 must be true" (BV.get bv 32); - assert_bool "88 must be true" (BV.get bv 88); - assert_bool "5 must be true" (BV.get bv 5); - assert_bool "33 must be false" (not (BV.get bv 33)); - assert_bool "44 must be false" (not (BV.get bv 44)); - assert_bool "1 must be false" (not (BV.get bv 1)); + let bv = CCBV.create ~size:99 false in + assert_bool "32 must be false" (not (CCBV.get bv 32)); + assert_bool "88 must be false" (not (CCBV.get bv 88)); + assert_bool "5 must be false" (not (CCBV.get bv 5)); + CCBV.set bv 32; + CCBV.set bv 88; + CCBV.set bv 5; + assert_bool "32 must be true" (CCBV.get bv 32); + assert_bool "88 must be true" (CCBV.get bv 88); + assert_bool "5 must be true" (CCBV.get bv 5); + assert_bool "33 must be false" (not (CCBV.get bv 33)); + assert_bool "44 must be false" (not (CCBV.get bv 44)); + assert_bool "1 must be false" (not (CCBV.get bv 1)); () let test_list () = - let bv = BV.of_list [1; 5; 156; 0; 222] in - assert_equal ~printer:string_of_int 5 (BV.cardinal bv); - BV.set bv 201; - assert_equal ~printer:string_of_int 6 (BV.cardinal bv); - let l = BV.to_list bv in + let bv = CCBV.of_list [1; 5; 156; 0; 222] in + assert_equal ~printer:string_of_int 5 (CCBV.cardinal bv); + CCBV.set bv 201; + assert_equal ~printer:string_of_int 6 (CCBV.cardinal bv); + let l = CCBV.to_list bv in let l = List.sort compare l in assert_equal [0;1;5;156;201;222] l; () let test_clear () = - let bv = BV.of_list [1; 5; 200] in - assert_equal ~printer:string_of_int 3 (BV.cardinal bv); - BV.clear bv; - assert_equal ~printer:string_of_int 0 (BV.cardinal bv); - assert_bool "must be empty" (BV.is_empty bv); + let bv = CCBV.of_list [1; 5; 200] in + assert_equal ~printer:string_of_int 3 (CCBV.cardinal bv); + CCBV.clear bv; + assert_equal ~printer:string_of_int 0 (CCBV.cardinal bv); + assert_bool "must be empty" (CCBV.is_empty bv); () let test_union () = - let bv1 = BV.of_list [1;2;3;4] in - let bv2 = BV.of_list [4;200;3] in - let bv = BV.union bv1 bv2 in - let l = List.sort compare (BV.to_list bv) in + let bv1 = CCBV.of_list [1;2;3;4] in + let bv2 = CCBV.of_list [4;200;3] in + let bv = CCBV.union bv1 bv2 in + let l = List.sort compare (CCBV.to_list bv) in assert_equal [1;2;3;4;200] l; () let test_inter () = - let bv1 = BV.of_list [1;2;3;4] in - let bv2 = BV.of_list [4;200;3] in - BV.inter_into ~into:bv1 bv2; - let l = List.sort compare (BV.to_list bv1) in + let bv1 = CCBV.of_list [1;2;3;4] in + let bv2 = CCBV.of_list [4;200;3] in + CCBV.inter_into ~into:bv1 bv2; + let l = List.sort compare (CCBV.to_list bv1) in assert_equal [3;4] l; () let test_select () = - let bv = BV.of_list [1;2;5;400] in + let bv = CCBV.of_list [1;2;5;400] in let arr = [|"a"; "b"; "c"; "d"; "e"; "f"|] in - let l = List.sort compare (BV.selecti bv arr) in + let l = List.sort compare (CCBV.selecti bv arr) in assert_equal [("b",1); ("c",2); ("f",5)] l; () @@ -76,21 +78,21 @@ open QCheck let check_create_cardinal = let gen = Arbitrary.small_int in - let prop n = BV.cardinal (BV.create ~size:n true) = n in + let prop n = CCBV.cardinal (CCBV.create ~size:n true) = n in let name = "bv_create_cardinal" in mk_test ~name ~pp:string_of_int gen prop -let pp bv = PP.(list string) (List.map string_of_int (BV.to_list bv)) +let pp bv = PP.(list string) (List.map string_of_int (CCBV.to_list bv)) let check_iter_true = - let gen = Arbitrary.(lift BV.of_list (list small_int)) in + let gen = Arbitrary.(lift CCBV.of_list (list small_int)) in let prop bv = - let l' = Sequence.to_rev_list (BV.iter_true bv) in - let bv' = BV.of_list l' in - BV.cardinal bv = BV.cardinal bv' + let l' = Sequence.to_rev_list (CCBV.iter_true bv) in + let bv' = CCBV.of_list l' in + CCBV.cardinal bv = CCBV.cardinal bv' in let name = "bv_iter_true" in - mk_test ~pp ~size:BV.cardinal ~name gen prop + mk_test ~pp ~size:CCBV.cardinal ~name gen prop let props = [ check_create_cardinal diff --git a/tests/test_deque.ml b/tests/test_deque.ml index be59c0a9..aecd15d1 100644 --- a/tests/test_deque.ml +++ b/tests/test_deque.ml @@ -1,17 +1,18 @@ open OUnit -open Sequence.Infix +module Deque = CCDeque +module Sequence = CCSequence -let plist l = Utils.sprintf "%a" (Sequence.pp_seq Format.pp_print_int) (Sequence.of_list l) +let plist l = CCPrint.to_string (CCList.pp CCInt.pp) l let pint i = string_of_int i let test_length () = - let d = Deque.of_seq (1 -- 10) in + let d = Deque.of_seq Sequence.(1 -- 10) in OUnit.assert_equal ~printer:pint 10 (Deque.length d) let test_front () = - let d = Deque.of_seq (1 -- 10) in + let d = Deque.of_seq Sequence.(1 -- 10) in let printer = pint in OUnit.assert_equal ~printer 1 (Deque.peek_front d); Deque.push_front d 42; @@ -24,7 +25,7 @@ let test_front () = () let test_back () = - let d = Deque.of_seq (1 -- 10) in + let d = Deque.of_seq Sequence.(1 -- 10) in let printer = pint in OUnit.assert_equal ~printer 1 (Deque.peek_front d); Deque.push_back d 42; @@ -37,7 +38,7 @@ let test_back () = () let test_iter () = - let d = Deque.of_seq (1 -- 5) in + let d = Deque.of_seq Sequence.(1 -- 5) in let s = Sequence.from_iter (fun k -> Deque.iter k d) in let l = Sequence.to_list s in OUnit.assert_equal ~printer:plist [1;2;3;4;5] l; diff --git a/tests/test_fHashtbl.ml b/tests/test_fHashtbl.ml index 4eced8ec..b45aec07 100644 --- a/tests/test_fHashtbl.ml +++ b/tests/test_fHashtbl.ml @@ -1,6 +1,8 @@ open OUnit +module Sequence = CCSequence + module Test(SomeHashtbl : FHashtbl.S with type key = int) = struct let test_add () = let h = SomeHashtbl.empty 32 in diff --git a/tests/test_fQueue.ml b/tests/test_fQueue.ml index c64cd5cb..a4c5c48a 100644 --- a/tests/test_fQueue.ml +++ b/tests/test_fQueue.ml @@ -1,6 +1,9 @@ open OUnit +module FQueue = CCFQueue +module Sequence = CCSequence + let test_empty () = let q = FQueue.empty in OUnit.assert_bool "is_empty" (FQueue.is_empty q) diff --git a/tests/test_flatHashtbl.ml b/tests/test_flatHashtbl.ml index e42f89c4..c88342f8 100644 --- a/tests/test_flatHashtbl.ml +++ b/tests/test_flatHashtbl.ml @@ -1,6 +1,8 @@ open OUnit +module Sequence = CCSequence + module IHashtbl = FlatHashtbl.Make(struct type t = int let equal i j = i = j diff --git a/tests/test_gen.ml b/tests/test_gen.ml index 7784e6b5..98b7e2fd 100644 --- a/tests/test_gen.ml +++ b/tests/test_gen.ml @@ -1,14 +1,14 @@ open OUnit -open Gen.Infix +module Gen = CCGen module GR = Gen.Restart let pint i = string_of_int i -let plist l = Utils.sprintf "%a" - (Sequence.pp_seq Format.pp_print_int) (Sequence.of_list l) -let pstrlist l = Utils.sprintf "%a" - (Sequence.pp_seq Format.pp_print_string) (Sequence.of_list l) +let plist l = + CCPrint.to_string (CCList.pp CCInt.pp) l +let pstrlist l = + CCPrint.to_string (CCList.pp Buffer.add_string) l let test_singleton () = let gen = Gen.singleton 42 in @@ -26,35 +26,35 @@ let test_iter () = () let test_map () = - let e = 1 -- 10 in + let e = Gen.(1 -- 10) in let e' = Gen.map string_of_int e in OUnit.assert_equal ~printer:pstrlist ["9"; "10"] (Gen.to_list (Gen.drop 8 e')); () let test_append () = - let e = Gen.append (1 -- 5) (6 -- 10) in + let e = Gen.append Gen.(1 -- 5) Gen.(6 -- 10) in OUnit.assert_equal [10;9;8;7;6;5;4;3;2;1] (Gen.to_rev_list e); () let test_flatMap () = - let e = 1 -- 3 in - let e' = e >>= (fun x -> x -- (x+1)) in + let e = Gen.(1 -- 3) in + let e' = Gen.(e >>= (fun x -> x -- (x+1))) in OUnit.assert_equal [1;2;2;3;3;4] (Gen.to_list e'); () let test_zip () = - let e = Gen.zipWith (+) (Gen.repeat 1) (4--7) in + let e = Gen.zip_with (+) (Gen.repeat 1) Gen.(4--7) in OUnit.assert_equal [5;6;7;8] (Gen.to_list e); () let test_filterMap () = let f x = if x mod 2 = 0 then Some (string_of_int x) else None in - let e = Gen.filterMap f (1 -- 10) in + let e = Gen.filter_map f Gen.(1 -- 10) in OUnit.assert_equal ["2"; "4"; "6"; "8"; "10"] (Gen.to_list e); () let test_merge () = - let e = Gen.of_list [1--3; 4--6; 7--9] in + let e = Gen.of_list [Gen.(1--3); Gen.(4--6); Gen.(7--9)] in let e' = Gen.merge e in OUnit.assert_equal [1;2;3;4;5;6;7;8;9] (Gen.to_list e' |> List.sort compare); () @@ -99,15 +99,16 @@ let test_interleave () = () let test_intersperse () = - let e = 1 -- 5 in + let e = Gen.(1 -- 5) in let e' = Gen.intersperse 0 e in OUnit.assert_equal [1;0;2;0;3;0;4;0;5] (Gen.to_list e'); () let test_product () = let printer = Helpers.print_int_int_list in - let e = Gen.product (1--3) (4--5) in - OUnit.assert_equal ~printer [1,4; 1,5; 2,4; 2,5; 3,4; 3,5] (List.sort compare (Gen.to_list e)); + let e = Gen.product Gen.(1--3) Gen.(4--5) in + OUnit.assert_equal ~printer [1,4; 1,5; 2,4; 2,5; 3,4; 3,5] + (List.sort compare (Gen.to_list e)); () let suite = diff --git a/tests/test_graph.ml b/tests/test_graph.ml index 82116451..bbedd709 100644 --- a/tests/test_graph.ml +++ b/tests/test_graph.ml @@ -4,6 +4,7 @@ open OUnit open Helpers +module Sequence = CCSequence module G = PersistentGraph (* build a graph from a list of pairs of ints *) @@ -65,11 +66,9 @@ let test_bfs () = let rec pp_path p = let buf = Buffer.create 10 in - Format.bprintf buf "%a" (Sequence.pp_seq ~sep:"; " pp_edge) - (Sequence.of_list p); - Buffer.contents buf -and pp_edge formatter (v1,e,v2) = - Format.fprintf formatter "%d -> %d" v1 v2 + CCPrint.to_string (CCList.pp ~sep:"; " pp_edge) p +and pp_edge b (v1,e,v2) = + Printf.bprintf b "%d -> %d" v1 v2 let test_dijkstra () = let g = mk_graph [0,1; 1,2; 2,3; 3,4; 3,0; 4,5; 1,5; 5,6; 4,6; 6,0] in diff --git a/tests/test_heap.ml b/tests/test_heap.ml index ba6b1878..daa120ba 100644 --- a/tests/test_heap.ml +++ b/tests/test_heap.ml @@ -2,6 +2,7 @@ open OUnit open Helpers +module Sequence = CCSequence let test_empty () = let h = Heap.empty ~cmp:(fun x y -> x - y) in diff --git a/tests/test_leftistheap.ml b/tests/test_leftistheap.ml index ee93eb56..2204ca8c 100644 --- a/tests/test_leftistheap.ml +++ b/tests/test_leftistheap.ml @@ -3,6 +3,9 @@ open OUnit +module Leftistheap = CCLeftistheap +module Sequence = CCSequence + let empty = Leftistheap.empty let test1 () = diff --git a/tests/test_pHashtbl.ml b/tests/test_pHashtbl.ml index 7b3823ce..2103eb69 100644 --- a/tests/test_pHashtbl.ml +++ b/tests/test_pHashtbl.ml @@ -1,6 +1,8 @@ open OUnit +module Sequence = CCSequence + let test_add () = let h = PHashtbl.create 5 in PHashtbl.replace h 42 "foo"; diff --git a/tests/test_splayMap.ml b/tests/test_splayMap.ml index d71523c8..2bd33c91 100644 --- a/tests/test_splayMap.ml +++ b/tests/test_splayMap.ml @@ -1,6 +1,8 @@ open OUnit +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 diff --git a/tests/test_vector.ml b/tests/test_vector.ml index f3798bbd..a72d02eb 100644 --- a/tests/test_vector.ml +++ b/tests/test_vector.ml @@ -1,10 +1,11 @@ open OUnit -open Sequence.Infix +module Vector = CCVector +module Sequence = CCSequence let test_clear () = - let v = Vector.of_seq (1 -- 10) in + let v = Vector.of_seq Sequence.(1 -- 10) in OUnit.assert_equal 10 (Vector.size v); Vector.clear v; OUnit.assert_equal 0 (Vector.size v); @@ -12,16 +13,16 @@ let test_clear () = () let test_append () = - let a = Vector.of_seq (1 -- 5) in - let b = Vector.of_seq (6 -- 10) in + let a = Vector.of_seq Sequence.(1 -- 5) in + let b = Vector.of_seq Sequence.(6 -- 10) in Vector.append a b; OUnit.assert_equal 10 (Vector.size a); - OUnit.assert_equal (Sequence.to_array (1 -- 10)) (Vector.to_array a); - OUnit.assert_equal (Sequence.to_array (6 -- 10)) (Vector.to_array b); + OUnit.assert_equal (Sequence.to_array Sequence.(1 -- 10)) (Vector.to_array a); + OUnit.assert_equal (Sequence.to_array Sequence.(6 -- 10)) (Vector.to_array b); () let test_copy () = - let v = Vector.of_seq (1 -- 100) in + let v = Vector.of_seq Sequence.(1 -- 100) in OUnit.assert_equal 100 (Vector.size v); let v' = Vector.copy v in OUnit.assert_equal 100 (Vector.size v'); @@ -31,7 +32,7 @@ let test_copy () = () let test_shrink () = - let v = Vector.of_seq (1 -- 10) in + let v = Vector.of_seq Sequence.(1 -- 10) in Vector.shrink v 5; OUnit.assert_equal [1;2;3;4;5] (Vector.to_list v); () diff --git a/tests/test_future.ml b/tests/threads/test_future.ml similarity index 100% rename from tests/test_future.ml rename to tests/threads/test_future.ml