OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 var typedArrayConstructors = [ | 5 var typedArrayConstructors = [ |
6 Uint8Array, | 6 Uint8Array, |
7 Int8Array, | 7 Int8Array, |
8 Uint16Array, | 8 Uint16Array, |
9 Int16Array, | 9 Int16Array, |
10 Uint32Array, | 10 Uint32Array, |
(...skipping 24 matching lines...) Expand all Loading... |
35 assertEquals(3, array.indexOf(1, 1)); | 35 assertEquals(3, array.indexOf(1, 1)); |
36 assertEquals(3, array.indexOf(1, 3)); | 36 assertEquals(3, array.indexOf(1, 3)); |
37 assertEquals(6, array.indexOf(1, 4)); | 37 assertEquals(6, array.indexOf(1, 4)); |
38 | 38 |
39 // Basic TypedArray function properties | 39 // Basic TypedArray function properties |
40 assertEquals(1, array.indexOf.length); | 40 assertEquals(1, array.indexOf.length); |
41 assertThrows(function(){ array.indexOf.call([1], 1); }, TypeError); | 41 assertThrows(function(){ array.indexOf.call([1], 1); }, TypeError); |
42 Object.defineProperty(array, 'length', {value: 1}); | 42 Object.defineProperty(array, 'length', {value: 1}); |
43 assertEquals(array.indexOf(2), 1); | 43 assertEquals(array.indexOf(2), 1); |
44 | 44 |
| 45 // Index of infinite value |
| 46 array = new constructor([NaN, 2, 3, +Infinity, -Infinity, 5, 6]); |
| 47 if (constructor == Float32Array || constructor == Float64Array) { |
| 48 assertEquals(3, array.indexOf(Infinity)); |
| 49 assertEquals(4, array.indexOf(-Infinity)); |
| 50 } else { |
| 51 assertEquals(-1, array.indexOf(Infinity)); |
| 52 assertEquals(-1, array.indexOf(-Infinity)); |
| 53 } |
| 54 assertEquals(-1, array.indexOf(NaN)); |
45 | 55 |
46 // ---------------------------------------------------------------------- | 56 // ---------------------------------------------------------------------- |
47 // %TypedArray%.prototype.lastIndexOf. | 57 // %TypedArray%.prototype.lastIndexOf. |
48 // ---------------------------------------------------------------------- | 58 // ---------------------------------------------------------------------- |
49 array = new constructor([1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]); | 59 array = new constructor([1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]); |
50 | 60 |
51 // Negative cases. | 61 // Negative cases. |
52 assertEquals(-1, new constructor([]).lastIndexOf(1)); | 62 assertEquals(-1, new constructor([]).lastIndexOf(1)); |
53 assertEquals(-1, array.lastIndexOf(1, -17)); | 63 assertEquals(-1, array.lastIndexOf(1, -17)); |
54 | 64 |
55 assertEquals(9, array.lastIndexOf(1)); | 65 assertEquals(9, array.lastIndexOf(1)); |
56 // Index out of range. | 66 // Index out of range. |
57 assertEquals(9, array.lastIndexOf(1, array.length)); | 67 assertEquals(9, array.lastIndexOf(1, array.length)); |
58 // Index in range. | 68 // Index in range. |
59 assertEquals(0, array.lastIndexOf(1, 2)); | 69 assertEquals(0, array.lastIndexOf(1, 2)); |
60 assertEquals(3, array.lastIndexOf(1, 4)); | 70 assertEquals(3, array.lastIndexOf(1, 4)); |
61 assertEquals(3, array.lastIndexOf(1, 3)); | 71 assertEquals(3, array.lastIndexOf(1, 3)); |
62 // Negative index in range. | 72 // Negative index in range. |
63 assertEquals(0, array.lastIndexOf(1, -11)); | 73 assertEquals(0, array.lastIndexOf(1, -11)); |
64 | 74 |
65 // Basic TypedArray function properties | 75 // Basic TypedArray function properties |
66 assertEquals(1, array.lastIndexOf.length); | 76 assertEquals(1, array.lastIndexOf.length); |
67 assertThrows(function(){ array.lastIndexOf.call([1], 1); }, TypeError); | 77 assertThrows(function(){ array.lastIndexOf.call([1], 1); }, TypeError); |
68 Object.defineProperty(array, 'length', {value: 1}); | 78 Object.defineProperty(array, 'length', {value: 1}); |
69 assertEquals(array.lastIndexOf(2), 10); | 79 assertEquals(array.lastIndexOf(2), 10); |
70 delete array.length; | 80 delete array.length; |
| 81 |
| 82 // Index of infinite value |
| 83 array = new constructor([NaN, 2, 3, +Infinity, -Infinity, 5, 6]); |
| 84 if (constructor == Float32Array || constructor == Float64Array) { |
| 85 assertEquals(3, array.lastIndexOf(Infinity)); |
| 86 assertEquals(4, array.lastIndexOf(-Infinity)); |
| 87 } else { |
| 88 assertEquals(-1, array.lastIndexOf(Infinity)); |
| 89 assertEquals(-1, array.lastIndexOf(-Infinity)); |
| 90 } |
| 91 assertEquals(-1, array.lastIndexOf(NaN)); |
71 } | 92 } |
OLD | NEW |