// Copyright (C) 2017 Josh Wolfe. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
description: Comparisons of BigInt and BigInt values
esid: sec-abstract-relational-comparison
info: |
  ...
  3. If both px and py are Strings, then
    ...
  4. Else,
    a. Let nx be ? ToNumeric(px). Because px and py are primitive values evaluation order is not important.
    b. Let ny be ? ToNumeric(py).
    c. If Type(nx) is Type(ny), return ? Type(nx)::lessThan(nx, ny).

  sec-numeric-types-bigint-lessThan
  BigInt::lessThan (x, y)

    The abstract operation BigInt::lessThan with two arguments x and y of BigInt type returns true if x is less than y and false otherwise.

features: [BigInt]
---*/
assert.sameValue(0n < 0n, false, 'The result of (0n < 0n) is false');
assert.sameValue(1n < 1n, false, 'The result of (1n < 1n) is false');
assert.sameValue(-1n < -1n, false, 'The result of (-1n < -1n) is false');
assert.sameValue(0n < -0n, false, 'The result of (0n < -0n) is false');
assert.sameValue(-0n < 0n, false, 'The result of (-0n < 0n) is false');
assert.sameValue(0n < 1n, true, 'The result of (0n < 1n) is true');
assert.sameValue(1n < 0n, false, 'The result of (1n < 0n) is false');
assert.sameValue(0n < -1n, false, 'The result of (0n < -1n) is false');
assert.sameValue(-1n < 0n, true, 'The result of (-1n < 0n) is true');
assert.sameValue(1n < -1n, false, 'The result of (1n < -1n) is false');
assert.sameValue(-1n < 1n, true, 'The result of (-1n < 1n) is true');

assert.sameValue(
  0x1fffffffffffff01n < 0x1fffffffffffff02n,
  true,
  'The result of (0x1fffffffffffff01n < 0x1fffffffffffff02n) is true'
);

assert.sameValue(
  0x1fffffffffffff02n < 0x1fffffffffffff01n,
  false,
  'The result of (0x1fffffffffffff02n < 0x1fffffffffffff01n) is false'
);

assert.sameValue(
  -0x1fffffffffffff01n < -0x1fffffffffffff02n,
  false,
  'The result of (-0x1fffffffffffff01n < -0x1fffffffffffff02n) is false'
);

assert.sameValue(
  -0x1fffffffffffff02n < -0x1fffffffffffff01n,
  true,
  'The result of (-0x1fffffffffffff02n < -0x1fffffffffffff01n) is true'
);

assert.sameValue(
  0x10000000000000000n < 0n,
  false,
  'The result of (0x10000000000000000n < 0n) is false'
);

assert.sameValue(
  0n < 0x10000000000000000n,
  true,
  'The result of (0n < 0x10000000000000000n) is true'
);

assert.sameValue(
  0x10000000000000000n < 1n,
  false,
  'The result of (0x10000000000000000n < 1n) is false'
);

assert.sameValue(
  1n < 0x10000000000000000n,
  true,
  'The result of (1n < 0x10000000000000000n) is true'
);

assert.sameValue(
  0x10000000000000000n < -1n,
  false,
  'The result of (0x10000000000000000n < -1n) is false'
);

assert.sameValue(
  -1n < 0x10000000000000000n,
  true,
  'The result of (-1n < 0x10000000000000000n) is true'
);

assert.sameValue(
  0x10000000000000001n < 0n,
  false,
  'The result of (0x10000000000000001n < 0n) is false'
);

assert.sameValue(
  0n < 0x10000000000000001n,
  true,
  'The result of (0n < 0x10000000000000001n) is true'
);

assert.sameValue(
  -0x10000000000000000n < 0n,
  true,
  'The result of (-0x10000000000000000n < 0n) is true'
);

assert.sameValue(
  0n < -0x10000000000000000n,
  false,
  'The result of (0n < -0x10000000000000000n) is false'
);

assert.sameValue(
  -0x10000000000000000n < 1n,
  true,
  'The result of (-0x10000000000000000n < 1n) is true'
);

assert.sameValue(
  1n < -0x10000000000000000n,
  false,
  'The result of (1n < -0x10000000000000000n) is false'
);

assert.sameValue(
  -0x10000000000000000n < -1n,
  true,
  'The result of (-0x10000000000000000n < -1n) is true'
);

assert.sameValue(
  -1n < -0x10000000000000000n,
  false,
  'The result of (-1n < -0x10000000000000000n) is false'
);

assert.sameValue(
  -0x10000000000000001n < 0n,
  true,
  'The result of (-0x10000000000000001n < 0n) is true'
);

assert.sameValue(
  0n < -0x10000000000000001n,
  false,
  'The result of (0n < -0x10000000000000001n) is false'
);

assert.sameValue(
  0x10000000000000000n < 0x100000000n,
  false,
  'The result of (0x10000000000000000n < 0x100000000n) is false'
);

assert.sameValue(
  0x100000000n < 0x10000000000000000n,
  true,
  'The result of (0x100000000n < 0x10000000000000000n) is true'
);