//@ 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");

