mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
7079158d29
PR-URL: https://github.com/nodejs/node/pull/46385 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
53 lines
1.2 KiB
JavaScript
53 lines
1.2 KiB
JavaScript
'use strict';
|
|
const common = require('../../common');
|
|
const assert = require('assert');
|
|
const {
|
|
IsLossless,
|
|
TestInt64,
|
|
TestUint64,
|
|
TestWords,
|
|
CreateTooBigBigInt,
|
|
MakeBigIntWordsThrow,
|
|
} = require(`./build/${common.buildType}/test_bigint`);
|
|
|
|
[
|
|
0n,
|
|
-0n,
|
|
1n,
|
|
-1n,
|
|
100n,
|
|
2121n,
|
|
-1233n,
|
|
986583n,
|
|
-976675n,
|
|
98765432213456789876546896323445679887645323232436587988766545658n,
|
|
-4350987086545760976737453646576078997096876957864353245245769809n,
|
|
].forEach((num) => {
|
|
if (num > -(2n ** 63n) && num < 2n ** 63n) {
|
|
assert.strictEqual(TestInt64(num), num);
|
|
assert.strictEqual(IsLossless(num, true), true);
|
|
} else {
|
|
assert.strictEqual(IsLossless(num, true), false);
|
|
}
|
|
|
|
if (num >= 0 && num < 2n ** 64n) {
|
|
assert.strictEqual(TestUint64(num), num);
|
|
assert.strictEqual(IsLossless(num, false), true);
|
|
} else {
|
|
assert.strictEqual(IsLossless(num, false), false);
|
|
}
|
|
|
|
assert.strictEqual(num, TestWords(num));
|
|
});
|
|
|
|
assert.throws(() => CreateTooBigBigInt(), {
|
|
name: 'Error',
|
|
message: 'Invalid argument',
|
|
});
|
|
|
|
// Test that we correctly forward exceptions from the engine.
|
|
assert.throws(() => MakeBigIntWordsThrow(), {
|
|
name: 'RangeError',
|
|
message: 'Maximum BigInt size exceeded',
|
|
});
|