Skip to content

Commit

Permalink
Factor exp_dist_gen into two combinators
Browse files Browse the repository at this point in the history
  • Loading branch information
jmid committed Sep 17, 2024
1 parent bdd363a commit a661f27
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions lib/STM.ml
Original file line number Diff line number Diff line change
Expand Up @@ -159,14 +159,17 @@ struct

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

let exp_dist_gen =
let mean = 10. in
let skew = 0.75 in (* to avoid too many empty cmd lists *)
let exp_dist_gen mean =
let unit_gen = Gen.float_bound_inclusive 1.0 in
Gen.map (fun p -> int_of_float (-. (mean *. (log p)) +. skew)) unit_gen
Gen.map (fun p -> -. mean *. (log p)) unit_gen

let cmd_list_size_dist mean =
let skew = 0.75 in (* to avoid too many empty cmd lists *)
Gen.map (fun p -> int_of_float (p +. skew)) (exp_dist_gen mean)

let arb_cmds s =
let cmds_gen = gen_cmds_size Spec.arb_cmd s exp_dist_gen in
let mean = 10. in (* generate on average ~10 cmds, ignoring skew *)
let cmds_gen = gen_cmds_size Spec.arb_cmd s (cmd_list_size_dist mean) in
let shrinker = shrink_list ?shrink:(Spec.arb_cmd s).shrink in (* pass opt. elem. shrinker *)
let ac = QCheck.make ~shrink:(Shrink.filter (cmds_ok Spec.init_state) shrinker) cmds_gen in
(match (Spec.arb_cmd s).print with
Expand Down

0 comments on commit a661f27

Please sign in to comment.