Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Side by Side Diff: test/mjsunit/harmony/collection-iterator.js

Issue 259883002: ES6: Add support for Map and Set Iterator (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Code review changes Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « test/cctest/test-ordered-hash-table.cc ('k') | test/mjsunit/regress/regress-3281.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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);
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);
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 })();
OLDNEW
« no previous file with comments | « test/cctest/test-ordered-hash-table.cc ('k') | test/mjsunit/regress/regress-3281.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698