// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// @dart = 2.9

// Testing Bigints with and without intrinsics.
// VMOptions=--intrinsify --no-enable-asserts
// VMOptions=--intrinsify --enable-asserts
// VMOptions=--no-intrinsify --enable-asserts
// VMOptions=--no-intrinsify --no-enable-asserts

import "package:expect/expect.dart";

expectShifted(aString, n, expectedString) {
  BigInt a = BigInt.parse(aString, radix: 16);
  BigInt expected = BigInt.parse(expectedString, radix: 16);
  BigInt actual = a >> n;
  String actualString = actual.toRadixString(16);
  print("$aString >> $n");
  print(" = $actualString (expected $expectedString)");
  Expect.equals(expected, actual);
}

main() {
  expectShifted("d87becaa3701c97b31b5b8084f2b5b34e7857092", 0,
      "d87becaa3701c97b31b5b8084f2b5b34e7857092");
  expectShifted("d87becaa3701c97b31b5b8084f2b5b34e7857092", 1,
      "6c3df6551b80e4bd98dadc042795ad9a73c2b849");
  expectShifted("d87becaa3701c97b31b5b8084f2b5b34e7857092", 2,
      "361efb2a8dc0725ecc6d6e0213cad6cd39e15c24");
  expectShifted("d87becaa3701c97b31b5b8084f2b5b34e7857092", 31,
      "1b0f7d9546e0392f6636b70109e56b669");
  expectShifted("d87becaa3701c97b31b5b8084f2b5b34e7857092", 32,
      "d87becaa3701c97b31b5b8084f2b5b34");
  expectShifted("d87becaa3701c97b31b5b8084f2b5b34e7857092", 33,
      "6c3df6551b80e4bd98dadc042795ad9a");
  expectShifted("d87becaa3701c97b31b5b8084f2b5b34e7857092", 63,
      "1b0f7d9546e0392f6636b7010");
  expectShifted("d87becaa3701c97b31b5b8084f2b5b34e7857092", 64,
      "d87becaa3701c97b31b5b808");
  expectShifted("d87becaa3701c97b31b5b8084f2b5b34e7857092", 65,
      "6c3df6551b80e4bd98dadc04");

  expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 0,
      "-d87becaa3701c97b31b5b8084f2b5b34e7857092");
  expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 1,
      "-6c3df6551b80e4bd98dadc042795ad9a73c2b849");
  expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 2,
      "-361efb2a8dc0725ecc6d6e0213cad6cd39e15c25");
  expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 31,
      "-1b0f7d9546e0392f6636b70109e56b66a");
  expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 32,
      "-d87becaa3701c97b31b5b8084f2b5b35");
  expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 33,
      "-6c3df6551b80e4bd98dadc042795ad9b");
  expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 63,
      "-1b0f7d9546e0392f6636b7011");
  expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 64,
      "-d87becaa3701c97b31b5b809");
  expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 65,
      "-6c3df6551b80e4bd98dadc05");
}
