df35adc763
R=jkummerow@chromium.org Bug: v8:7505, v8:6791 Change-Id: I11b0031dfafa499a813e3e52080ee5542224799a Reviewed-on: https://chromium-review.googlesource.com/941130 Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#51639}
50 lines
1.4 KiB
JavaScript
50 lines
1.4 KiB
JavaScript
// Copyright 2017 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// Flags: --allow-natives-syntax --harmony-bigint
|
|
|
|
assertEquals(1n, (-1n) ** 0n);
|
|
assertEquals(-1n, (-1n) ** 1n);
|
|
assertEquals(1n, (-1n) ** 2n);
|
|
assertEquals(-1n, (-1n) ** 3n);
|
|
assertEquals(1n, (-1n) ** 4n);
|
|
|
|
assertEquals(1n, 0n ** 0n);
|
|
assertEquals(0n, 0n ** 1n);
|
|
assertEquals(0n, 0n ** 23n);
|
|
|
|
assertEquals(1n, 1n ** 0n);
|
|
assertEquals(1n, 1n ** 1n);
|
|
assertEquals(1n, 99n ** 0n);
|
|
|
|
assertEquals(2n, 2n ** 1n);
|
|
assertEquals(4n, 2n ** 2n);
|
|
assertEquals(8n, 2n ** 3n);
|
|
assertEquals(16n, 2n ** 4n);
|
|
assertEquals(151115727451828646838272n, 2n ** 77n);
|
|
|
|
assertEquals(3n, 3n ** 1n);
|
|
assertEquals(9n, 3n ** 2n);
|
|
assertEquals(27n, 3n ** 3n);
|
|
assertEquals(81n, 3n ** 4n);
|
|
assertEquals(243n, 3n ** 5n);
|
|
assertEquals(30903154382632612361920641803529n, 3n ** 66n);
|
|
|
|
assertEquals(1n, (-2n) ** 0n);
|
|
assertEquals(-2n, (-2n) ** 1n);
|
|
assertEquals(4n, (-2n) ** 2n);
|
|
assertEquals(-8n, (-2n) ** 3n);
|
|
assertEquals(16n, (-2n) ** 4n);
|
|
assertEquals(-32n, (-2n) ** 5n);
|
|
|
|
assertEquals(1n, (-3n) ** 0n);
|
|
assertEquals(-3n, (-3n) ** 1n);
|
|
assertEquals(9n, (-3n) ** 2n);
|
|
assertEquals(-27n, (-3n) ** 3n);
|
|
assertEquals(81n, (-3n) ** 4n);
|
|
assertEquals(-243n, (-3n) ** 5n);
|
|
|
|
assertThrows(() => 3n ** -2n, RangeError); // Negative exponent.
|
|
assertThrows(() => 2n ** (1024n ** 4n), RangeError); // Too big.
|