//@ runBigIntEnabled

// Copyright (C) 2017 Josh Wolfe. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

function assert(a) {
    if (!a)
        throw new Error("Bad assertion");
}

assert.sameValue = function (input, expected, message) {
    if (input !== expected)
        throw new Error(message);
}

assert.sameValue(0n >> 0n, 0n, "0n >> 0n === 0n");
assert.sameValue(0b101n >> -1n, 0b1010n, "0b101n >> -1n === 0b1010n");
assert.sameValue(0b101n >> -2n, 0b10100n, "0b101n >> -2n === 0b10100n");
assert.sameValue(0b101n >> -3n, 0b101000n, "0b101n >> -3n === 0b101000n");
assert.sameValue(0b101n >> 1n, 0b10n, "0b101n >> 1n === 0b10n");
assert.sameValue(0b101n >> 2n, 1n, "0b101n >> 2n === 1n");
assert.sameValue(0b101n >> 3n, 0n, "0b101n >> 3n === 0n");
assert.sameValue(0n >> -128n, 0n, "0n >> -128n === 0n");
assert.sameValue(0n >> 128n, 0n, "0n >> 128n === 0n");
assert.sameValue(0x246n >> 0n, 0x246n, "0x246n >> 0n === 0x246n");
assert.sameValue(0x246n >> -127n, 0x12300000000000000000000000000000000n, "0x246n >> -127n === 0x12300000000000000000000000000000000n");
assert.sameValue(0x246n >> -128n, 0x24600000000000000000000000000000000n, "0x246n >> -128n === 0x24600000000000000000000000000000000n");
assert.sameValue(0x246n >> -129n, 0x48c00000000000000000000000000000000n, "0x246n >> -129n === 0x48c00000000000000000000000000000000n");
assert.sameValue(0x246n >> 128n, 0n, "0x246n >> 128n === 0n");
assert.sameValue(
  0x123456789abcdef0fedcba9876543212345678n >> -64n, 0x123456789abcdef0fedcba98765432123456780000000000000000n,
  "0x123456789abcdef0fedcba9876543212345678n >> -64n === 0x123456789abcdef0fedcba98765432123456780000000000000000n");
assert.sameValue(
  0x123456789abcdef0fedcba9876543212345678n >> -32n, 0x123456789abcdef0fedcba987654321234567800000000n,
  "0x123456789abcdef0fedcba9876543212345678n >> -32n === 0x123456789abcdef0fedcba987654321234567800000000n");
assert.sameValue(
  0x123456789abcdef0fedcba9876543212345678n >> -16n, 0x123456789abcdef0fedcba98765432123456780000n,
  "0x123456789abcdef0fedcba9876543212345678n >> -16n === 0x123456789abcdef0fedcba98765432123456780000n");
assert.sameValue(
  0x123456789abcdef0fedcba9876543212345678n >> 0n, 0x123456789abcdef0fedcba9876543212345678n,
  "0x123456789abcdef0fedcba9876543212345678n >> 0n === 0x123456789abcdef0fedcba9876543212345678n");
assert.sameValue(
  0x123456789abcdef0fedcba9876543212345678n >> 16n, 0x123456789abcdef0fedcba987654321234n,
  "0x123456789abcdef0fedcba9876543212345678n >> 16n === 0x123456789abcdef0fedcba987654321234n");
assert.sameValue(
  0x123456789abcdef0fedcba9876543212345678n >> 32n, 0x123456789abcdef0fedcba98765432n,
  "0x123456789abcdef0fedcba9876543212345678n >> 32n === 0x123456789abcdef0fedcba98765432n");
assert.sameValue(
  0x123456789abcdef0fedcba9876543212345678n >> 64n, 0x123456789abcdef0fedcban,
  "0x123456789abcdef0fedcba9876543212345678n >> 64n === 0x123456789abcdef0fedcban");
assert.sameValue(
  0x123456789abcdef0fedcba9876543212345678n >> 127n, 0x2468acn,
  "0x123456789abcdef0fedcba9876543212345678n >> 127n === 0x2468acn");
assert.sameValue(
  0x123456789abcdef0fedcba9876543212345678n >> 128n, 0x123456n,
  "0x123456789abcdef0fedcba9876543212345678n >> 128n === 0x123456n");
assert.sameValue(
  0x123456789abcdef0fedcba9876543212345678n >> 129n, 0x91a2bn,
  "0x123456789abcdef0fedcba9876543212345678n >> 129n === 0x91a2bn");
assert.sameValue(-5n >> -1n, -0xan, "-5n >> -1n === -0xan");
assert.sameValue(-5n >> -2n, -0x14n, "-5n >> -2n === -0x14n");
assert.sameValue(-5n >> -3n, -0x28n, "-5n >> -3n === -0x28n");
assert.sameValue(-5n >> 1n, -3n, "-5n >> 1n === -3n");
assert.sameValue(-5n >> 2n, -2n, "-5n >> 2n === -2n");
assert.sameValue(-5n >> 3n, -1n, "-5n >> 3n === -1n");
assert.sameValue(-1n >> -128n, -0x100000000000000000000000000000000n, "-1n >> -128n === -0x100000000000000000000000000000000n");
assert.sameValue(-1n >> 0n, -1n, "-1n >> 0n === -1n");
assert.sameValue(-1n >> 128n, -1n, "-1n >> 128n === -1n");
assert.sameValue(-0x246n >> 0n, -0x246n, "-0x246n >> 0n === -0x246n");
assert.sameValue(-0x246n >> -127n, -0x12300000000000000000000000000000000n, "-0x246n >> -127n === -0x12300000000000000000000000000000000n");
assert.sameValue(-0x246n >> -128n, -0x24600000000000000000000000000000000n, "-0x246n >> -128n === -0x24600000000000000000000000000000000n");
assert.sameValue(-0x246n >> -129n, -0x48c00000000000000000000000000000000n, "-0x246n >> -129n === -0x48c00000000000000000000000000000000n");
assert.sameValue(-0x246n >> 128n, -1n, "-0x246n >> 128n === -1n");
assert.sameValue(
  -0x123456789abcdef0fedcba9876543212345678n >> -64n, -0x123456789abcdef0fedcba98765432123456780000000000000000n,
  "-0x123456789abcdef0fedcba9876543212345678n >> -64n === -0x123456789abcdef0fedcba98765432123456780000000000000000n");
assert.sameValue(
  -0x123456789abcdef0fedcba9876543212345678n >> -32n, -0x123456789abcdef0fedcba987654321234567800000000n,
  "-0x123456789abcdef0fedcba9876543212345678n >> -32n === -0x123456789abcdef0fedcba987654321234567800000000n");
assert.sameValue(
  -0x123456789abcdef0fedcba9876543212345678n >> -16n, -0x123456789abcdef0fedcba98765432123456780000n,
  "-0x123456789abcdef0fedcba9876543212345678n >> -16n === -0x123456789abcdef0fedcba98765432123456780000n");
assert.sameValue(
  -0x123456789abcdef0fedcba9876543212345678n >> 0n, -0x123456789abcdef0fedcba9876543212345678n,
  "-0x123456789abcdef0fedcba9876543212345678n >> 0n === -0x123456789abcdef0fedcba9876543212345678n");
assert.sameValue(
  -0x123456789abcdef0fedcba9876543212345678n >> 16n, -0x123456789abcdef0fedcba987654321235n,
  "-0x123456789abcdef0fedcba9876543212345678n >> 16n === -0x123456789abcdef0fedcba987654321235n");
assert.sameValue(
  -0x123456789abcdef0fedcba9876543212345678n >> 32n, -0x123456789abcdef0fedcba98765433n,
  "-0x123456789abcdef0fedcba9876543212345678n >> 32n === -0x123456789abcdef0fedcba98765433n");
assert.sameValue(
  -0x123456789abcdef0fedcba9876543212345678n >> 64n, -0x123456789abcdef0fedcbbn,
  "-0x123456789abcdef0fedcba9876543212345678n >> 64n === -0x123456789abcdef0fedcbbn");
assert.sameValue(
  -0x123456789abcdef0fedcba9876543212345678n >> 127n, -0x2468adn,
  "-0x123456789abcdef0fedcba9876543212345678n >> 127n === -0x2468adn");
assert.sameValue(
  -0x123456789abcdef0fedcba9876543212345678n >> 128n, -0x123457n,
  "-0x123456789abcdef0fedcba9876543212345678n >> 128n === -0x123457n");
assert.sameValue(
  -0x123456789abcdef0fedcba9876543212345678n >> 129n, -0x91a2cn,
  "-0x123456789abcdef0fedcba9876543212345678n >> 129n === -0x91a2cn");

