fast-check
Version:
Property based testing framework for JavaScript (like QuickCheck)
38 lines (37 loc) • 1.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.memo = exports.MemoArbitrary = void 0;
const Arbitrary_1 = require("./definition/Arbitrary");
class MemoArbitrary extends Arbitrary_1.Arbitrary {
constructor(underlying) {
super();
this.underlying = underlying;
this.lastFreq = -1;
this.lastBiased = this;
}
generate(mrng) {
return this.underlying.generate(mrng);
}
withBias(freq) {
if (freq !== this.lastFreq) {
this.lastFreq = freq;
this.lastBiased = this.underlying.withBias(freq);
}
return this.lastBiased;
}
}
exports.MemoArbitrary = MemoArbitrary;
let contextRemainingDepth = 10;
exports.memo = (builder) => {
const previous = {};
return ((maxDepth) => {
const n = maxDepth !== undefined ? maxDepth : contextRemainingDepth;
if (!Object.prototype.hasOwnProperty.call(previous, n)) {
const prev = contextRemainingDepth;
contextRemainingDepth = n - 1;
previous[n] = new MemoArbitrary(builder(n));
contextRemainingDepth = prev;
}
return previous[n];
});
};