//------------------------------------------------------------------------------------------------------- | |
// 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: "Decrement BigInt literal", | |
body: function () { | |
var x = 123n; | |
assert.isTrue(x == 123n); | |
x--; | |
assert.isTrue(x == 122n); | |
--x; | |
assert.isTrue(x == 121n); | |
} | |
}, | |
{ | |
name: "Decrement negative BigInt literal", | |
body: function () { | |
var x = -123n; | |
assert.isTrue(x == -123n); | |
x--; | |
assert.isTrue(x == -124n); | |
--x; | |
assert.isTrue(x == -125n); | |
} | |
}, | |
{ | |
name: "Decrement 0n", | |
body: function () { | |
var x = 0n; | |
assert.isTrue(x == 0n); | |
x--; | |
assert.isTrue(x == -1n); | |
--x; | |
assert.isTrue(x == -2n); | |
} | |
}, | |
{ | |
name: "Decrement to change length", | |
body: function () { | |
var x = 4294967296n; | |
assert.isTrue(x == 4294967296n); | |
x--; | |
assert.isTrue(x == 4294967295n); | |
--x; | |
assert.isTrue(x == 4294967294n); | |
var y = -4294967295n; | |
assert.isTrue(y == -4294967295n); | |
y--; | |
assert.isTrue(y == -4294967296n); | |
--y; | |
assert.isTrue(y == -4294967297n); | |
} | |
}, | |
{ | |
name: "Decrement BigInt Object", | |
body: function () { | |
var x = BigInt(12345678901234567890n); | |
var y = BigInt(12345678901234567891n); | |
assert.isTrue(x < y); | |
--y; | |
assert.isTrue(x == y); | |
y--; | |
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); | |
--y; | |
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); | |
--y; | |
assert.isTrue(x == y); | |
} | |
}, | |
{ | |
name: "With assign", | |
body: function () { | |
var x = 3n; | |
var y = x--; | |
assert.isTrue(x == 2n); | |
assert.isTrue(y == 3n); | |
y = --x; | |
assert.isTrue(x == 1n); | |
assert.isTrue(y == 1n); | |
} | |
}, | |
]; | |
testRunner.runTests(tests, { verbose: WScript.Arguments[0] != "summary" }); |