// 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, true, 'The result of (0n <= 0n) is true');
assert.sameValue(1n <= 1n, true, 'The result of (1n <= 1n) is true');
assert.sameValue(-1n <= -1n, true, 'The result of (-1n <= -1n) is true');
assert.sameValue(0n <= -0n, true, 'The result of (0n <= -0n) is true');
assert.sameValue(-0n <= 0n, true, 'The result of (-0n <= 0n) is true');
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'
);
