mirror of
https://github.com/tc39/test262.git
synced 2025-05-03 14:30:27 +02:00
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
125 lines
5.0 KiB
JavaScript
125 lines
5.0 KiB
JavaScript
//@ runBigIntEnabled
|
|
|
|
function assert(a, e, m) {
|
|
if (a !== e)
|
|
throw new Error(m);
|
|
}
|
|
|
|
function testEquals(a, b, e) {
|
|
assert(a == b, e, a + " == " + b + " should be " + e);
|
|
assert(b == a, e, b + " == " + a + " should be " + e);
|
|
}
|
|
|
|
function testEqualsWithMessage(a, b, e, m) {
|
|
assert(a == b, e, m);
|
|
assert(b == a, e, m);
|
|
}
|
|
|
|
// BigInt - BigInt
|
|
testEquals(1n, 1n, true);
|
|
testEquals(1928392129312n, 1n, false);
|
|
testEquals(0n, 1n, false);
|
|
testEquals(0n, 0n, true);
|
|
testEquals(817283912931n, 817283912931n, true);
|
|
testEquals(0xFFD817283AF9129E31n, 0xFFD817283AF9129E31n, true);
|
|
testEquals(0xAFFD817283AF9129E31n, 0xFFD817283AF9129E31n, false);
|
|
testEquals(4719490697266344402481n, BigInt("-4719490697266344402481"), false);
|
|
testEquals(BigInt("-4719490697266344402481"), BigInt("4719490697266344402481"), false);
|
|
testEquals(BigInt("-4719490697266344402481"), BigInt("-4719490697266344402481"), true);
|
|
testEquals(BigInt("-17"), BigInt("-17"), true);
|
|
|
|
// BigInt - String
|
|
|
|
testEquals(1n, "1", true);
|
|
testEquals(1928392129312n, "1", false);
|
|
testEquals(0n, "1", false);
|
|
testEquals(0n, "0", true);
|
|
testEquals(817283912931n, "817283912931", true);
|
|
testEquals(0xFFD817283AF9129E31n, "4719490697266344402481", true);
|
|
testEquals(0xAFFD817283AF9129E31n, "4719490697266344402481", false);
|
|
|
|
// BigInt - Number
|
|
|
|
testEquals(0n, 0, true);
|
|
testEquals(0n, -0, true);
|
|
testEquals(-0, 0n, true);
|
|
testEquals(0n, 0.000000000001, false);
|
|
testEquals(0n, 1, false);
|
|
testEquals(1, 0n, false);
|
|
testEquals(1n, 0.999999999999, false);
|
|
testEquals(1n, 1, true);
|
|
testEquals(0n, Number.MIN_VALUE, false);
|
|
testEquals(0n, -Number.MIN_VALUE, false);
|
|
testEquals(BigInt("-10"), Number.MIN_VALUE, false);
|
|
testEquals(1n, Number.MAX_VALUE, false);
|
|
testEquals(1n, -Number.MAX_VALUE, false);
|
|
testEquals(0xfffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn, Number.MAX_VALUE, false);
|
|
testEquals(0xfffffffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000n, Number.MAX_VALUE, true);
|
|
testEquals(0xfffffffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001n, Number.MAX_VALUE, false);
|
|
testEquals(230000000000000000000, 230000000000000000000n, true);
|
|
testEquals(10n, NaN, false);
|
|
testEquals(10n, undefined, false);
|
|
testEquals(10n, null, false);
|
|
testEquals(10n, Infinity, false);
|
|
testEquals(10n, -Infinity, false);
|
|
testEquals(BigInt("-2147483648"), -2147483648, true); // Testing INT32_MIN
|
|
testEquals(BigInt("-2147483647"), -2147483648, false);
|
|
testEquals(BigInt("2147483647"), -2147483648, false);
|
|
testEquals(BigInt("2147483648"), -2147483648, false);
|
|
testEquals(BigInt("2147483647"), 2147483647, true);
|
|
testEquals(BigInt("2147483648"), 2147483647, false);
|
|
|
|
// BigInt - Boolean
|
|
|
|
testEquals(BigInt("-1"), false, false);
|
|
testEquals(BigInt("-1"), true, false);
|
|
testEquals(0n, false, true);
|
|
testEquals(0n, true, false);
|
|
testEquals(1n, false, false);
|
|
testEquals(1n, true, true);
|
|
testEquals(2n, false, false);
|
|
testEquals(2n, true, false);
|
|
|
|
// BigInt - Object
|
|
|
|
testEquals(0n, Object(0n), true);
|
|
testEquals(0n, Object(1n), false);
|
|
testEquals(1n, Object(0n), false);
|
|
testEquals(1n, Object(1n), true);
|
|
testEquals(2n, Object(0n), false);
|
|
testEquals(2n, Object(1n), false);
|
|
testEquals(2n, Object(2n), true);
|
|
testEquals(0n, {}, false);
|
|
testEquals(0n, {valueOf: function() { return 0n; }}, true);
|
|
testEquals(0n, {valueOf: function() { return 1n; }}, false);
|
|
testEquals(0n, {toString: function() { return "0"; }}, true);
|
|
testEquals(0n, {toString: function() { return "1"; }}, false);
|
|
testEquals(900719925474099101n, {valueOf: function() { return 900719925474099101n; }}, true);
|
|
testEquals(900719925474099101n, {valueOf: function() { return 900719925474099102n; }}, false);
|
|
testEquals(900719925474099101n, {toString: function() { return "900719925474099101"; }}, true);
|
|
testEquals(900719925474099101n, {toString: function() { return "900719925474099102"; }}, false);
|
|
|
|
try {
|
|
let o = {valueOf: function() { throw new Error("my error"); }};
|
|
o == 1n;
|
|
throw new Error("Exception in ToPrimitive not catched");
|
|
} catch(e) {
|
|
assert(e.message, "my error", "Wrong exception in ToPrimitive");
|
|
}
|
|
|
|
try {
|
|
let o = {toString: function() { throw new Error("my error"); }};
|
|
o == 1n;
|
|
throw new Error("Exception in ToString not catched");
|
|
} catch(e) {
|
|
assert(e.message, "my error", "Wrong exception in ToString");
|
|
}
|
|
|
|
// BigInt - Symbol
|
|
|
|
testEqualsWithMessage(0n, Symbol("1"), false, "0n == Symbol(1)");
|
|
testEqualsWithMessage(Symbol("1"), 0n, false, "Symbol(1) == 0n");
|
|
testEqualsWithMessage(1n, Symbol("1"), false, "1n == Symbol(1)");
|
|
testEqualsWithMessage(Symbol("1"), 1n, false, "Symbol(1) == 1n");
|
|
|