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 // Flags: --harmony-tolength | 5 // Flags: --harmony-tolength |
6 | 6 |
7 // Test array functions do not cause infinite loops when length is negative, | 7 // Test array functions do not cause infinite loops when length is negative, |
8 // max_value, etc. | 8 // max_value, etc. |
9 | 9 |
10 // ArrayToString | 10 // ArrayToString |
(...skipping 15 matching lines...) Expand all Loading... |
26 assertEquals(0, result.length); | 26 assertEquals(0, result.length); |
27 | 27 |
28 // ArrayPush | 28 // ArrayPush |
29 | 29 |
30 var o = { length: Number.MIN_VALUE }; | 30 var o = { length: Number.MIN_VALUE }; |
31 Array.prototype.push.call(o, 1); | 31 Array.prototype.push.call(o, 1); |
32 assertEquals(1, o.length); | 32 assertEquals(1, o.length); |
33 assertEquals(1, o[0]); | 33 assertEquals(1, o[0]); |
34 | 34 |
35 var o = { length: Number.MAX_VALUE }; | 35 var o = { length: Number.MAX_VALUE }; |
36 Array.prototype.push.call(o, 1); | 36 assertThrows(() => Array.prototype.push.call(o, 1), TypeError); |
37 assertEquals(o.length, Number.MAX_SAFE_INTEGER + 1); | |
38 assertEquals(1, o[Number.MAX_SAFE_INTEGER]); | |
39 | |
40 Array.prototype.push.call(o, 2); | |
41 assertEquals(o.length, Number.MAX_SAFE_INTEGER + 1); | |
42 assertEquals(2, o[Number.MAX_SAFE_INTEGER]); | |
43 | 37 |
44 // ArrayPop | 38 // ArrayPop |
45 | 39 |
46 var o = { length: 0 }; | 40 var o = { length: 0 }; |
47 Array.prototype.pop.call(o); | 41 Array.prototype.pop.call(o); |
48 assertEquals(0, o.length); | 42 assertEquals(0, o.length); |
49 | 43 |
50 var o = { length: Number.MIN_VALUE }; | 44 var o = { length: Number.MIN_VALUE }; |
51 Array.prototype.pop.call(o); | 45 Array.prototype.pop.call(o); |
52 assertEquals(0, o.length); | 46 assertEquals(0, o.length); |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
199 | 193 |
200 var o = { length: Number.MIN_VALUE }; | 194 var o = { length: Number.MIN_VALUE }; |
201 Array.prototype.reduceRight.call(o, func, 0); | 195 Array.prototype.reduceRight.call(o, func, 0); |
202 assertEquals(Number.MIN_VALUE, o.length); | 196 assertEquals(Number.MIN_VALUE, o.length); |
203 | 197 |
204 // ArrayFill | 198 // ArrayFill |
205 | 199 |
206 var o = { length: Number.MIN_VALUE }; | 200 var o = { length: Number.MIN_VALUE }; |
207 Array.prototype.fill(o, 0); | 201 Array.prototype.fill(o, 0); |
208 assertEquals(Number.MIN_VALUE, o.length); | 202 assertEquals(Number.MIN_VALUE, o.length); |
OLD | NEW |