Chromium Code Reviews| Index: test/mjsunit/harmony/typedarray-reverse.js |
| diff --git a/test/mjsunit/harmony/typedarray-reverse.js b/test/mjsunit/harmony/typedarray-reverse.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..5945d336a69f301971c9d86a8b942bf52a11ad43 |
| --- /dev/null |
| +++ b/test/mjsunit/harmony/typedarray-reverse.js |
| @@ -0,0 +1,56 @@ |
| +// Copyright 2015 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: --harmony-arrays |
| + |
| +function id(x) { |
| + return x; |
| +} |
| +id.prototype = Array.prototype; |
| + |
| +var typedArrayConstructors = [ |
|
arv (Not doing code reviews)
2015/05/19 15:18:03
rename since it contains non typed array construct
dehrenberg
2015/05/19 16:22:25
Done.
|
| + Uint8Array, |
| + Int8Array, |
| + Uint16Array, |
| + Int16Array, |
| + Uint32Array, |
| + Int32Array, |
| + Uint8ClampedArray, |
| + Float32Array, |
| + Float64Array, |
| + id // Also test arrays |
|
arv (Not doing code reviews)
2015/05/19 15:18:03
Rename id to ArrayMaker or something...
dehrenberg
2015/05/19 16:22:25
Done.
|
| +]; |
| + |
| +function assertArrayLikeEquals(value, expected, type) { |
| + assertEquals(value.__proto__, type.prototype); |
| + assertEquals(expected.length, value.length); |
| + for (var i = 0; i < value.length; ++i) { |
| + assertEquals(expected[i], value[i]); |
| + } |
| +} |
| + |
| +for (var constructor of typedArrayConstructors) { |
| + // Test reversing both even and odd length arrays |
| + var a = new constructor([1, 2, 3]); |
| + assertArrayLikeEquals(a.reverse(), [3, 2, 1], constructor); |
| + assertArrayLikeEquals(a, [3, 2, 1], constructor); |
| + |
| + a = new constructor([1, 2, 3, 4]); |
| + assertArrayLikeEquals(a.reverse(), [4, 3, 2, 1], constructor); |
| + assertArrayLikeEquals(a, [4, 3, 2, 1], constructor); |
| + |
| + if (constructor != id) { |
| + // Cannot be called on objects which are not TypedArrays |
| + assertThrows(function () { a.reverse.call({ length: 0 }); }, TypeError); |
| + } else { |
| + // Array.reverse works on array-like objects |
| + var x = { length: 2, 1: 5 }; |
| + a.reverse.call(x); |
| + assertEquals(2, x.length); |
| + assertFalse(Object.hasOwnProperty(x, '1')); |
| + assertEquals(5, x[0]); |
| + } |
| + |
| + assertEquals(0, a.reverse.length); |
| +} |