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: --allow-natives-syntax | 5 // Flags: --allow-natives-syntax --harmony-tostring |
6 | 6 |
7 | 7 |
8 (function TestSetIterator() { | 8 (function TestSetIterator() { |
9 var s = new Set; | 9 var s = new Set; |
10 var iter = s.values(); | 10 var iter = s.values(); |
11 assertEquals('Set Iterator', %_ClassOf(iter)); | 11 assertEquals('Set Iterator', %_ClassOf(iter)); |
12 | 12 |
13 var SetIteratorPrototype = iter.__proto__; | 13 var SetIteratorPrototype = iter.__proto__; |
14 assertFalse(SetIteratorPrototype.hasOwnProperty('constructor')); | 14 assertFalse(SetIteratorPrototype.hasOwnProperty('constructor')); |
15 assertEquals(SetIteratorPrototype.__proto__, Object.prototype); | 15 assertEquals(SetIteratorPrototype.__proto__, Object.prototype); |
16 | 16 |
17 var propertyNames = Object.getOwnPropertyNames(SetIteratorPrototype); | 17 var propertyNames = Object.getOwnPropertyNames(SetIteratorPrototype); |
18 assertArrayEquals(['next'], propertyNames); | 18 assertArrayEquals(['next'], propertyNames); |
19 | 19 |
20 assertEquals(new Set().values().__proto__, SetIteratorPrototype); | 20 assertEquals(new Set().values().__proto__, SetIteratorPrototype); |
21 assertEquals(new Set().entries().__proto__, SetIteratorPrototype); | 21 assertEquals(new Set().entries().__proto__, SetIteratorPrototype); |
| 22 |
| 23 assertEquals("[object Set Iterator]", |
| 24 Object.prototype.toString.call(iter)); |
| 25 assertEquals("Set Iterator", SetIteratorPrototype[Symbol.toStringTag]); |
| 26 var desc = Object.getOwnPropertyDescriptor( |
| 27 SetIteratorPrototype, Symbol.toStringTag); |
| 28 assertTrue(desc.configurable); |
| 29 assertFalse(desc.writable); |
| 30 assertEquals("Set Iterator", desc.value); |
22 })(); | 31 })(); |
23 | 32 |
24 | 33 |
25 (function TestSetIteratorValues() { | 34 (function TestSetIteratorValues() { |
26 var s = new Set; | 35 var s = new Set; |
27 s.add(1); | 36 s.add(1); |
28 s.add(2); | 37 s.add(2); |
29 s.add(3); | 38 s.add(3); |
30 var iter = s.values(); | 39 var iter = s.values(); |
31 | 40 |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 var MapIteratorPrototype = iter.__proto__; | 122 var MapIteratorPrototype = iter.__proto__; |
114 assertFalse(MapIteratorPrototype.hasOwnProperty('constructor')); | 123 assertFalse(MapIteratorPrototype.hasOwnProperty('constructor')); |
115 assertEquals(MapIteratorPrototype.__proto__, Object.prototype); | 124 assertEquals(MapIteratorPrototype.__proto__, Object.prototype); |
116 | 125 |
117 var propertyNames = Object.getOwnPropertyNames(MapIteratorPrototype); | 126 var propertyNames = Object.getOwnPropertyNames(MapIteratorPrototype); |
118 assertArrayEquals(['next'], propertyNames); | 127 assertArrayEquals(['next'], propertyNames); |
119 | 128 |
120 assertEquals(new Map().values().__proto__, MapIteratorPrototype); | 129 assertEquals(new Map().values().__proto__, MapIteratorPrototype); |
121 assertEquals(new Map().keys().__proto__, MapIteratorPrototype); | 130 assertEquals(new Map().keys().__proto__, MapIteratorPrototype); |
122 assertEquals(new Map().entries().__proto__, MapIteratorPrototype); | 131 assertEquals(new Map().entries().__proto__, MapIteratorPrototype); |
| 132 |
| 133 assertEquals("[object Map Iterator]", |
| 134 Object.prototype.toString.call(iter)); |
| 135 assertEquals("Map Iterator", MapIteratorPrototype[Symbol.toStringTag]); |
| 136 var desc = Object.getOwnPropertyDescriptor( |
| 137 MapIteratorPrototype, Symbol.toStringTag); |
| 138 assertTrue(desc.configurable); |
| 139 assertFalse(desc.writable); |
| 140 assertEquals("Map Iterator", desc.value); |
123 })(); | 141 })(); |
124 | 142 |
125 | 143 |
126 (function TestMapIteratorValues() { | 144 (function TestMapIteratorValues() { |
127 var m = new Map; | 145 var m = new Map; |
128 m.set(1, 11); | 146 m.set(1, 11); |
129 m.set(2, 22); | 147 m.set(2, 22); |
130 m.set(3, 33); | 148 m.set(3, 33); |
131 var iter = m.values(); | 149 var iter = m.values(); |
132 | 150 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 | 209 |
192 (function TestMapIteratorSymbol() { | 210 (function TestMapIteratorSymbol() { |
193 assertEquals(Map.prototype[Symbol.iterator], Map.prototype.entries); | 211 assertEquals(Map.prototype[Symbol.iterator], Map.prototype.entries); |
194 assertTrue(Map.prototype.hasOwnProperty(Symbol.iterator)); | 212 assertTrue(Map.prototype.hasOwnProperty(Symbol.iterator)); |
195 assertFalse(Map.prototype.propertyIsEnumerable(Symbol.iterator)); | 213 assertFalse(Map.prototype.propertyIsEnumerable(Symbol.iterator)); |
196 | 214 |
197 var iter = new Map().values(); | 215 var iter = new Map().values(); |
198 assertEquals(iter, iter[Symbol.iterator]()); | 216 assertEquals(iter, iter[Symbol.iterator]()); |
199 assertEquals(iter[Symbol.iterator].name, '[Symbol.iterator]'); | 217 assertEquals(iter[Symbol.iterator].name, '[Symbol.iterator]'); |
200 })(); | 218 })(); |
OLD | NEW |