blob: 44472e3eb3ed1207e91da2d343e7d3e36a82af11 [file] [log] [blame]
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00001// Copyright 2015 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5var typedArrayConstructors = [
6 Uint8Array,
7 Int8Array,
8 Uint16Array,
9 Int16Array,
10 Uint32Array,
11 Int32Array,
12 Uint8ClampedArray,
13 Float32Array,
14 Float64Array
15];
16
17for (var constructor of typedArrayConstructors) {
18 var array = new constructor([1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]);
19
20 // ----------------------------------------------------------------------
21 // %TypedArray%.prototype.indexOf.
22 // ----------------------------------------------------------------------
23
24 // Negative cases.
25 assertEquals(-1, new constructor([]).indexOf(1));
26 assertEquals(-1, array.indexOf(4));
27 assertEquals(-1, array.indexOf(3, array.length));
28
29 assertEquals(2, array.indexOf(3));
30 // Negative index out of range.
31 assertEquals(0, array.indexOf(1, -17));
32 // Negative index in rage.
33 assertEquals(3, array.indexOf(1, -11));
34 // Index in range.
35 assertEquals(3, array.indexOf(1, 1));
36 assertEquals(3, array.indexOf(1, 3));
37 assertEquals(6, array.indexOf(1, 4));
38
39 // Basic TypedArray function properties
40 assertEquals(1, array.indexOf.length);
41 assertThrows(function(){ array.indexOf.call([1], 1); }, TypeError);
42 Object.defineProperty(array, 'length', {value: 1});
43 assertEquals(array.indexOf(2), 1);
44
45
46 // ----------------------------------------------------------------------
47 // %TypedArray%.prototype.lastIndexOf.
48 // ----------------------------------------------------------------------
49 array = new constructor([1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]);
50
51 // Negative cases.
52 assertEquals(-1, new constructor([]).lastIndexOf(1));
53 assertEquals(-1, array.lastIndexOf(1, -17));
54
55 assertEquals(9, array.lastIndexOf(1));
56 // Index out of range.
57 assertEquals(9, array.lastIndexOf(1, array.length));
58 // Index in range.
59 assertEquals(0, array.lastIndexOf(1, 2));
60 assertEquals(3, array.lastIndexOf(1, 4));
61 assertEquals(3, array.lastIndexOf(1, 3));
62 // Negative index in range.
63 assertEquals(0, array.lastIndexOf(1, -11));
64
65 // Basic TypedArray function properties
66 assertEquals(1, array.lastIndexOf.length);
67 assertThrows(function(){ array.lastIndexOf.call([1], 1); }, TypeError);
68 Object.defineProperty(array, 'length', {value: 1});
69 assertEquals(array.lastIndexOf(2), 10);
70 delete array.length;
71}