blob: 344db980c88beeb9f57f3ed79c26eda88915fcd0 [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
if (this.WScript && this.WScript.LoadScriptFile) { // Check for running in ch
this.WScript.LoadScriptFile("..\\UnitTestFramework\\UnitTestFramework.js");
}
var tests = [
{
name: "Increment BigInt literal",
body: function () {
var x = 123n;
assert.isTrue(x == 123n);
x++;
assert.isTrue(x == 124n);
++x;
assert.isTrue(x == 125n);
}
},
{
name: "Increment negative BigInt literal",
body: function () {
var x = -123n;
assert.isTrue(x == -123n);
x++;
assert.isTrue(x == -122n);
++x;
assert.isTrue(x == -121n);
}
},
{
name: "Increment -1n",
body: function () {
var x = -1n;
assert.isTrue(x == -1n);
x++;
assert.isTrue(x == 0n);
++x;
assert.isTrue(x == 1n);
}
},
{
name: "Increment to change length",
body: function () {
var x = 4294967295n;
assert.isTrue(x == 4294967295n);
x++;
assert.isTrue(x == 4294967296n);
++x;
assert.isTrue(x == 4294967297n);
var y = -4294967297n;
assert.isTrue(y == -4294967297n);
y++;
assert.isTrue(y == -4294967296n);
++y;
assert.isTrue(y == -4294967295n);
}
},
{
name: "Increment BigInt Object",
body: function () {
var x = BigInt(12345678901234567890n);
var y = BigInt(12345678901234567891n);
assert.isTrue(x < y);
++x;
assert.isTrue(x == y);
x++;
assert.isTrue(x >= y);
}
},
{
name: "Out of 64 bit range",
body: function () {
var x = 1234567890123456789012345678901234567890n;
var y = BigInt(1234567890123456789012345678901234567891n);
assert.isFalse(x == y);
x++;
++y;
assert.isTrue(x < y);
++x;
assert.isTrue(x == y);
}
},
{
name: "Very big",
body: function () {
var x = eval('1234567890'.repeat(20)+'0n');
var y = BigInt(eval('1234567890'.repeat(20)+'1n'));
assert.isFalse(x == y);
x++;
++y;
assert.isTrue(x < y);
++x;
assert.isTrue(x == y);
}
},
{
name: "With assign",
body: function () {
var x = 3n;
var y = x++;
assert.isTrue(x == 4n);
assert.isTrue(y == 3n);
y = ++x;
assert.isTrue(x == 5n);
assert.isTrue(y == 5n);
}
},
];
testRunner.runTests(tests, { verbose: WScript.Arguments[0] != "summary" });