Chromium Code Reviews| Index: test/mjsunit/es6/typedarray-copywithin.js |
| diff --git a/test/mjsunit/es6/typedarray-copywithin.js b/test/mjsunit/es6/typedarray-copywithin.js |
| index ad5a0df5639b1e8724fa5ac70c0f7e4eb2dbe2ec..1e63508393f4c1b63897c638ee1a0ac007da5bb0 100644 |
| --- a/test/mjsunit/es6/typedarray-copywithin.js |
| +++ b/test/mjsunit/es6/typedarray-copywithin.js |
| @@ -2,6 +2,8 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| +// Flags: --allow-natives-syntax |
| + |
| var typedArrayConstructors = [ |
| Uint8Array, |
| Int8Array, |
| @@ -171,3 +173,75 @@ CheckEachTypedArray(function copyWithinNullEnd(constructor) { |
| assertArrayEquals([1, 2, 3, 4, 5], |
| new constructor([1, 2, 3, 4, 5]).copyWithin(0, 3, null)); |
| }); |
| + |
| + |
| +CheckEachTypedArray(function copyWithinMinusInfinityTarget(constructor) { |
| + var arr = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); |
| + var expected = [6, 7, 8, 9, 10, 6, 7, 8, 9, 10]; |
| + |
| + assertArrayEquals(expected, arr.copyWithin(-Infinity, 5)); |
| + assertEquals(10, arr.length); |
| +}); |
| + |
| + |
| +CheckEachTypedArray(function copyWithinPositiveInfinityTarget(constructor) { |
| + var arr = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); |
| + var expected = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; |
| + |
| + assertArrayEquals(expected, arr.copyWithin(+Infinity, 5)); |
| + assertEquals(10, arr.length); |
| +}); |
| + |
| + |
| +CheckEachTypedArray(function copyWithinMinusInfinityStart(constructor) { |
| + var arr = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); |
| + var expected = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]; |
| + |
| + assertArrayEquals(expected, arr.copyWithin(5, -Infinity)); |
| + assertEquals(10, arr.length); |
| +}); |
| + |
| + |
| +CheckEachTypedArray(function copyWithinPositiveInfinityStart(constructor) { |
| + var arr = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); |
| + var expected = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; |
| + |
| + assertArrayEquals(expected, arr.copyWithin(5, +Infinity)); |
| + assertEquals(10, arr.length); |
| +}); |
| + |
| + |
| +CheckEachTypedArray(function copyWithinMinusInfinityEnd(constructor) { |
| + var arr = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); |
| + var expected = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; |
| + |
| + assertArrayEquals(expected, arr.copyWithin(5, 0, -Infinity)); |
| + assertEquals(10, arr.length); |
| +}); |
| + |
| + |
| +CheckEachTypedArray(function copyWithinPositiveInfinityEnd(constructor) { |
| +var arr = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); |
| + var expected = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]; |
| + |
| + assertArrayEquals(expected, arr.copyWithin(5, 0, +Infinity)); |
| + assertEquals(10, arr.length); |
| +}); |
| + |
| +CheckEachTypedArray(function parametersNotCalledIfDetached(constructor) { |
| + var tmp = { |
| + [Symbol.toPrimitive]() { |
| + assertUnreachable("Parameter should not be processed when " + |
| + "array.[[ViewedArrayBuffer]] is neutered."); |
|
Dan Ehrenberg
2017/02/14 18:26:02
Oh sorry, I missed this before.
This is actually
|
| + return 0; |
| + } |
| + }; |
| + |
| + var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); |
| + %ArrayBufferNeuter(array.buffer); |
| + |
| + // TODO(caitp): this should throw due to being invoked on a TypedArray with a |
| + // detached buffer (per v8:4648). |
|
caitp
2017/02/14 18:22:07
Yeah, this test verifies the first early return, s
|
| + array.copyWithin(tmp, tmp, tmp); |
| + assertEquals(0, array.length, "array.[[ViewedArrayBuffer]] is detached"); |
| +}); |