34 lines
1.4 KiB
JavaScript
34 lines
1.4 KiB
JavaScript
"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);
|
|
}
|