| // 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. |
| |
| var typedArrayConstructors = [ |
| Uint8Array, |
| Int8Array, |
| Uint16Array, |
| Int16Array, |
| Uint32Array, |
| Int32Array, |
| Uint8ClampedArray, |
| Float32Array, |
| Float64Array |
| ]; |
| |
| for (var constructor of typedArrayConstructors) { |
| var array = new constructor([1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]); |
| |
| // ---------------------------------------------------------------------- |
| // %TypedArray%.prototype.indexOf. |
| // ---------------------------------------------------------------------- |
| |
| // Negative cases. |
| assertEquals(-1, new constructor([]).indexOf(1)); |
| assertEquals(-1, array.indexOf(4)); |
| assertEquals(-1, array.indexOf(3, array.length)); |
| |
| assertEquals(2, array.indexOf(3)); |
| // Negative index out of range. |
| assertEquals(0, array.indexOf(1, -17)); |
| // Negative index in rage. |
| assertEquals(3, array.indexOf(1, -11)); |
| // Index in range. |
| assertEquals(3, array.indexOf(1, 1)); |
| assertEquals(3, array.indexOf(1, 3)); |
| assertEquals(6, array.indexOf(1, 4)); |
| |
| // Basic TypedArray function properties |
| assertEquals(1, array.indexOf.length); |
| assertThrows(function(){ array.indexOf.call([1], 1); }, TypeError); |
| Object.defineProperty(array, 'length', {value: 1}); |
| assertEquals(array.indexOf(2), 1); |
| |
| |
| // ---------------------------------------------------------------------- |
| // %TypedArray%.prototype.lastIndexOf. |
| // ---------------------------------------------------------------------- |
| array = new constructor([1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]); |
| |
| // Negative cases. |
| assertEquals(-1, new constructor([]).lastIndexOf(1)); |
| assertEquals(-1, array.lastIndexOf(1, -17)); |
| |
| assertEquals(9, array.lastIndexOf(1)); |
| // Index out of range. |
| assertEquals(9, array.lastIndexOf(1, array.length)); |
| // Index in range. |
| assertEquals(0, array.lastIndexOf(1, 2)); |
| assertEquals(3, array.lastIndexOf(1, 4)); |
| assertEquals(3, array.lastIndexOf(1, 3)); |
| // Negative index in range. |
| assertEquals(0, array.lastIndexOf(1, -11)); |
| |
| // Basic TypedArray function properties |
| assertEquals(1, array.lastIndexOf.length); |
| assertThrows(function(){ array.lastIndexOf.call([1], 1); }, TypeError); |
| Object.defineProperty(array, 'length', {value: 1}); |
| assertEquals(array.lastIndexOf(2), 10); |
| delete array.length; |
| } |