fast-check
Version:
Property based testing framework for JavaScript (like QuickCheck)
41 lines (40 loc) • 1.42 kB
JavaScript
import { RunExecution } from './reporter/RunExecution.js';
export class RunnerIterator {
constructor(sourceValues, verbose, interruptedAsFailure) {
this.sourceValues = sourceValues;
this.runExecution = new RunExecution(verbose, interruptedAsFailure);
this.currentIdx = -1;
this.nextValues = sourceValues;
}
[Symbol.iterator]() {
return this;
}
next(value) {
const nextValue = this.nextValues.next();
if (nextValue.done || this.runExecution.interrupted) {
return { done: true, value };
}
this.currentShrinkable = nextValue.value;
++this.currentIdx;
return { done: false, value: nextValue.value.value_ };
}
handleResult(result) {
if (result != null && typeof result === 'string') {
this.runExecution.fail(this.currentShrinkable.value_, this.currentIdx, result);
this.currentIdx = -1;
this.nextValues = this.currentShrinkable.shrink();
}
else if (result != null) {
if (!result.interruptExecution) {
this.runExecution.skip(this.currentShrinkable.value_);
this.sourceValues.skippedOne();
}
else {
this.runExecution.interrupt();
}
}
else {
this.runExecution.success(this.currentShrinkable.value_);
}
}
}