OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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-concat-spreadable | 5 // Flags: --harmony-concat-spreadable |
6 | 6 |
7 (function testArrayConcatArity() { | 7 (function testArrayConcatArity() { |
8 "use strict"; | 8 "use strict"; |
9 assertEquals(1, Array.prototype.concat.length); | 9 assertEquals(1, Array.prototype.concat.length); |
10 })(); | 10 })(); |
11 | 11 |
12 | 12 |
13 (function testArrayConcatNoPrototype() { | 13 (function testArrayConcatNoPrototype() { |
14 "use strict"; | 14 "use strict"; |
15 assertEquals(void 0, Array.prototype.concat.prototype); | 15 assertEquals(void 0, Array.prototype.concat.prototype); |
16 })(); | 16 })(); |
17 | 17 |
18 | 18 |
19 (function testArrayConcatDescriptor() { | 19 (function testArrayConcatDescriptor() { |
20 "use strict"; | 20 "use strict"; |
21 var desc = Object.getOwnPropertyDescriptor(Array.prototype, 'concat'); | 21 var desc = Object.getOwnPropertyDescriptor(Array.prototype, 'concat'); |
22 assertEquals(false, desc.enumerable); | 22 assertEquals(false, desc.enumerable); |
23 })(); | 23 })(); |
24 | 24 |
| 25 (function testNonConcatSpreadableArray() { |
| 26 "use strict" |
| 27 var array = [1, 2, 3]; |
| 28 assertEquals(array, [].concat(array)); |
| 29 assertEquals(array, array.concat([])); |
| 30 array[Symbol.isConcatSpreadable] = false; |
| 31 assertEquals([[1,2,3]], [].concat(array)); |
| 32 assertEquals([[1,2,3]], array.concat([])); |
| 33 })(); |
25 | 34 |
26 (function testConcatArrayLike() { | 35 (function testConcatArrayLike() { |
27 "use strict"; | 36 "use strict"; |
28 var obj = { | 37 var obj = { |
29 "length": 6, | 38 "length": 6, |
30 "1": "A", | 39 "1": "A", |
31 "3": "B", | 40 "3": "B", |
32 "5": "C" | 41 "5": "C" |
33 }; | 42 }; |
34 obj[Symbol.isConcatSpreadable] = true; | 43 obj[Symbol.isConcatSpreadable] = true; |
(...skipping 664 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
699 arr3.length = 10000; | 708 arr3.length = 10000; |
700 for (var i = 0; i < 100; i++) { | 709 for (var i = 0; i < 100; i++) { |
701 Object.defineProperty(arr3, i * i, {get: mkGetter(i)}); | 710 Object.defineProperty(arr3, i * i, {get: mkGetter(i)}); |
702 expectedTrace[i] = i; | 711 expectedTrace[i] = i; |
703 expectedTrace[100 + i] = i; | 712 expectedTrace[100 + i] = i; |
704 } | 713 } |
705 var r4 = [0].concat(arr3, arr3); | 714 var r4 = [0].concat(arr3, arr3); |
706 assertEquals(1 + arr3.length * 2, r4.length); | 715 assertEquals(1 + arr3.length * 2, r4.length); |
707 assertEquals(expectedTrace, trace); | 716 assertEquals(expectedTrace, trace); |
708 })(); | 717 })(); |
OLD | NEW |