fast-check
Version:
Property based testing framework for JavaScript (like QuickCheck)
29 lines (28 loc) • 927 B
JavaScript
import { Arbitrary } from '../../check/arbitrary/definition/Arbitrary.js';
import { Value } from '../../check/arbitrary/definition/Value.js';
import { Stream } from '../../stream/Stream.js';
import { SchedulerImplem } from './implementations/SchedulerImplem.js';
function buildNextTaskIndex(mrng) {
const clonedMrng = mrng.clone();
return {
clone: () => buildNextTaskIndex(clonedMrng),
nextTaskIndex: (scheduledTasks) => {
return mrng.nextInt(0, scheduledTasks.length - 1);
},
};
}
export class SchedulerArbitrary extends Arbitrary {
constructor(act) {
super();
this.act = act;
}
generate(mrng, _biasFactor) {
return new Value(new SchedulerImplem(this.act, buildNextTaskIndex(mrng.clone())), undefined);
}
canShrinkWithoutContext(value) {
return false;
}
shrink(_value, _context) {
return Stream.nil();
}
}