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

Side by Side Diff: tests/compiler/dart2js/class_set_test.dart

Issue 1304083008: Add ClassSet to support ClassWorld.strictSubtypesOf (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Cleanup. Created 5 years, 3 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
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 // Test for iterators on for [SubclassNode]. 5 // Test for iterators on for [SubclassNode].
6 6
7 library world_test; 7 library world_test;
8 8
9 import 'package:expect/expect.dart'; 9 import 'package:expect/expect.dart';
10 import 'package:async_helper/async_helper.dart'; 10 import 'package:async_helper/async_helper.dart';
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 ClassElement B = env.getElement("B"); 48 ClassElement B = env.getElement("B");
49 ClassElement C = env.getElement("C"); 49 ClassElement C = env.getElement("C");
50 ClassElement D = env.getElement("D"); 50 ClassElement D = env.getElement("D");
51 ClassElement E = env.getElement("E"); 51 ClassElement E = env.getElement("E");
52 ClassElement F = env.getElement("F"); 52 ClassElement F = env.getElement("F");
53 ClassElement G = env.getElement("G"); 53 ClassElement G = env.getElement("G");
54 54
55 void checkClass(ClassElement cls, 55 void checkClass(ClassElement cls,
56 {bool directlyInstantiated: false, 56 {bool directlyInstantiated: false,
57 bool indirectlyInstantiated: false}) { 57 bool indirectlyInstantiated: false}) {
58 ClassHierarchyNode node = world.classHierarchyNode(cls); 58 ClassHierarchyNode node = world.getClassHierarchyNode(cls);
59 Expect.isNotNull(node, "Expected ClassHierarchyNode for $cls."); 59 Expect.isNotNull(node, "Expected ClassHierarchyNode for $cls.");
60 Expect.equals( 60 Expect.equals(
61 directlyInstantiated || indirectlyInstantiated, 61 directlyInstantiated || indirectlyInstantiated,
62 node.isInstantiated, 62 node.isInstantiated,
63 "Unexpected `isInstantiated` on ClassHierarchyNode for $cls."); 63 "Unexpected `isInstantiated` on ClassHierarchyNode for $cls.");
64 Expect.equals( 64 Expect.equals(
65 directlyInstantiated, 65 directlyInstantiated,
66 node.isDirectlyInstantiated, 66 node.isDirectlyInstantiated,
67 "Unexpected `isDirectlyInstantiated` on ClassHierarchyNode for " 67 "Unexpected `isDirectlyInstantiated` on ClassHierarchyNode for "
68 "$cls."); 68 "$cls.");
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 } else { 124 } else {
125 Expect.isNotNull(foundStack, 125 Expect.isNotNull(foundStack,
126 "Expected non-null stack ${stack} in $sb."); 126 "Expected non-null stack ${stack} in $sb.");
127 Expect.listEquals(stack, foundStack, 127 Expect.listEquals(stack, foundStack,
128 "Expected stack ${stack}, " 128 "Expected stack ${stack}, "
129 "found ${foundStack} in $sb."); 129 "found ${foundStack} in $sb.");
130 } 130 }
131 } 131 }
132 132
133 iterator = new ClassHierarchyNodeIterable( 133 iterator = new ClassHierarchyNodeIterable(
134 world.classHierarchyNode(G)).iterator; 134 world.getClassHierarchyNode(G)).iterator;
135 checkState(G, currentNode: null, stack: null); 135 checkState(G, currentNode: null, stack: null);
136 Expect.isNull(iterator.current); 136 Expect.isNull(iterator.current);
137 Expect.isTrue(iterator.moveNext()); 137 Expect.isTrue(iterator.moveNext());
138 checkState(G, currentNode: G, stack: []); 138 checkState(G, currentNode: G, stack: []);
139 Expect.equals(G, iterator.current); 139 Expect.equals(G, iterator.current);
140 Expect.isFalse(iterator.moveNext()); 140 Expect.isFalse(iterator.moveNext());
141 checkState(G, currentNode: null, stack: []); 141 checkState(G, currentNode: null, stack: []);
142 Expect.isNull(iterator.current); 142 Expect.isNull(iterator.current);
143 143
144 iterator = new ClassHierarchyNodeIterable( 144 iterator = new ClassHierarchyNodeIterable(
145 world.classHierarchyNode(G), includeRoot: false).iterator; 145 world.getClassHierarchyNode(G),
146 includeRoot: false).iterator;
146 checkState(G, currentNode: null, stack: null); 147 checkState(G, currentNode: null, stack: null);
147 Expect.isNull(iterator.current); 148 Expect.isNull(iterator.current);
148 Expect.isFalse(iterator.moveNext()); 149 Expect.isFalse(iterator.moveNext());
149 checkState(G, currentNode: null, stack: []); 150 checkState(G, currentNode: null, stack: []);
150 Expect.isNull(iterator.current); 151 Expect.isNull(iterator.current);
151 152
152 iterator = new ClassHierarchyNodeIterable( 153 iterator = new ClassHierarchyNodeIterable(
153 world.classHierarchyNode(C)).iterator; 154 world.getClassHierarchyNode(C)).iterator;
154 checkState(C, currentNode: null, stack: null); 155 checkState(C, currentNode: null, stack: null);
155 Expect.isNull(iterator.current); 156 Expect.isNull(iterator.current);
156 Expect.isTrue(iterator.moveNext()); 157 Expect.isTrue(iterator.moveNext());
157 checkState(C, currentNode: C, stack: [E, F, G]); 158 checkState(C, currentNode: C, stack: [E, F, G]);
158 Expect.equals(C, iterator.current); 159 Expect.equals(C, iterator.current);
159 Expect.isTrue(iterator.moveNext()); 160 Expect.isTrue(iterator.moveNext());
160 checkState(C, currentNode: E, stack: [F, G]); 161 checkState(C, currentNode: E, stack: [F, G]);
161 Expect.equals(E, iterator.current); 162 Expect.equals(E, iterator.current);
162 Expect.isTrue(iterator.moveNext()); 163 Expect.isTrue(iterator.moveNext());
163 checkState(C, currentNode: F, stack: [G]); 164 checkState(C, currentNode: F, stack: [G]);
164 Expect.equals(F, iterator.current); 165 Expect.equals(F, iterator.current);
165 Expect.isTrue(iterator.moveNext()); 166 Expect.isTrue(iterator.moveNext());
166 checkState(C, currentNode: G, stack: []); 167 checkState(C, currentNode: G, stack: []);
167 Expect.equals(G, iterator.current); 168 Expect.equals(G, iterator.current);
168 Expect.isFalse(iterator.moveNext()); 169 Expect.isFalse(iterator.moveNext());
169 checkState(C, currentNode: null, stack: []); 170 checkState(C, currentNode: null, stack: []);
170 Expect.isNull(iterator.current); 171 Expect.isNull(iterator.current);
171 172
172 iterator = new ClassHierarchyNodeIterable( 173 iterator = new ClassHierarchyNodeIterable(
173 world.classHierarchyNode(D)).iterator; 174 world.getClassHierarchyNode(D)).iterator;
174 checkState(D, currentNode: null, stack: null); 175 checkState(D, currentNode: null, stack: null);
175 Expect.isNull(iterator.current); 176 Expect.isNull(iterator.current);
176 Expect.isTrue(iterator.moveNext()); 177 Expect.isTrue(iterator.moveNext());
177 checkState(D, currentNode: D, stack: []); 178 checkState(D, currentNode: D, stack: []);
178 Expect.equals(D, iterator.current); 179 Expect.equals(D, iterator.current);
179 Expect.isFalse(iterator.moveNext()); 180 Expect.isFalse(iterator.moveNext());
180 checkState(D, currentNode: null, stack: []); 181 checkState(D, currentNode: null, stack: []);
181 Expect.isNull(iterator.current); 182 Expect.isNull(iterator.current);
182 183
183 iterator = new ClassHierarchyNodeIterable( 184 iterator = new ClassHierarchyNodeIterable(
184 world.classHierarchyNode(B)).iterator; 185 world.getClassHierarchyNode(B)).iterator;
185 checkState(B, currentNode: null, stack: null); 186 checkState(B, currentNode: null, stack: null);
186 Expect.isNull(iterator.current); 187 Expect.isNull(iterator.current);
187 Expect.isTrue(iterator.moveNext()); 188 Expect.isTrue(iterator.moveNext());
188 checkState(B, currentNode: B, stack: [D]); 189 checkState(B, currentNode: B, stack: [D]);
189 Expect.equals(B, iterator.current); 190 Expect.equals(B, iterator.current);
190 Expect.isTrue(iterator.moveNext()); 191 Expect.isTrue(iterator.moveNext());
191 checkState(B, currentNode: D, stack: []); 192 checkState(B, currentNode: D, stack: []);
192 Expect.equals(D, iterator.current); 193 Expect.equals(D, iterator.current);
193 Expect.isFalse(iterator.moveNext()); 194 Expect.isFalse(iterator.moveNext());
194 checkState(B, currentNode: null, stack: []); 195 checkState(B, currentNode: null, stack: []);
195 Expect.isNull(iterator.current); 196 Expect.isNull(iterator.current);
196 197
197 iterator = new ClassHierarchyNodeIterable( 198 iterator = new ClassHierarchyNodeIterable(
198 world.classHierarchyNode(B), includeRoot: false).iterator; 199 world.getClassHierarchyNode(B),
200 includeRoot: false).iterator;
199 checkState(B, currentNode: null, stack: null); 201 checkState(B, currentNode: null, stack: null);
200 Expect.isNull(iterator.current); 202 Expect.isNull(iterator.current);
201 Expect.isTrue(iterator.moveNext()); 203 Expect.isTrue(iterator.moveNext());
202 checkState(B, currentNode: D, stack: []); 204 checkState(B, currentNode: D, stack: []);
203 Expect.equals(D, iterator.current); 205 Expect.equals(D, iterator.current);
204 Expect.isFalse(iterator.moveNext()); 206 Expect.isFalse(iterator.moveNext());
205 checkState(B, currentNode: null, stack: []); 207 checkState(B, currentNode: null, stack: []);
206 Expect.isNull(iterator.current); 208 Expect.isNull(iterator.current);
207 209
208 iterator = new ClassHierarchyNodeIterable( 210 iterator = new ClassHierarchyNodeIterable(
209 world.classHierarchyNode(B), directlyInstantiatedOnly: true).iterator; 211 world.getClassHierarchyNode(B),
212 includeIndirectlyInstantiated: false).iterator;
210 checkState(B, currentNode: null, stack: null); 213 checkState(B, currentNode: null, stack: null);
211 Expect.isNull(iterator.current); 214 Expect.isNull(iterator.current);
212 Expect.isTrue(iterator.moveNext()); 215 Expect.isTrue(iterator.moveNext());
213 checkState(B, currentNode: D, stack: []); 216 checkState(B, currentNode: D, stack: []);
214 Expect.equals(D, iterator.current); 217 Expect.equals(D, iterator.current);
215 Expect.isFalse(iterator.moveNext()); 218 Expect.isFalse(iterator.moveNext());
216 checkState(B, currentNode: null, stack: []); 219 checkState(B, currentNode: null, stack: []);
217 Expect.isNull(iterator.current); 220 Expect.isNull(iterator.current);
218 221
219 iterator = new ClassHierarchyNodeIterable( 222 iterator = new ClassHierarchyNodeIterable(
220 world.classHierarchyNode(A)).iterator; 223 world.getClassHierarchyNode(A)).iterator;
221 checkState(A, currentNode: null, stack: null); 224 checkState(A, currentNode: null, stack: null);
222 Expect.isNull(iterator.current); 225 Expect.isNull(iterator.current);
223 Expect.isTrue(iterator.moveNext()); 226 Expect.isTrue(iterator.moveNext());
224 checkState(A, currentNode: A, stack: [C, B]); 227 checkState(A, currentNode: A, stack: [C, B]);
225 Expect.equals(A, iterator.current); 228 Expect.equals(A, iterator.current);
226 Expect.isTrue(iterator.moveNext()); 229 Expect.isTrue(iterator.moveNext());
227 checkState(A, currentNode: C, stack: [E, F, G, B]); 230 checkState(A, currentNode: C, stack: [E, F, G, B]);
228 Expect.equals(C, iterator.current); 231 Expect.equals(C, iterator.current);
229 Expect.isTrue(iterator.moveNext()); 232 Expect.isTrue(iterator.moveNext());
230 checkState(A, currentNode: E, stack: [F, G, B]); 233 checkState(A, currentNode: E, stack: [F, G, B]);
231 Expect.equals(E, iterator.current); 234 Expect.equals(E, iterator.current);
232 Expect.isTrue(iterator.moveNext()); 235 Expect.isTrue(iterator.moveNext());
233 checkState(A, currentNode: F, stack: [G, B]); 236 checkState(A, currentNode: F, stack: [G, B]);
234 Expect.equals(F, iterator.current); 237 Expect.equals(F, iterator.current);
235 Expect.isTrue(iterator.moveNext()); 238 Expect.isTrue(iterator.moveNext());
236 checkState(A, currentNode: G, stack: [B]); 239 checkState(A, currentNode: G, stack: [B]);
237 Expect.equals(G, iterator.current); 240 Expect.equals(G, iterator.current);
238 Expect.isTrue(iterator.moveNext()); 241 Expect.isTrue(iterator.moveNext());
239 checkState(A, currentNode: B, stack: [D]); 242 checkState(A, currentNode: B, stack: [D]);
240 Expect.equals(B, iterator.current); 243 Expect.equals(B, iterator.current);
241 Expect.isTrue(iterator.moveNext()); 244 Expect.isTrue(iterator.moveNext());
242 checkState(A, currentNode: D, stack: []); 245 checkState(A, currentNode: D, stack: []);
243 Expect.equals(D, iterator.current); 246 Expect.equals(D, iterator.current);
244 Expect.isFalse(iterator.moveNext()); 247 Expect.isFalse(iterator.moveNext());
245 checkState(A, currentNode: null, stack: []); 248 checkState(A, currentNode: null, stack: []);
246 Expect.isNull(iterator.current); 249 Expect.isNull(iterator.current);
247 250
248 iterator = new ClassHierarchyNodeIterable( 251 iterator = new ClassHierarchyNodeIterable(
249 world.classHierarchyNode(A), includeRoot: false).iterator; 252 world.getClassHierarchyNode(A),
253 includeRoot: false).iterator;
250 checkState(A, currentNode: null, stack: null); 254 checkState(A, currentNode: null, stack: null);
251 Expect.isNull(iterator.current); 255 Expect.isNull(iterator.current);
252 Expect.isTrue(iterator.moveNext()); 256 Expect.isTrue(iterator.moveNext());
253 checkState(A, currentNode: C, stack: [E, F, G, B]); 257 checkState(A, currentNode: C, stack: [E, F, G, B]);
254 Expect.equals(C, iterator.current); 258 Expect.equals(C, iterator.current);
255 Expect.isTrue(iterator.moveNext()); 259 Expect.isTrue(iterator.moveNext());
256 checkState(A, currentNode: E, stack: [F, G, B]); 260 checkState(A, currentNode: E, stack: [F, G, B]);
257 Expect.equals(E, iterator.current); 261 Expect.equals(E, iterator.current);
258 Expect.isTrue(iterator.moveNext()); 262 Expect.isTrue(iterator.moveNext());
259 checkState(A, currentNode: F, stack: [G, B]); 263 checkState(A, currentNode: F, stack: [G, B]);
260 Expect.equals(F, iterator.current); 264 Expect.equals(F, iterator.current);
261 Expect.isTrue(iterator.moveNext()); 265 Expect.isTrue(iterator.moveNext());
262 checkState(A, currentNode: G, stack: [B]); 266 checkState(A, currentNode: G, stack: [B]);
263 Expect.equals(G, iterator.current); 267 Expect.equals(G, iterator.current);
264 Expect.isTrue(iterator.moveNext()); 268 Expect.isTrue(iterator.moveNext());
265 checkState(A, currentNode: B, stack: [D]); 269 checkState(A, currentNode: B, stack: [D]);
266 Expect.equals(B, iterator.current); 270 Expect.equals(B, iterator.current);
267 Expect.isTrue(iterator.moveNext()); 271 Expect.isTrue(iterator.moveNext());
268 checkState(A, currentNode: D, stack: []); 272 checkState(A, currentNode: D, stack: []);
269 Expect.equals(D, iterator.current); 273 Expect.equals(D, iterator.current);
270 Expect.isFalse(iterator.moveNext()); 274 Expect.isFalse(iterator.moveNext());
271 checkState(A, currentNode: null, stack: []); 275 checkState(A, currentNode: null, stack: []);
272 Expect.isNull(iterator.current); 276 Expect.isNull(iterator.current);
273 277
274 iterator = new ClassHierarchyNodeIterable( 278 iterator = new ClassHierarchyNodeIterable(
275 world.classHierarchyNode(A), directlyInstantiatedOnly: true).iterator; 279 world.getClassHierarchyNode(A),
280 includeIndirectlyInstantiated: false).iterator;
276 checkState(A, currentNode: null, stack: null); 281 checkState(A, currentNode: null, stack: null);
277 Expect.isNull(iterator.current); 282 Expect.isNull(iterator.current);
278 Expect.isTrue(iterator.moveNext()); 283 Expect.isTrue(iterator.moveNext());
279 checkState(A, currentNode: A, stack: [C, B]); 284 checkState(A, currentNode: A, stack: [C, B]);
280 Expect.equals(A, iterator.current); 285 Expect.equals(A, iterator.current);
281 Expect.isTrue(iterator.moveNext()); 286 Expect.isTrue(iterator.moveNext());
282 checkState(A, currentNode: C, stack: [E, F, G, B]); 287 checkState(A, currentNode: C, stack: [E, F, G, B]);
283 Expect.equals(C, iterator.current); 288 Expect.equals(C, iterator.current);
284 Expect.isTrue(iterator.moveNext()); 289 Expect.isTrue(iterator.moveNext());
285 checkState(A, currentNode: E, stack: [F, G, B]); 290 checkState(A, currentNode: E, stack: [F, G, B]);
286 Expect.equals(E, iterator.current); 291 Expect.equals(E, iterator.current);
287 Expect.isTrue(iterator.moveNext()); 292 Expect.isTrue(iterator.moveNext());
288 checkState(A, currentNode: F, stack: [G, B]); 293 checkState(A, currentNode: F, stack: [G, B]);
289 Expect.equals(F, iterator.current); 294 Expect.equals(F, iterator.current);
290 Expect.isTrue(iterator.moveNext()); 295 Expect.isTrue(iterator.moveNext());
291 checkState(A, currentNode: G, stack: [B]); 296 checkState(A, currentNode: G, stack: [B]);
292 Expect.equals(G, iterator.current); 297 Expect.equals(G, iterator.current);
293 Expect.isTrue(iterator.moveNext()); 298 Expect.isTrue(iterator.moveNext());
294 checkState(A, currentNode: D, stack: []); 299 checkState(A, currentNode: D, stack: []);
295 Expect.equals(D, iterator.current); 300 Expect.equals(D, iterator.current);
296 Expect.isFalse(iterator.moveNext()); 301 Expect.isFalse(iterator.moveNext());
297 checkState(A, currentNode: null, stack: []); 302 checkState(A, currentNode: null, stack: []);
298 Expect.isNull(iterator.current); 303 Expect.isNull(iterator.current);
299 304
300 iterator = new ClassHierarchyNodeIterable( 305 iterator = new ClassHierarchyNodeIterable(
301 world.classHierarchyNode(A), 306 world.getClassHierarchyNode(A),
302 includeRoot: false, directlyInstantiatedOnly: true).iterator; 307 includeRoot: false,
308 includeIndirectlyInstantiated: false).iterator;
303 checkState(A, currentNode: null, stack: null); 309 checkState(A, currentNode: null, stack: null);
304 Expect.isNull(iterator.current); 310 Expect.isNull(iterator.current);
305 Expect.isTrue(iterator.moveNext()); 311 Expect.isTrue(iterator.moveNext());
306 checkState(A, currentNode: C, stack: [E, F, G, B]); 312 checkState(A, currentNode: C, stack: [E, F, G, B]);
307 Expect.equals(C, iterator.current); 313 Expect.equals(C, iterator.current);
308 Expect.isTrue(iterator.moveNext()); 314 Expect.isTrue(iterator.moveNext());
309 checkState(A, currentNode: E, stack: [F, G, B]); 315 checkState(A, currentNode: E, stack: [F, G, B]);
310 Expect.equals(E, iterator.current); 316 Expect.equals(E, iterator.current);
311 Expect.isTrue(iterator.moveNext()); 317 Expect.isTrue(iterator.moveNext());
312 checkState(A, currentNode: F, stack: [G, B]); 318 checkState(A, currentNode: F, stack: [G, B]);
313 Expect.equals(F, iterator.current); 319 Expect.equals(F, iterator.current);
314 Expect.isTrue(iterator.moveNext()); 320 Expect.isTrue(iterator.moveNext());
315 checkState(A, currentNode: G, stack: [B]); 321 checkState(A, currentNode: G, stack: [B]);
316 Expect.equals(G, iterator.current); 322 Expect.equals(G, iterator.current);
317 Expect.isTrue(iterator.moveNext()); 323 Expect.isTrue(iterator.moveNext());
318 checkState(A, currentNode: D, stack: []); 324 checkState(A, currentNode: D, stack: []);
319 Expect.equals(D, iterator.current); 325 Expect.equals(D, iterator.current);
320 Expect.isFalse(iterator.moveNext()); 326 Expect.isFalse(iterator.moveNext());
321 checkState(A, currentNode: null, stack: []); 327 checkState(A, currentNode: null, stack: []);
322 Expect.isNull(iterator.current); 328 Expect.isNull(iterator.current);
323 })); 329 }));
324 } 330 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698