| //@ runBigIntEnabled |
| |
| function assert(v, e, m) { |
| if (v !== e) |
| throw new Error(m); |
| } |
| |
| assert(Object(2n) < 1n, false, "Object(2n) < 1n"); |
| assert(1n < Object(2n), true, "1n < Object(2n)"); |
| assert(Object(2n) < Object(1n), false, "Object(2n) < Object(1n)"); |
| assert(Object(1n) < Object(2n), true, "Object(1n) < Object(2n)"); |
| |
| let o = { |
| [Symbol.toPrimitive]: function() { |
| return 2n; |
| } |
| } |
| |
| let o2 = { |
| [Symbol.toPrimitive]: function() { |
| return 1n; |
| } |
| } |
| |
| assert(o < 1n, false, "ToPrimitive(2n) < 1n"); |
| assert(1n < o, true, "1n < ToPrimitive(2n)"); |
| assert(o < o2, false, "ToPrimitive(2n) < ToPrimitive(1n)"); |
| assert(o2 < o, true, "ToPrimitive(1n) < ToPrimitive(2n)"); |
| |
| o = { |
| valueOf: function() { |
| return 2n; |
| } |
| } |
| |
| o2 = { |
| valueOf: function() { |
| return 1n; |
| } |
| } |
| |
| assert(o < 1n, false, "ToPrimitive(2n) < 1n"); |
| assert(1n < o, true, "1n < ToPrimitive(2n)"); |
| assert(o < o2, false, "ToPrimitive(2n) < ToPrimitive(1n)"); |
| assert(o2 < o, true, "ToPrimitive(1n) < ToPrimitive(2n)"); |
| |
| o = { |
| toString: function() { |
| return 2n; |
| } |
| } |
| |
| o2 = { |
| toString: function() { |
| return 1n; |
| } |
| } |
| |
| assert(o < 1n, false, "ToPrimitive(2n) < 1n"); |
| assert(1n < o, true, "1n < ToPrimitive(2n)"); |
| assert(o < o2, false, "ToPrimitive(2n) < ToPrimitive(1n)"); |
| assert(o2 < o, true, "ToPrimitive(1n) < ToPrimitive(2n)"); |
| |