Skip to content

Commit

Permalink
Only biased 1 entry over freq for ArrayArbitrary
Browse files Browse the repository at this point in the history
  • Loading branch information
dubzzz committed May 10, 2018
1 parent 84a60d0 commit 0ccbeb2
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions src/check/arbitrary/ArrayArbitrary.ts
Expand Up @@ -48,8 +48,9 @@ class ArrayArbitrary<T> extends Arbitrary<T[]> {
);
}
withBias(freq: number) {
const arb = new ArrayArbitrary(this.arb.withBias(freq), this.minLength, this.maxLength, this.preFilter);
const biasedArb =
const arb = this;
const lowBiasedarb = new ArrayArbitrary(this.arb.withBias(freq), this.minLength, this.maxLength, this.preFilter);
const highBiasedArb =
this.minLength !== this.maxLength
? new ArrayArbitrary(
this.arb.withBias(freq),
Expand All @@ -60,7 +61,14 @@ class ArrayArbitrary<T> extends Arbitrary<T[]> {
: new ArrayArbitrary(this.arb.withBias(freq), this.minLength, this.maxLength, this.preFilter);
return new class extends Arbitrary<T[]> {
generate(mrng: Random) {
return mrng.nextInt(1, freq) === 1 ? biasedArb.generate(mrng) : arb.generate(mrng);
switch (mrng.nextInt(1, 2 * freq)) {
case 1:
return highBiasedArb.generate(mrng);
case 2:
return lowBiasedarb.generate(mrng);
default:
return arb.generate(mrng);
}
}
}();
}
Expand Down

0 comments on commit 0ccbeb2

Please sign in to comment.