| // 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, |
| "1b0f7d9546e0392f6636b70109e56b669cf0ae124"); |
| expectShifted("d87becaa3701c97b31b5b8084f2b5b34e7857092", 2, |
| "361efb2a8dc0725ecc6d6e0213cad6cd39e15c248"); |
| expectShifted("d87becaa3701c97b31b5b8084f2b5b34e7857092", 31, |
| "6c3df6551b80e4bd98dadc042795ad9a73c2b84900000000"); |
| expectShifted("d87becaa3701c97b31b5b8084f2b5b34e7857092", 32, |
| "d87becaa3701c97b31b5b8084f2b5b34e785709200000000"); |
| expectShifted("d87becaa3701c97b31b5b8084f2b5b34e7857092", 33, |
| "1b0f7d9546e0392f6636b70109e56b669cf0ae12400000000"); |
| expectShifted("d87becaa3701c97b31b5b8084f2b5b34e7857092", 63, |
| "6c3df6551b80e4bd98dadc042795ad9a73c2b8490000000000000000"); |
| expectShifted("d87becaa3701c97b31b5b8084f2b5b34e7857092", 64, |
| "d87becaa3701c97b31b5b8084f2b5b34e78570920000000000000000"); |
| expectShifted("d87becaa3701c97b31b5b8084f2b5b34e7857092", 65, |
| "1b0f7d9546e0392f6636b70109e56b669cf0ae1240000000000000000"); |
| expectShifted("d87becaa3701c97b31b5b8084f2b5b34e7857092", 127, |
| "6c3df6551b80e4bd98dadc042795ad9a73c2b84900000000000000000000000000000000"); |
| expectShifted("d87becaa3701c97b31b5b8084f2b5b34e7857092", 128, |
| "d87becaa3701c97b31b5b8084f2b5b34e785709200000000000000000000000000000000"); |
| expectShifted("d87becaa3701c97b31b5b8084f2b5b34e7857092", 129, |
| "1b0f7d9546e0392f6636b70109e56b669cf0ae12400000000000000000000000000000000"); |
| |
| expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 0, |
| "-d87becaa3701c97b31b5b8084f2b5b34e7857092"); |
| expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 1, |
| "-1b0f7d9546e0392f6636b70109e56b669cf0ae124"); |
| expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 2, |
| "-361efb2a8dc0725ecc6d6e0213cad6cd39e15c248"); |
| expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 31, |
| "-6c3df6551b80e4bd98dadc042795ad9a73c2b84900000000"); |
| expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 32, |
| "-d87becaa3701c97b31b5b8084f2b5b34e785709200000000"); |
| expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 33, |
| "-1b0f7d9546e0392f6636b70109e56b669cf0ae12400000000"); |
| expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 63, |
| "-6c3df6551b80e4bd98dadc042795ad9a73c2b8490000000000000000"); |
| expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 64, |
| "-d87becaa3701c97b31b5b8084f2b5b34e78570920000000000000000"); |
| expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 65, |
| "-1b0f7d9546e0392f6636b70109e56b669cf0ae1240000000000000000"); |
| expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 127, |
| "-6c3df6551b80e4bd98dadc042795ad9a73c2b84900000000000000000000000000000000"); |
| expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 128, |
| "-d87becaa3701c97b31b5b8084f2b5b34e785709200000000000000000000000000000000"); |
| expectShifted("-d87becaa3701c97b31b5b8084f2b5b34e7857092", 129, |
| "-1b0f7d9546e0392f6636b70109e56b669cf0ae12400000000000000000000000000000000"); |
| } |