UNPKG

fast-check

Version:

Property based testing framework for JavaScript (like QuickCheck)

32 lines (31 loc) 1.24 kB
import { BigInt } from '../utils/globals.js'; import { BigIntArbitrary } from './_internals/BigIntArbitrary.js'; function buildCompleteBigIntConstraints(constraints) { const DefaultPow = 256; const DefaultMin = BigInt(-1) << BigInt(DefaultPow - 1); const DefaultMax = (BigInt(1) << BigInt(DefaultPow - 1)) - BigInt(1); const min = constraints.min; const max = constraints.max; return { min: min !== undefined ? min : DefaultMin - (max !== undefined && max < BigInt(0) ? max * max : BigInt(0)), max: max !== undefined ? max : DefaultMax + (min !== undefined && min > BigInt(0) ? min * min : BigInt(0)), }; } function extractBigIntConstraints(args) { if (args[0] === undefined) { return {}; } if (args[1] === undefined) { const constraints = args[0]; return constraints; } return { min: args[0], max: args[1] }; } function bigInt(...args) { const constraints = buildCompleteBigIntConstraints(extractBigIntConstraints(args)); if (constraints.min > constraints.max) { throw new Error('fc.bigInt expects max to be greater than or equal to min'); } return new BigIntArbitrary(constraints.min, constraints.max); } export { bigInt };