//@ runBigIntEnabled | |
assert = { | |
sameValue: function (input, expected, message) { | |
if (input !== expected) | |
throw new Error(message); | |
} | |
}; | |
function testEquals(x, y, z, message) { | |
assert.sameValue(x == y, z, message); | |
assert.sameValue(y == x, z, message); | |
} | |
testEquals(Object(2n), 1n, false, "ToPrimitive: unbox object with internal slot"); | |
let o = { | |
[Symbol.toPrimitive]: function() { | |
return 1n; | |
} | |
}; | |
testEquals(o, 1n, true, "ToPrimitive: @@toPrimitive"); | |
o = { | |
valueOf: function() { | |
return 2n; | |
} | |
}; | |
testEquals(o, 2n, true, "ToPrimitive: valueOf"); | |
o = { | |
toString: function() { | |
return 2n; | |
} | |
} | |
testEquals(o, 1n, false, "ToPrimitive: toString"); | |