diff --git a/.github/workflows/common.yml b/.github/workflows/common.yml index f5d6e5930..d32659a68 100644 --- a/.github/workflows/common.yml +++ b/.github/workflows/common.yml @@ -87,7 +87,7 @@ jobs: uses: actions/checkout@v6 with: repository: c-cube/qcheck - ref: v0.26 + ref: v0.90 path: multicoretests/qcheck - name: Pre-Setup diff --git a/CHANGES.md b/CHANGES.md index caaf52bfb..580207c7c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,7 +2,8 @@ ## NEXT RELEASE -- ... +- #578: Port libraries and test suite to qcheck-core.0.90, + incl. adjusting the `Lin.int_small` distribution to include negative numbers. ## 0.11 diff --git a/doc/example/stm_tests.ml b/doc/example/stm_tests.ml index 104c05fd0..539d1377a 100644 --- a/doc/example/stm_tests.ml +++ b/doc/example/stm_tests.ml @@ -21,7 +21,7 @@ struct let char = if s=[] then Gen.printable - else Gen.(oneof [oneofl (List.map fst s); printable]) in + else Gen.(oneof [oneof_list (List.map fst s); printable]) in let int = Gen.nat in QCheck.make ~print:show_cmd (Gen.oneof diff --git a/doc/paper-examples/stm_tests.ml b/doc/paper-examples/stm_tests.ml index 73c1cd1f8..707cd59c4 100644 --- a/doc/paper-examples/stm_tests.ml +++ b/doc/paper-examples/stm_tests.ml @@ -23,7 +23,7 @@ struct let char = if s=[] then Gen.printable - else Gen.(oneof [oneofl (List.map fst s); printable]) in + else Gen.(oneof [oneof_list (List.map fst s); printable]) in let int = Gen.nat in QCheck.make ~print:show_cmd (Gen.oneof diff --git a/doc/stm/mutable_set_v5.ml b/doc/stm/mutable_set_v5.ml index 5b523a69b..65b4560e1 100644 --- a/doc/stm/mutable_set_v5.ml +++ b/doc/stm/mutable_set_v5.ml @@ -113,7 +113,7 @@ module Lib_spec : Spec = struct let gen = match state with | [] -> Gen.int - | xs -> Gen.(oneof [oneofl xs; int]) + | xs -> Gen.(oneof [oneof_list xs; int]) in QCheck.make ~print:show_cmd (QCheck.Gen.oneof diff --git a/dune-project b/dune-project index 4ce6e7140..7643327b0 100644 --- a/dune-project +++ b/dune-project @@ -18,7 +18,7 @@ the multicore run-time of OCaml 5.0.") (tags ("test" "test suite" "property" "qcheck" "quickcheck" "multicore" "non-determinism")) (depends base-domains - (qcheck-core (>= "0.25")) + (qcheck-core (>= "0.90")) (qcheck-lin (= :version)) (qcheck-stm (= :version)))) @@ -32,7 +32,7 @@ sequential and parallel tests against a declarative model.") (depopts base-domains) (depends (ocaml (>= 4.12)) - (qcheck-core (>= "0.25")) + (qcheck-core (>= "0.90")) (qcheck-multicoretests-util (= :version)))) (package @@ -47,7 +47,7 @@ and explained by some sequential interleaving.") (depopts base-domains) (depends (ocaml (>= 4.12)) - (qcheck-core (>= "0.25")) + (qcheck-core (>= "0.90")) (qcheck-multicoretests-util (= :version)))) (package @@ -58,4 +58,4 @@ multicore programs.") (tags ("test" "property" "qcheck" "quickcheck" "multicore" "non-determinism")) (depends (ocaml (>= 4.12)) - (qcheck-core (>= "0.25")))) + (qcheck-core (>= "0.90")))) diff --git a/lib/lin.ml b/lib/lin.ml index 3ac9a785f..6d7db1c23 100644 --- a/lib/lin.ml +++ b/lib/lin.ml @@ -157,7 +157,7 @@ let gen gen print = Gen (gen,print) let deconstructible print eq = Deconstr (print,eq) let gen_deconstructible gen print eq = GenDeconstr (gen,print,eq) -let qcheck_nat64_small = QCheck.(map Int64.of_int small_nat) +let qcheck_nat64_small = QCheck.(map Int64.of_int nat_small) (* QCheck's string shrinker reduces each char repeatedly which is too excessive for Lin *) let shrink_char c = QCheck.(if c = 'a' then Iter.empty else Iter.return 'a') @@ -165,8 +165,9 @@ let shrink_string = QCheck.Shrink.string ~shrink:shrink_char let shrink_bytes = QCheck.Shrink.bytes ~shrink:shrink_char let string = QCheck.(set_shrink shrink_string string) -let string_small = QCheck.(set_shrink shrink_string small_string) -let string_small_printable = QCheck.(set_shrink shrink_string small_printable_string) +let string_small = QCheck.(set_shrink shrink_string string_small) +let string_small_printable = QCheck.(set_shrink shrink_string (string_size_of Gen.nat_small + Gen.char_printable)) let bytes = QCheck.(set_shrink shrink_bytes bytes) let bytes_small = QCheck.(set_shrink shrink_bytes bytes_small) @@ -175,11 +176,11 @@ let bytes_small_printable = QCheck.(set_shrink shrink_bytes (bytes_small_of Gen. let unit = GenDeconstr (QCheck.unit, QCheck.Print.unit, (=)) let bool = GenDeconstr (QCheck.bool, QCheck.Print.bool, (=)) let char = GenDeconstr (QCheck.char, QCheck.Print.char, (=)) -let char_printable = GenDeconstr (QCheck.printable_char, QCheck.Print.char, (=)) -let nat_small = GenDeconstr (QCheck.small_nat, QCheck.Print.int, (=)) +let char_printable = GenDeconstr (QCheck.char_printable, QCheck.Print.char, (=)) +let nat_small = GenDeconstr (QCheck.nat_small, QCheck.Print.int, (=)) let int = GenDeconstr (QCheck.int, QCheck.Print.int, (=)) -let int_small = GenDeconstr (QCheck.small_int, QCheck.Print.int, (=)) -let int_pos = GenDeconstr (QCheck.pos_int, QCheck.Print.int, (=)) +let int_small = GenDeconstr (QCheck.int_small, QCheck.Print.int, (=)) +let int_pos = GenDeconstr (QCheck.int_pos, QCheck.Print.int, (=)) let int_bound b = GenDeconstr (QCheck.int_bound b, QCheck.Print.int, (=)) let int32 = GenDeconstr (QCheck.int32, QCheck.Print.int32, Int32.equal) let int64 = GenDeconstr (QCheck.int64, QCheck.Print.int64, Int64.equal) @@ -208,8 +209,8 @@ let list : type a c s. (a, c, s, combinable) ty -> (a list, c, s, combinable) ty let list_small : type a c s. (a, c, s, combinable) ty -> (a list, c, s, combinable) ty = fun ty -> match ty with - | Gen (arb, print) -> Gen (QCheck.small_list arb, QCheck.Print.list print) - | GenDeconstr (arb, print, eq) -> GenDeconstr (QCheck.small_list arb, QCheck.Print.list print, List.equal eq) + | Gen (arb, print) -> Gen (QCheck.list_small arb, QCheck.Print.list print) + | GenDeconstr (arb, print, eq) -> GenDeconstr (QCheck.list_small arb, QCheck.Print.list print, List.equal eq) | Deconstr (print, eq) -> Deconstr (QCheck.Print.list print, List.equal eq) let array : type a c s. (a, c, s, combinable) ty -> (a array, c, s, combinable) ty = @@ -220,8 +221,8 @@ let array : type a c s. (a, c, s, combinable) ty -> (a array, c, s, combinable) let array_small : type a c s. (a, c, s, combinable) ty -> (a array, c, s, combinable) ty = fun ty -> match ty with - | Gen (arb, print) -> Gen (QCheck.array_of_size QCheck.Gen.small_nat arb, QCheck.Print.array print) - | GenDeconstr (arb, print, eq) -> GenDeconstr (QCheck.array_of_size QCheck.Gen.small_nat arb, QCheck.Print.array print, Array.for_all2 eq) + | Gen (arb, print) -> Gen (QCheck.array_small arb, QCheck.Print.array print) + | GenDeconstr (arb, print, eq) -> GenDeconstr (QCheck.array_small arb, QCheck.Print.array print, Array.for_all2 eq) | Deconstr (print, eq) -> Deconstr (QCheck.Print.array print, Array.for_all2 eq) let seq_iteri f s = @@ -259,8 +260,8 @@ let seq : type a c s. (a, c, s, combinable) ty -> (a Seq.t, c, s, combinable) ty let seq_small : type a c s. (a, c, s, combinable) ty -> (a Seq.t, c, s, combinable) ty = fun ty -> match ty with - | Gen (arb, print) -> Gen (arb_seq QCheck.Gen.small_nat arb, print_seq print) - | GenDeconstr (arb, print, eq) -> GenDeconstr (arb_seq QCheck.Gen.small_nat arb, print_seq print, seq_equal eq) + | Gen (arb, print) -> Gen (arb_seq QCheck.Gen.nat_small arb, print_seq print) + | GenDeconstr (arb, print, eq) -> GenDeconstr (arb_seq QCheck.Gen.nat_small arb, print_seq print, seq_equal eq) | Deconstr (print, eq) -> Deconstr (print_seq print, seq_equal eq) let state = State @@ -441,7 +442,7 @@ module MakeCmd (ApiSpec : Spec) : Internal.CmdSpec with type t = ApiSpec.t = str let shrink = gen_shrinker_of_desc fdesc in return (Cmd { name ; args ; rty ; print ; shrink ; f }))) ApiSpec.api - let gen_cmd : cmd QCheck.Gen.t = QCheck.Gen.frequency api + let gen_cmd : cmd QCheck.Gen.t = QCheck.Gen.oneof_weighted api let show_cmd (Cmd { args ; print ; _ }) = print args diff --git a/lib/lin_effect.ml b/lib/lin_effect.ml index 40c75680c..428ec17fa 100644 --- a/lib/lin_effect.ml +++ b/lib/lin_effect.ml @@ -52,7 +52,7 @@ module Make_internal (Spec : Internal.CmdSpec [@alert "-internal"]) = struct | UserCmd c -> Spec.show_cmd c let gen_cmd = - (Gen.frequency + (Gen.oneof_weighted [(3,Gen.return SchedYield); (5,Gen.map (fun c -> UserCmd c) Spec.gen_cmd)]) diff --git a/multicoretests.opam b/multicoretests.opam index 7554cfd42..ae6d53573 100644 --- a/multicoretests.opam +++ b/multicoretests.opam @@ -22,7 +22,7 @@ bug-reports: "https://github.com/ocaml-multicore/multicoretests/issues" depends: [ "dune" {>= "3.18"} "base-domains" - "qcheck-core" {>= "0.25"} + "qcheck-core" {>= "0.90"} "qcheck-lin" {= version} "qcheck-stm" {= version} "odoc" {with-doc} diff --git a/qcheck-lin.opam b/qcheck-lin.opam index 44634612b..6cdcd7f4c 100644 --- a/qcheck-lin.opam +++ b/qcheck-lin.opam @@ -23,7 +23,7 @@ bug-reports: "https://github.com/ocaml-multicore/multicoretests/issues" depends: [ "dune" {>= "3.18"} "ocaml" {>= "4.12"} - "qcheck-core" {>= "0.25"} + "qcheck-core" {>= "0.90"} "qcheck-multicoretests-util" {= version} "odoc" {with-doc} ] diff --git a/qcheck-multicoretests-util.opam b/qcheck-multicoretests-util.opam index 836a5401c..42f13bf0c 100644 --- a/qcheck-multicoretests-util.opam +++ b/qcheck-multicoretests-util.opam @@ -15,7 +15,7 @@ bug-reports: "https://github.com/ocaml-multicore/multicoretests/issues" depends: [ "dune" {>= "3.18"} "ocaml" {>= "4.12"} - "qcheck-core" {>= "0.25"} + "qcheck-core" {>= "0.90"} "odoc" {with-doc} ] build: [ diff --git a/qcheck-stm.opam b/qcheck-stm.opam index b8b4d4054..ffbff6ae0 100644 --- a/qcheck-stm.opam +++ b/qcheck-stm.opam @@ -23,7 +23,7 @@ bug-reports: "https://github.com/ocaml-multicore/multicoretests/issues" depends: [ "dune" {>= "3.18"} "ocaml" {>= "4.12"} - "qcheck-core" {>= "0.25"} + "qcheck-core" {>= "0.90"} "qcheck-multicoretests-util" {= version} "odoc" {with-doc} ] diff --git a/src/array/lin_internal_tests.ml b/src/array/lin_internal_tests.ml index 6b992eeb2..5ab386feb 100644 --- a/src/array/lin_internal_tests.ml +++ b/src/array/lin_internal_tests.ml @@ -37,7 +37,7 @@ struct let gen_cmd = let open QCheck.Gen in - let int = small_nat and char = printable in + let int = nat_small and char = printable in oneof [ pure Length; diff --git a/src/array/stm_tests.ml b/src/array/stm_tests.ml index 638cd0620..754b16b99 100644 --- a/src/array/stm_tests.ml +++ b/src/array/stm_tests.ml @@ -54,8 +54,8 @@ struct let power_of_2s = Array.init 63 (fun i -> 1 lsl i) let arb_cmd s = - let int_gen = Gen.(frequency [1,small_nat; 5,int_bound (List.length s - 1)]) in - let elem_gen = Gen.oneofa power_of_2s in + let int_gen = Gen.(oneof_weighted [1,nat_small; 5,int_bound (List.length s - 1)]) in + let elem_gen = Gen.oneof_array power_of_2s in QCheck.make ~print:show_cmd (*~shrink:shrink_cmd*) Gen.(oneof [ return Length; diff --git a/src/bigarray/stm_tests.ml b/src/bigarray/stm_tests.ml index c2f8bd2be..57e7e9c84 100644 --- a/src/bigarray/stm_tests.ml +++ b/src/bigarray/stm_tests.ml @@ -29,7 +29,7 @@ struct type sut = (int, int_elt, c_layout) Array1.t let arb_cmd s = - let int_gen = Gen.(oneof [small_nat; int_bound (List.length s - 1)]) in + let int_gen = Gen.(oneof [nat_small; int_bound (List.length s - 1)]) in QCheck.make ~print:show_cmd (*~shrink:shrink_cmd*) Gen.(oneof [ return Size_in_bytes; diff --git a/src/buffer/stm_tests.ml b/src/buffer/stm_tests.ml index 44abe42ff..818db054f 100644 --- a/src/buffer/stm_tests.ml +++ b/src/buffer/stm_tests.ml @@ -47,7 +47,7 @@ struct | _ -> Iter.empty let arb_cmd s = - let int_gen,string_gen = Gen.(small_nat,small_string) in + let int_gen,string_gen = Gen.(nat_small,string_small) in QCheck.make ~print:show_cmd (*~shrink:shrink_cmd*) Gen.(oneof [return Contents; return To_bytes; diff --git a/src/bytes/stm_tests.ml b/src/bytes/stm_tests.ml index 9f081b29d..eb1116ed6 100644 --- a/src/bytes/stm_tests.ml +++ b/src/bytes/stm_tests.ml @@ -50,7 +50,7 @@ struct | _ -> Iter.empty let arb_cmd s = - let int_gen = Gen.(oneof [small_nat; int_bound (List.length s - 1)]) in + let int_gen = Gen.(oneof [nat_small; int_bound (List.length s - 1)]) in let char_gen = Gen.printable in QCheck.make ~print:show_cmd ~shrink:shrink_cmd Gen.(oneof diff --git a/src/domain/domain_spawntree.ml b/src/domain/domain_spawntree.ml index c711d1cc9..df03c56f4 100644 --- a/src/domain/domain_spawntree.ml +++ b/src/domain/domain_spawntree.ml @@ -41,11 +41,11 @@ let gen max_height max_degree = let degree_gen = Gen.int_bound max_degree in Gen.sized_size height_gen @@ Gen.fix (fun rgen n -> match n with - | 0 -> Gen.oneofl [Incr;Decr] + | 0 -> Gen.oneof_list [Incr;Decr] | _ -> Gen.oneof [ - Gen.oneofl [Incr;Decr]; + Gen.oneof_list [Incr;Decr]; Gen.map (fun ls -> Spawn ls) (Gen.list_size degree_gen (rgen (n-1))) ]) diff --git a/src/domain/stm_tests_dls.ml b/src/domain/stm_tests_dls.ml index 46cc230d5..44270c328 100644 --- a/src/domain/stm_tests_dls.ml +++ b/src/domain/stm_tests_dls.ml @@ -26,7 +26,7 @@ struct let arb_cmd _s = let index = Gen.int_bound (length-1) in - let int_gen = Gen.small_nat in + let int_gen = Gen.nat_small in QCheck.make ~print:show_cmd Gen.(oneof [ map (fun i -> Get i) index; diff --git a/src/dynarray/stm_tests.ml b/src/dynarray/stm_tests.ml index c252e59a3..2e7fee529 100644 --- a/src/dynarray/stm_tests.ml +++ b/src/dynarray/stm_tests.ml @@ -184,14 +184,14 @@ module Dynarray_spec (Elem : Elem) = struct let open Gen in let arr_idx state = map (fun i -> I i) (int_bound (List.length state - 1)) in let elem = Elem.arb.gen in - let array elm_gen = Gen.array_size small_nat elm_gen in - let list elm_gen = Gen.list_size small_nat elm_gen in + let array elm_gen = Gen.array_small elm_gen in + let list elm_gen = Gen.list_small elm_gen in QCheck.make ~print:show_cmd ~shrink:shrink_cmd - (frequency + (oneof_weighted [ 5, return Create; - 5, map2 (fun l x -> Make (l, x)) small_nat elem; - 50, map2 (fun arr_idx elem_idx -> Get (arr_idx, elem_idx)) (arr_idx state) small_nat; - 50, map3 (fun arr_idx elem_idx x -> Set (arr_idx, elem_idx, x)) (arr_idx state) small_nat elem; + 5, map2 (fun l x -> Make (l, x)) nat_small elem; + 50, map2 (fun arr_idx elem_idx -> Get (arr_idx, elem_idx)) (arr_idx state) nat_small; + 50, map3 (fun arr_idx elem_idx x -> Set (arr_idx, elem_idx, x)) (arr_idx state) nat_small elem; 50, map (fun i -> Is_empty i) (arr_idx state); 50, map (fun i -> Length i) (arr_idx state); 50, map (fun i -> Get_last i) (arr_idx state); @@ -228,7 +228,7 @@ module Dynarray_spec (Elem : Elem) = struct 50, map (fun i -> To_seq_rev_reentrant i) (arr_idx state); 50, map (fun i -> Capacity i) (arr_idx state); 50, map2 (fun i cap -> Ensure_capacity (i, cap)) (arr_idx state) nat; - 50, map2 (fun i extra_cap -> Ensure_extra_capacity (i, extra_cap)) (arr_idx state) small_nat; + 50, map2 (fun i extra_cap -> Ensure_extra_capacity (i, extra_cap)) (arr_idx state) nat_small; 50, map (fun i -> Fit_capacity i) (arr_idx state); 50, map2 (fun arr_i cap -> Set_capacity (arr_i, cap)) (arr_idx state) nat; 33, map (fun arr_i -> Reset arr_i) (arr_idx state); @@ -619,7 +619,7 @@ end module Int : Elem = struct type t = int - let arb = QCheck.small_int + let arb = QCheck.nat_small let pp = Format.pp_print_int let equal = Int.equal let show = snd STM.int diff --git a/src/dynlink/lin_tests.ml b/src/dynlink/lin_tests.ml index dd676f37f..74e195db3 100644 --- a/src/dynlink/lin_tests.ml +++ b/src/dynlink/lin_tests.ml @@ -5,7 +5,7 @@ open Lin (* Two libraries that should exist, one that should not *) -let library_name = QCheck.Gen.oneofl ["libA.cma"; "libB.cma"; "libC.cma"] +let library_name = QCheck.Gen.oneof_list ["libA.cma"; "libB.cma"; "libC.cma"] let arb_library = QCheck.make library_name let print_library l = QCheck.Print.string (Dynlink.adapt_filename l) diff --git a/src/ephemeron/stm_tests_spec.ml b/src/ephemeron/stm_tests_spec.ml index 4e89c0812..1805d0116 100644 --- a/src/ephemeron/stm_tests_spec.ml +++ b/src/ephemeron/stm_tests_spec.ml @@ -86,11 +86,11 @@ let cleanup _ = () let arb_cmd s = let key = if s = [] - then Gen.(map Int64.of_int small_int) - else Gen.(oneof [oneofl (List.map fst s); map Int64.of_int small_int]) in - let data = Gen.(map Int64.of_int small_int) in + then Gen.(map Int64.of_int nat_small) + else Gen.(oneof [oneof_list (List.map fst s); map Int64.of_int nat_small]) in + let data = Gen.(map Int64.of_int nat_small) in QCheck.make ~print:show_cmd - Gen.(frequency + Gen.(oneof_weighted [ 1,return Clear; 2,map2 (fun k v -> Add (k, v)) key data; 2,map (fun k -> Remove k) key; diff --git a/src/floatarray/stm_tests.ml b/src/floatarray/stm_tests.ml index 54ab257ba..ba13d7cdf 100644 --- a/src/floatarray/stm_tests.ml +++ b/src/floatarray/stm_tests.ml @@ -38,7 +38,7 @@ struct type sut = Float.Array.t let arb_cmd s = - let int_gen = Gen.(frequency [ (1,small_nat); + let int_gen = Gen.(oneof_weighted [ (1,nat_small); (7,int_bound (List.length s - 1)); ]) in let float_gen = Gen.float in QCheck.make ~print:show_cmd (*~shrink:shrink_cmd*) diff --git a/src/gc/stm_tests_spec.ml b/src/gc/stm_tests_spec.ml index 4bbbb697f..16939ffd6 100644 --- a/src/gc/stm_tests_spec.ml +++ b/src/gc/stm_tests_spec.ml @@ -163,7 +163,7 @@ let init_state = let array_length = 8 let alloc_cmds = - let int_gen = Gen.small_nat in + let int_gen = Gen.nat_small in let str_len_gen = Gen.(map (fun shift -> 1 lsl (shift-1)) (int_bound 14)) in (*[-1;13] ~ [0;1;...4096;8196] *) let str_gen = Gen.map (fun l -> String.make l 'x') str_len_gen in let list_gen = Gen.map (fun l -> List.init l (fun _ -> 'l')) Gen.nat in @@ -226,9 +226,9 @@ let gc_cmds = else [1,Gen.return Compact]) @ alloc_cmds -let arb_cmd _s = QCheck.make ~print:show_cmd (Gen.frequency gc_cmds) +let arb_cmd _s = QCheck.make ~print:show_cmd (Gen.oneof_weighted gc_cmds) -let arb_alloc_cmd _s = QCheck.make ~print:show_cmd (Gen.frequency alloc_cmds) +let arb_alloc_cmd _s = QCheck.make ~print:show_cmd (Gen.oneof_weighted alloc_cmds) let next_state n s = match n with | Stat -> s diff --git a/src/hashtbl/stm_tests.ml b/src/hashtbl/stm_tests.ml index 31747c4c3..cf44387e0 100644 --- a/src/hashtbl/stm_tests.ml +++ b/src/hashtbl/stm_tests.ml @@ -67,7 +67,7 @@ struct let char = if s=[] then Gen.printable - else Gen.(oneof [oneofl (List.map fst s); printable]) in + else Gen.(oneof [oneof_list (List.map fst s); printable]) in let int = Gen.nat in QCheck.make ~print:show_cmd (Gen.oneof diff --git a/src/io/lin_internal_tests.ml b/src/io/lin_internal_tests.ml index 09a3262ec..f55ffccbc 100644 --- a/src/io/lin_internal_tests.ml +++ b/src/io/lin_internal_tests.ml @@ -25,10 +25,10 @@ module In_channel_ops = struct let gen_cmd = let open QCheck.Gen in - frequency + oneof_weighted [1, return Close; - 6, map (fun l -> Read l) small_nat; - 6, map (fun l -> BlindRead l) small_nat; + 6, map (fun l -> Read l) nat_small; + 6, map (fun l -> BlindRead l) nat_small; ] let shrink_cmd _ = QCheck.Iter.empty @@ -95,8 +95,8 @@ module Out_channel_ops = struct let gen_cmd = let open QCheck.Gen in - frequency - [10, map (fun i -> Seek (Int64.of_int i)) small_nat; + oneof_weighted + [10, map (fun i -> Seek (Int64.of_int i)) nat_small; 10, return Close; 10, return Flush; 10, map (fun s -> Output_string s) string_small; diff --git a/src/io/lin_tests_spec_io.ml b/src/io/lin_tests_spec_io.ml index 6e023be38..ff604b4b5 100644 --- a/src/io/lin_tests_spec_io.ml +++ b/src/io/lin_tests_spec_io.ml @@ -31,7 +31,7 @@ module ICConf : Lin.Spec = struct let open QCheck in let zeroed_bytes n = Bytes.make n '\000' in let shrink b = Iter.map zeroed_bytes (Shrink.int (Bytes.length b)) - and gen = Gen.map zeroed_bytes Gen.small_nat in + and gen = Gen.map zeroed_bytes Gen.nat_small in let bytes = make ~shrink ~small:Bytes.length ~print:Print.bytes gen in gen_deconstructible bytes (print Lin.bytes) Bytes.equal diff --git a/src/io/stm_tests.ml b/src/io/stm_tests.ml index a2545b95e..affea59d5 100644 --- a/src/io/stm_tests.ml +++ b/src/io/stm_tests.ml @@ -57,15 +57,15 @@ struct binary_mode : bool; } let arb_cmd s = - let int64_gen = Gen.(map Int64.of_int small_int) in + let int64_gen = Gen.(map Int64.of_int nat_small) in let char_gen = Gen.printable in - let byte_gen = Gen.small_int in - let string_gen = Gen.small_string in + let byte_gen = Gen.nat_small in + let string_gen = Gen.string_small in let bytes_gen = Gen.bytes_small in QCheck.make ~print:show_cmd (*~shrink:shrink_cmd*) (match s with | Closed -> - Gen.(frequency [ (* generate only Open or Close cmds in Closed *) + Gen.(oneof_weighted [ (* generate only Open or Close cmds in Closed *) 20,return Open_text; 1,map (fun i -> Seek i) int64_gen; 1,return Pos; @@ -84,7 +84,7 @@ struct 1,return Is_buffered; ]) | Open _ -> - Gen.(frequency [ + Gen.(oneof_weighted [ (*1,return Open_text;*) 3,map (fun i -> Seek i) int64_gen; 3,return Pos; diff --git a/src/lazy/lin_internal_tests.ml b/src/lazy/lin_internal_tests.ml index 90da3ef93..bad73816a 100644 --- a/src/lazy/lin_internal_tests.ml +++ b/src/lazy/lin_internal_tests.ml @@ -54,7 +54,7 @@ struct let gen_cmd = let open QCheck.Gen in - let int_fun = (fun1 Observable.int QCheck.small_nat).gen in + let int_fun = (fun1 Observable.int QCheck.nat_small).gen in oneof [ pure Force; diff --git a/src/lazy/stm_tests.ml b/src/lazy/stm_tests.ml index 8d86669f6..766346456 100644 --- a/src/lazy/stm_tests.ml +++ b/src/lazy/stm_tests.ml @@ -55,7 +55,7 @@ struct type sut = int Lazy.t let arb_cmd _s = - let int' = small_nat in + let int' = nat_small in QCheck.make ~print:show_cmd (Gen.oneof [Gen.return Force; diff --git a/src/neg_tests/stm_tests_clist_spec.ml b/src/neg_tests/stm_tests_clist_spec.ml index e6089e3c4..c61b35f47 100644 --- a/src/neg_tests/stm_tests_clist_spec.ml +++ b/src/neg_tests/stm_tests_clist_spec.ml @@ -33,7 +33,7 @@ struct let mem_gen = if s=[] then int_gen - else Gen.oneof [int_gen; Gen.oneofl s] + else Gen.oneof [int_gen; Gen.oneof_list s] in QCheck.make ~print:show_cmd (Gen.oneof diff --git a/src/queue/lin_internal_tests.ml b/src/queue/lin_internal_tests.ml index 56d722e0c..6226e99c4 100644 --- a/src/queue/lin_internal_tests.ml +++ b/src/queue/lin_internal_tests.ml @@ -36,7 +36,7 @@ module Spec = let gen_cmd = let open QCheck.Gen in let int = nat - and fct = (fun2 Observable.int Observable.int QCheck.small_int).gen in + and fct = (fun2 Observable.int Observable.int QCheck.nat_small).gen in oneof [ map (fun x -> Add x) int; diff --git a/src/semaphore/stm_tests_binary.ml b/src/semaphore/stm_tests_binary.ml index a4a45e499..81d632cb8 100644 --- a/src/semaphore/stm_tests_binary.ml +++ b/src/semaphore/stm_tests_binary.ml @@ -38,7 +38,7 @@ module SBConf = let arb_cmd s = let cmds = [ Release; TryAcquire; ] in let cmds = if s = 1 then Acquire :: cmds else cmds in - QCheck.make ~print:show_cmd (Gen.oneofl cmds) + QCheck.make ~print:show_cmd (Gen.oneof_list cmds) let next_state c s = match c with | Release -> 1 diff --git a/src/semaphore/stm_tests_counting.ml b/src/semaphore/stm_tests_counting.ml index efee0356e..85b85bbeb 100644 --- a/src/semaphore/stm_tests_counting.ml +++ b/src/semaphore/stm_tests_counting.ml @@ -44,7 +44,7 @@ module SCConf = let arb_cmd s = let cmds = [ Release; TryAcquire; GetValue ] in let cmds = if s > 0 then Acquire :: cmds else cmds in - QCheck.make ~print:show_cmd (Gen.oneofl cmds) + QCheck.make ~print:show_cmd (Gen.oneof_list cmds) let next_state c s = match c with | Release -> s+1 @@ -79,7 +79,7 @@ module SCTest_dom = STM_domain.Make(struct let arb_cmd s = let cmds = [ Release; TryAcquire; ] in (* No GetValue *) let cmds = if s > 0 then Acquire :: cmds else cmds in - QCheck.make ~print:show_cmd (Gen.oneofl cmds) + QCheck.make ~print:show_cmd (Gen.oneof_list cmds) end) let _ = diff --git a/src/stack/lin_internal_tests.ml b/src/stack/lin_internal_tests.ml index 6f3fb55ad..382269788 100644 --- a/src/stack/lin_internal_tests.ml +++ b/src/stack/lin_internal_tests.ml @@ -36,7 +36,7 @@ module Spec = let gen_cmd = let open QCheck.Gen in let int = nat - and fct = (fun2 Observable.int Observable.int QCheck.small_int).gen in + and fct = (fun2 Observable.int Observable.int QCheck.nat_small).gen in oneof [ map (fun x -> Push x) int; diff --git a/src/sys/stm_tests.ml b/src/sys/stm_tests.ml index 72ae3b807..76f0a698d 100644 --- a/src/sys/stm_tests.ml +++ b/src/sys/stm_tests.ml @@ -45,7 +45,7 @@ struct | Directory d -> (match Map_names.bindings d.fs_map with | [] -> Gen.return [] - | bindings -> Gen.(oneofl bindings >>= fun (n, sub_fs) -> + | bindings -> Gen.(oneof_list bindings >>= fun (n, sub_fs) -> Gen.oneof [ Gen.return [n]; Gen.map (fun l -> n::l) (gen_existing_path sub_fs)] @@ -59,7 +59,7 @@ struct (match Map_names.bindings d.fs_map with | [] -> Gen.return None | bindings -> - Gen.(oneofl bindings >>= fun (n, sub_fs) -> + Gen.(oneof_list bindings >>= fun (n, sub_fs) -> oneof [ return (Some ([],n)); map (function None -> Some ([],n) @@ -67,7 +67,7 @@ struct ) ) - let name_gen = Gen.oneofl ["aaa" ; "bbb" ; "ccc" ; "ddd" ; "eee"] + let name_gen = Gen.oneof_list ["aaa" ; "bbb" ; "ccc" ; "ddd" ; "eee"] let path_gen s = Gen.(oneof [gen_existing_path s; list_size (int_bound 5) name_gen]) (* can be empty *) let pair_gen s = let fresh_pair_gen = Gen.(pair (list_size (int_bound 5) name_gen)) name_gen in diff --git a/src/thread/thread_createtree.ml b/src/thread/thread_createtree.ml index bd3fe216d..60e2765d4 100644 --- a/src/thread/thread_createtree.ml +++ b/src/thread/thread_createtree.ml @@ -41,11 +41,11 @@ let gen max_height max_degree = let degree_gen = Gen.int_bound max_degree in Gen.sized_size height_gen @@ Gen.fix (fun rgen n -> match n with - | 0 -> Gen.oneofl [Incr;Decr] + | 0 -> Gen.oneof_list [Incr;Decr] | _ -> Gen.oneof [ - Gen.oneofl [Incr;Decr]; + Gen.oneof_list [Incr;Decr]; Gen.map (fun ls -> Create ls) (Gen.list_size degree_gen (rgen (n-1))) ]) diff --git a/src/thread/thread_joingraph.ml b/src/thread/thread_joingraph.ml index 50b6e85df..af61aecfc 100644 --- a/src/thread/thread_joingraph.ml +++ b/src/thread/thread_joingraph.ml @@ -143,7 +143,7 @@ let build_dep_graph test_input = let test_arb_work ~thread_bound = Test.make ~name:"Thread.create/join" ~count:100 - (arb_deps (Gen.frequencyl [(10,Atomic_incr); + (arb_deps (Gen.oneof_list_weighted [(10,Atomic_incr); (10,Tak); (1,Gc_minor)]) thread_bound) (fun test_input -> diff --git a/src/threadomain/threadomain.ml b/src/threadomain/threadomain.ml index bb154e4e5..fc2d08ea0 100644 --- a/src/threadomain/threadomain.ml +++ b/src/threadomain/threadomain.ml @@ -4,7 +4,7 @@ open QCheck2 domain or a thread *) (** Generate a permutation of [0..sz-1] *) -let permutation sz = Gen.shuffle_a (Array.init sz (fun x -> x)) +let permutation sz = Gen.shuffle_array (Array.init sz (fun x -> x)) (** Generate a tree of size nodes The tree is represented as an array [a] of integers, [a.(i)] being @@ -97,7 +97,7 @@ let gen_spawn_join sz = let open Gen in build_spawn_join sz <$> tree sz <*> permutation sz <*> tree sz - <*> array_size (pure sz) (frequencyl [(4, false); (1, true)]) + <*> array_size (pure sz) (oneof_list_weighted [(4, false); (1, true)]) <*> array_size (pure sz) worktype type handle = diff --git a/src/weak/stm_tests_hashset_spec.ml b/src/weak/stm_tests_hashset_spec.ml index 90a1f0b57..655cd6c9b 100644 --- a/src/weak/stm_tests_hashset_spec.ml +++ b/src/weak/stm_tests_hashset_spec.ml @@ -58,9 +58,9 @@ let arb_cmd s = let string_gen = Gen.(string_small_of printable) in let data_gen = match s with | [] -> string_gen - | _::_ -> Gen.(oneof [oneofl s; string_gen]) in + | _::_ -> Gen.(oneof [oneof_list s; string_gen]) in QCheck.make ~print:show_cmd (*~shrink:shrink_cmd*) - Gen.(frequency + Gen.(oneof_weighted [ 1,return Clear; 2,map (fun d -> Merge d) data_gen; 2,map (fun d -> Add d) data_gen; diff --git a/src/weak/stm_tests_weak_spec.ml b/src/weak/stm_tests_weak_spec.ml index 755526fbe..8c81a7433 100644 --- a/src/weak/stm_tests_weak_spec.ml +++ b/src/weak/stm_tests_weak_spec.ml @@ -40,10 +40,10 @@ let _shrink_cmd c = match c with map (fun j -> Fill (i,j,d_opt)) (Shrink.int j)) let arb_cmd s = - let int_gen = Gen.(oneof [small_nat; int_bound (List.length s - 1)]) in + let int_gen = Gen.(oneof [nat_small; int_bound (List.length s - 1)]) in let data_gen = Gen.(string_small_of printable) in QCheck.make ~print:show_cmd (*~shrink:shrink_cmd*) - Gen.(frequency + Gen.(oneof_weighted [ 1,return Length; 1,map2 (fun i d_opt -> Set (i,d_opt)) int_gen (option data_gen); 2,map (fun i -> Get i) int_gen; diff --git a/test/mutable_set_v5.ml b/test/mutable_set_v5.ml index 16512417c..64ec4f1d7 100644 --- a/test/mutable_set_v5.ml +++ b/test/mutable_set_v5.ml @@ -119,7 +119,7 @@ module Lib_spec : Spec = struct let gen = match state with | [] -> Gen.int - | xs -> Gen.(oneof [oneofl xs; int]) + | xs -> Gen.(oneof [oneof_list xs; int]) in QCheck.make ~print:show_cmd (QCheck.Gen.oneof