fast-check
Version:
Property based testing framework for JavaScript (like QuickCheck)
47 lines (46 loc) • 1.75 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.RunnerIterator = void 0;
const PreconditionFailure_1 = require("../precondition/PreconditionFailure");
const RunExecution_1 = require("./reporter/RunExecution");
class RunnerIterator {
constructor(sourceValues, shrink, verbose, interruptedAsFailure) {
this.sourceValues = sourceValues;
this.shrink = shrink;
this.runExecution = new RunExecution_1.RunExecution(verbose, interruptedAsFailure);
this.currentIdx = -1;
this.nextValues = sourceValues;
}
[Symbol.iterator]() {
return this;
}
next() {
const nextValue = this.nextValues.next();
if (nextValue.done || this.runExecution.interrupted) {
return { done: true, value: undefined };
}
this.currentValue = nextValue.value;
++this.currentIdx;
return { done: false, value: nextValue.value.value_ };
}
handleResult(result) {
if (result != null && typeof result === 'object' && !PreconditionFailure_1.PreconditionFailure.isFailure(result)) {
this.runExecution.fail(this.currentValue.value_, this.currentIdx, result);
this.currentIdx = -1;
this.nextValues = this.shrink(this.currentValue);
}
else if (result != null) {
if (!result.interruptExecution) {
this.runExecution.skip(this.currentValue.value_);
this.sourceValues.skippedOne();
}
else {
this.runExecution.interrupt();
}
}
else {
this.runExecution.success(this.currentValue.value_);
}
}
}
exports.RunnerIterator = RunnerIterator;