Skip to content

Commit a661f27

Browse files
committed
Factor exp_dist_gen into two combinators
1 parent bdd363a commit a661f27

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

lib/STM.ml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -159,14 +159,17 @@ struct
159159

160160
let gen_cmds_size gen s size_gen = Gen.sized_size size_gen (gen_cmds gen s)
161161

162-
let exp_dist_gen =
163-
let mean = 10. in
164-
let skew = 0.75 in (* to avoid too many empty cmd lists *)
162+
let exp_dist_gen mean =
165163
let unit_gen = Gen.float_bound_inclusive 1.0 in
166-
Gen.map (fun p -> int_of_float (-. (mean *. (log p)) +. skew)) unit_gen
164+
Gen.map (fun p -> -. mean *. (log p)) unit_gen
165+
166+
let cmd_list_size_dist mean =
167+
let skew = 0.75 in (* to avoid too many empty cmd lists *)
168+
Gen.map (fun p -> int_of_float (p +. skew)) (exp_dist_gen mean)
167169

168170
let arb_cmds s =
169-
let cmds_gen = gen_cmds_size Spec.arb_cmd s exp_dist_gen in
171+
let mean = 10. in (* generate on average ~10 cmds, ignoring skew *)
172+
let cmds_gen = gen_cmds_size Spec.arb_cmd s (cmd_list_size_dist mean) in
170173
let shrinker = shrink_list ?shrink:(Spec.arb_cmd s).shrink in (* pass opt. elem. shrinker *)
171174
let ac = QCheck.make ~shrink:(Shrink.filter (cmds_ok Spec.init_state) shrinker) cmds_gen in
172175
(match (Spec.arb_cmd s).print with

0 commit comments

Comments
 (0)