OLD | NEW |
---|---|
(Empty) | |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 // Flags: --harmony-collections --allow-natives-syntax | |
6 | |
7 | |
8 (function TestSetIterator() { | |
9 var s = new Set; | |
10 var iter = s.values(); | |
11 assertEquals('Set Iterator', %_ClassOf(iter)); | |
12 | |
13 var SetIteratorPrototype = iter.__proto__; | |
14 assertFalse(SetIteratorPrototype.hasOwnProperty('constructor')); | |
15 assertEquals(SetIteratorPrototype.__proto__, Object.prototype); | |
16 | |
17 var propertyNames = Object.getOwnPropertyNames(SetIteratorPrototype); | |
18 assertArrayEquals(['next'], propertyNames); | |
19 | |
20 assertEquals(new Set().values().__proto__. SetIteratorPrototype); | |
Michael Starzinger
2014/06/02 11:53:36
typo: there is a period instead of a comma after "
rossberg
2014/06/02 12:24:27
OMG. This language is so far beyond repair...
arv (Not doing code reviews)
2014/06/02 23:40:52
Done.
| |
21 assertEquals(new Set().entries().__proto__. SetIteratorPrototype); | |
22 })(); | |
23 | |
24 | |
25 (function TestSetIteratorValues() { | |
26 var s = new Set; | |
27 s.add(1); | |
28 s.add(2); | |
29 s.add(3); | |
30 var iter = s.values(); | |
31 | |
32 assertEquals({value: 1, done: false}, iter.next()); | |
33 assertEquals({value: 2, done: false}, iter.next()); | |
34 assertEquals({value: 3, done: false}, iter.next()); | |
35 assertEquals({value: undefined, done: true}, iter.next()); | |
36 assertEquals({value: undefined, done: true}, iter.next()); | |
37 })(); | |
38 | |
39 | |
40 (function TestSetIteratorEntries() { | |
41 var s = new Set; | |
42 s.add(1); | |
43 s.add(2); | |
44 s.add(3); | |
45 var iter = s.entries(); | |
46 | |
47 assertEquals({value: [1, 1], done: false}, iter.next()); | |
48 assertEquals({value: [2, 2], done: false}, iter.next()); | |
49 assertEquals({value: [3, 3], done: false}, iter.next()); | |
50 assertEquals({value: undefined, done: true}, iter.next()); | |
51 assertEquals({value: undefined, done: true}, iter.next()); | |
52 })(); | |
53 | |
54 | |
55 (function TestSetIteratorMutations() { | |
56 var s = new Set; | |
57 s.add(1); | |
58 var iter = s.values(); | |
59 assertEquals({value: 1, done: false}, iter.next()); | |
60 s.add(2); | |
61 s.add(3); | |
62 s.add(4); | |
63 s.add(5); | |
64 assertEquals({value: 2, done: false}, iter.next()); | |
65 s.delete(3); | |
66 assertEquals({value: 4, done: false}, iter.next()); | |
67 s.delete(5); | |
68 assertEquals({value: undefined, done: true}, iter.next()); | |
69 s.add(4); | |
70 assertEquals({value: undefined, done: true}, iter.next()); | |
71 })(); | |
72 | |
73 | |
74 (function TestSetInvalidReceiver() { | |
75 assertThrows(function() { | |
76 Set.prototype.values.call({}); | |
77 }, TypeError); | |
78 assertThrows(function() { | |
79 Set.prototype.entries.call({}); | |
80 }, TypeError); | |
81 })(); | |
82 | |
83 | |
84 (function TestSetIteratorInvalidReceiver() { | |
85 var iter = new Set().values(); | |
86 assertThrows(function() { | |
87 iter.next.call({}); | |
88 }); | |
89 })(); | |
90 | |
91 | |
92 (function TestSetIteratorSymbol() { | |
93 assertEquals(Set.prototype[Symbol.iterator], Set.prototype.values); | |
94 assertTrue(Set.prototype.hasOwnProperty(Symbol.iterator)); | |
95 assertFalse(Set.prototype.propertyIsEnumerable(Symbol.iterator)); | |
96 | |
97 var iter = new Set().values(); | |
98 assertEquals(iter, iter[Symbol.iterator]()); | |
99 assertEquals(iter[Symbol.iterator].name, '[Symbol.iterator]'); | |
100 })(); | |
101 | |
102 | |
103 (function TestMapIterator() { | |
104 var m = new Map; | |
105 var iter = m.values(); | |
106 assertEquals('Map Iterator', %_ClassOf(iter)); | |
107 | |
108 var MapIteratorPrototype = iter.__proto__; | |
109 assertFalse(MapIteratorPrototype.hasOwnProperty('constructor')); | |
110 assertEquals(MapIteratorPrototype.__proto__, Object.prototype); | |
111 | |
112 var propertyNames = Object.getOwnPropertyNames(MapIteratorPrototype); | |
113 assertArrayEquals(['next'], propertyNames); | |
114 | |
115 assertEquals(new Map().values().__proto__. MapIteratorPrototype); | |
Michael Starzinger
2014/06/02 11:53:36
typo: Likewise.
arv (Not doing code reviews)
2014/06/02 23:40:52
Done.
| |
116 assertEquals(new Map().keys().__proto__. MapIteratorPrototype); | |
117 assertEquals(new Map().entries().__proto__. MapIteratorPrototype); | |
118 })(); | |
119 | |
120 | |
121 (function TestMapIteratorValues() { | |
122 var m = new Map; | |
123 m.set(1, 11); | |
124 m.set(2, 22); | |
125 m.set(3, 33); | |
126 var iter = m.values(); | |
127 | |
128 assertEquals({value: 11, done: false}, iter.next()); | |
129 assertEquals({value: 22, done: false}, iter.next()); | |
130 assertEquals({value: 33, done: false}, iter.next()); | |
131 assertEquals({value: undefined, done: true}, iter.next()); | |
132 assertEquals({value: undefined, done: true}, iter.next()); | |
133 })(); | |
134 | |
135 | |
136 (function TestMapIteratorKeys() { | |
137 var m = new Map; | |
138 m.set(1, 11); | |
139 m.set(2, 22); | |
140 m.set(3, 33); | |
141 var iter = m.keys(); | |
142 | |
143 assertEquals({value: 1, done: false}, iter.next()); | |
144 assertEquals({value: 2, done: false}, iter.next()); | |
145 assertEquals({value: 3, done: false}, iter.next()); | |
146 assertEquals({value: undefined, done: true}, iter.next()); | |
147 assertEquals({value: undefined, done: true}, iter.next()); | |
148 })(); | |
149 | |
150 | |
151 (function TestMapIteratorEntries() { | |
152 var m = new Map; | |
153 m.set(1, 11); | |
154 m.set(2, 22); | |
155 m.set(3, 33); | |
156 var iter = m.entries(); | |
157 | |
158 assertEquals({value: [1, 11], done: false}, iter.next()); | |
159 assertEquals({value: [2, 22], done: false}, iter.next()); | |
160 assertEquals({value: [3, 33], done: false}, iter.next()); | |
161 assertEquals({value: undefined, done: true}, iter.next()); | |
162 assertEquals({value: undefined, done: true}, iter.next()); | |
163 })(); | |
164 | |
165 | |
166 (function TestMapInvalidReceiver() { | |
167 assertThrows(function() { | |
168 Map.prototype.values.call({}); | |
169 }, TypeError); | |
170 assertThrows(function() { | |
171 Map.prototype.keys.call({}); | |
172 }, TypeError); | |
173 assertThrows(function() { | |
174 Map.prototype.entries.call({}); | |
175 }, TypeError); | |
176 })(); | |
177 | |
178 | |
179 (function TestMapIteratorInvalidReceiver() { | |
180 var iter = new Map().values(); | |
181 assertThrows(function() { | |
182 iter.next.call({}); | |
183 }, TypeError); | |
184 })(); | |
185 | |
186 | |
187 (function TestMapIteratorSymbol() { | |
188 assertEquals(Map.prototype[Symbol.iterator], Map.prototype.entries); | |
189 assertTrue(Map.prototype.hasOwnProperty(Symbol.iterator)); | |
190 assertFalse(Map.prototype.propertyIsEnumerable(Symbol.iterator)); | |
191 | |
192 var iter = new Map().values(); | |
193 assertEquals(iter, iter[Symbol.iterator]()); | |
194 assertEquals(iter[Symbol.iterator].name, '[Symbol.iterator]'); | |
195 })(); | |
OLD | NEW |