|
|
"use strict"; |
|
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
|
exports.bigInt = bigInt; |
|
|
const globals_1 = require("../utils/globals"); |
|
|
const BigIntArbitrary_1 = require("./_internals/BigIntArbitrary"); |
|
|
function buildCompleteBigIntConstraints(constraints) { |
|
|
const DefaultPow = 256; |
|
|
const DefaultMin = (0, globals_1.BigInt)(-1) << (0, globals_1.BigInt)(DefaultPow - 1); |
|
|
const DefaultMax = ((0, globals_1.BigInt)(1) << (0, globals_1.BigInt)(DefaultPow - 1)) - (0, globals_1.BigInt)(1); |
|
|
const min = constraints.min; |
|
|
const max = constraints.max; |
|
|
return { |
|
|
min: min !== undefined ? min : DefaultMin - (max !== undefined && max < (0, globals_1.BigInt)(0) ? max * max : (0, globals_1.BigInt)(0)), |
|
|
max: max !== undefined ? max : DefaultMax + (min !== undefined && min > (0, globals_1.BigInt)(0) ? min * min : (0, globals_1.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_1.BigIntArbitrary(constraints.min, constraints.max); |
|
|
} |
|
|
|