fast-check
Version:
Property based testing framework for JavaScript (like QuickCheck)
30 lines (29 loc) • 1.32 kB
JavaScript
import { SkipAfterProperty } from '../property/SkipAfterProperty.js';
import { TimeoutProperty } from '../property/TimeoutProperty.js';
import { UnbiasedProperty } from '../property/UnbiasedProperty.js';
import { IgnoreEqualValuesProperty } from '../property/IgnoreEqualValuesProperty.js';
const safeDateNow = Date.now;
const safeSetTimeout = setTimeout;
const safeClearTimeout = clearTimeout;
export function decorateProperty(rawProperty, qParams) {
let prop = rawProperty;
if (rawProperty.isAsync() && qParams.timeout !== undefined) {
prop = new TimeoutProperty(prop, qParams.timeout, safeSetTimeout, safeClearTimeout);
}
if (qParams.unbiased) {
prop = new UnbiasedProperty(prop);
}
if (qParams.skipAllAfterTimeLimit !== undefined) {
prop = new SkipAfterProperty(prop, safeDateNow, qParams.skipAllAfterTimeLimit, false, safeSetTimeout, safeClearTimeout);
}
if (qParams.interruptAfterTimeLimit !== undefined) {
prop = new SkipAfterProperty(prop, safeDateNow, qParams.interruptAfterTimeLimit, true, safeSetTimeout, safeClearTimeout);
}
if (qParams.skipEqualValues) {
prop = new IgnoreEqualValuesProperty(prop, true);
}
if (qParams.ignoreEqualValues) {
prop = new IgnoreEqualValuesProperty(prop, false);
}
return prop;
}