OLD | NEW |
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 class_set_test; | 7 library class_set_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'; |
11 import 'type_test_helper.dart'; | 11 import 'type_test_helper.dart'; |
12 import 'package:compiler/src/elements/elements.dart' show ClassElement; | 12 import 'package:compiler/src/elements/elements.dart' show ClassElement; |
13 import 'package:compiler/src/universe/class_set.dart'; | 13 import 'package:compiler/src/universe/class_set.dart'; |
14 import 'package:compiler/src/util/enumset.dart'; | 14 import 'package:compiler/src/util/enumset.dart'; |
15 import 'package:compiler/src/util/util.dart'; | 15 import 'package:compiler/src/util/util.dart'; |
16 import 'package:compiler/src/world.dart'; | 16 import 'package:compiler/src/world.dart'; |
17 | 17 |
18 void main() { | 18 void main() { |
19 asyncTest(() async { | 19 asyncTest(() async { |
20 await testIterators(); | 20 await testIterators(); |
21 await testForEach(); | 21 await testForEach(); |
22 }); | 22 }); |
23 } | 23 } |
24 | 24 |
25 testIterators() async { | 25 testIterators() async { |
26 var env = await TypeEnvironment.create( | 26 var env = await TypeEnvironment.create(r""" |
27 r""" | |
28 /// A | 27 /// A |
29 /// / \ | 28 /// / \ |
30 /// B C | 29 /// B C |
31 /// / /|\ | 30 /// / /|\ |
32 /// D E F G | 31 /// D E F G |
33 /// | 32 /// |
34 class A {} | 33 class A {} |
35 class B extends A {} | 34 class B extends A {} |
36 class C extends A {} | 35 class C extends A {} |
37 class D extends B {} | 36 class D extends B {} |
38 class E extends C {} | 37 class E extends C {} |
39 class F extends C {} | 38 class F extends C {} |
40 class G extends C {} | 39 class G extends C {} |
41 """, | 40 """, mainSource: r""" |
42 mainSource: r""" | |
43 main() { | 41 main() { |
44 new A(); | 42 new A(); |
45 new C(); | 43 new C(); |
46 new D(); | 44 new D(); |
47 new E(); | 45 new E(); |
48 new F(); | 46 new F(); |
49 new G(); | 47 new G(); |
50 } | 48 } |
51 """, | 49 """, useMockCompiler: false); |
52 useMockCompiler: false); | |
53 ClosedWorld world = env.closedWorld; | 50 ClosedWorld world = env.closedWorld; |
54 | 51 |
55 ClassElement A = env.getElement("A"); | 52 ClassElement A = env.getElement("A"); |
56 ClassElement B = env.getElement("B"); | 53 ClassElement B = env.getElement("B"); |
57 ClassElement C = env.getElement("C"); | 54 ClassElement C = env.getElement("C"); |
58 ClassElement D = env.getElement("D"); | 55 ClassElement D = env.getElement("D"); |
59 ClassElement E = env.getElement("E"); | 56 ClassElement E = env.getElement("E"); |
60 ClassElement F = env.getElement("F"); | 57 ClassElement F = env.getElement("F"); |
61 ClassElement G = env.getElement("G"); | 58 ClassElement G = env.getElement("G"); |
62 | 59 |
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
342 Expect.equals(G, iterator.current); | 339 Expect.equals(G, iterator.current); |
343 Expect.isTrue(iterator.moveNext()); | 340 Expect.isTrue(iterator.moveNext()); |
344 checkState(A, currentNode: D, stack: []); | 341 checkState(A, currentNode: D, stack: []); |
345 Expect.equals(D, iterator.current); | 342 Expect.equals(D, iterator.current); |
346 Expect.isFalse(iterator.moveNext()); | 343 Expect.isFalse(iterator.moveNext()); |
347 checkState(A, currentNode: null, stack: []); | 344 checkState(A, currentNode: null, stack: []); |
348 Expect.isNull(iterator.current); | 345 Expect.isNull(iterator.current); |
349 } | 346 } |
350 | 347 |
351 testForEach() async { | 348 testForEach() async { |
352 var env = await TypeEnvironment.create( | 349 var env = await TypeEnvironment.create(r""" |
353 r""" | |
354 /// A | 350 /// A |
355 /// / \ | 351 /// / \ |
356 /// B C | 352 /// B C |
357 /// / /|\ | 353 /// / /|\ |
358 /// D E F G | 354 /// D E F G |
359 /// / \ | 355 /// / \ |
360 /// H I | 356 /// H I |
361 /// | 357 /// |
362 class A implements X {} | 358 class A implements X {} |
363 class B extends A {} | 359 class B extends A {} |
364 class C extends A {} | 360 class C extends A {} |
365 class D extends B {} | 361 class D extends B {} |
366 class E extends C {} | 362 class E extends C {} |
367 class F extends C implements B {} | 363 class F extends C implements B {} |
368 class G extends C implements D {} | 364 class G extends C implements D {} |
369 class H extends F {} | 365 class H extends F {} |
370 class I extends F {} | 366 class I extends F {} |
371 class X {} | 367 class X {} |
372 """, | 368 """, mainSource: r""" |
373 mainSource: r""" | |
374 main() { | 369 main() { |
375 new A(); | 370 new A(); |
376 new C(); | 371 new C(); |
377 new D(); | 372 new D(); |
378 new E(); | 373 new E(); |
379 new F(); | 374 new F(); |
380 new G(); | 375 new G(); |
381 new H(); | 376 new H(); |
382 new I(); | 377 new I(); |
383 } | 378 } |
384 """, | 379 """, useMockCompiler: false); |
385 useMockCompiler: false); | |
386 ClosedWorld world = env.closedWorld; | 380 ClosedWorld world = env.closedWorld; |
387 | 381 |
388 ClassElement A = env.getElement("A"); | 382 ClassElement A = env.getElement("A"); |
389 ClassElement B = env.getElement("B"); | 383 ClassElement B = env.getElement("B"); |
390 ClassElement C = env.getElement("C"); | 384 ClassElement C = env.getElement("C"); |
391 ClassElement D = env.getElement("D"); | 385 ClassElement D = env.getElement("D"); |
392 ClassElement E = env.getElement("E"); | 386 ClassElement E = env.getElement("E"); |
393 ClassElement F = env.getElement("F"); | 387 ClassElement F = env.getElement("F"); |
394 ClassElement G = env.getElement("G"); | 388 ClassElement G = env.getElement("G"); |
395 ClassElement H = env.getElement("H"); | 389 ClassElement H = env.getElement("H"); |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
577 checkAny(B, [B, D], find: D, anySubtype: true, expectedResult: true); | 571 checkAny(B, [B, D], find: D, anySubtype: true, expectedResult: true); |
578 checkAny(B, [B, D, F, I], find: I, anySubtype: true, expectedResult: true); | 572 checkAny(B, [B, D, F, I], find: I, anySubtype: true, expectedResult: true); |
579 | 573 |
580 checkAny(X, [X, A, B, D, C, G, F, I, H, E], | 574 checkAny(X, [X, A, B, D, C, G, F, I, H, E], |
581 anySubtype: true, expectedResult: false); | 575 anySubtype: true, expectedResult: false); |
582 checkAny(X, [X, A], find: A, anySubtype: true, expectedResult: true); | 576 checkAny(X, [X, A], find: A, anySubtype: true, expectedResult: true); |
583 checkAny(X, [X, A, B, D], find: D, anySubtype: true, expectedResult: true); | 577 checkAny(X, [X, A, B, D], find: D, anySubtype: true, expectedResult: true); |
584 checkAny(X, [X, A, B, D, C, G, F, I], | 578 checkAny(X, [X, A, B, D, C, G, F, I], |
585 find: I, anySubtype: true, expectedResult: true); | 579 find: I, anySubtype: true, expectedResult: true); |
586 } | 580 } |
OLD | NEW |