UNPKG

fast-check

Version:

Property based testing framework for JavaScript (like QuickCheck)

26 lines (25 loc) 977 B
import { array } from '../array.js'; import { tuple } from '../tuple.js'; import { constant } from '../constant.js'; import { safeFlat, Error as SError } from '../../utils/globals.js'; function canHaveAtLeastOneItem(keys, constraints) { for (const key of keys) { const constraintsOnKey = constraints[key] || {}; if (constraintsOnKey.maxLength === undefined || constraintsOnKey.maxLength > 0) { return true; } } return false; } export function initialPoolForEntityGraph(keys, constraints) { if (keys.length === 0) { return constant([]); } if (!canHaveAtLeastOneItem(keys, constraints)) { throw new SError('Contraints on pool must accept at least one entity, maxLength cannot sum to 0'); } const arbitraries = keys.map((key) => array(constant(key), constraints[key])); return (tuple(...arbitraries) .map((values) => safeFlat(values)) .filter((names) => names.length > 0)); }