OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 of the graph segmentation algorithm used by deferred loading | 5 // Test of the graph segmentation algorithm used by deferred loading |
6 // to determine which elements can be deferred and which libraries | 6 // to determine which elements can be deferred and which libraries |
7 // much be included in the initial download (loaded eagerly). | 7 // much be included in the initial download (loaded eagerly). |
8 | 8 |
9 import 'dart:async'; | 9 import 'dart:async'; |
10 import 'package:expect/expect.dart'; | 10 import 'package:expect/expect.dart'; |
(...skipping 12 matching lines...) Expand all Loading... |
23 lookupLibrary(compiler, name) { | 23 lookupLibrary(compiler, name) { |
24 return compiler.libraryLoader.lookupLibrary(Uri.parse(name)); | 24 return compiler.libraryLoader.lookupLibrary(Uri.parse(name)); |
25 } | 25 } |
26 | 26 |
27 void main() { | 27 void main() { |
28 asyncTest(runTests); | 28 asyncTest(runTests); |
29 } | 29 } |
30 | 30 |
31 runTests() async { | 31 runTests() async { |
32 await runTest('memory:main.dart', (compiler) { | 32 await runTest('memory:main.dart', (compiler) { |
33 var main = compiler.mainApp.find(dart2js.Compiler.MAIN); | 33 var main = compiler.mainFunction; |
34 Expect.isNotNull(main, "Could not find 'main'"); | 34 Expect.isNotNull(main, "Could not find 'main'"); |
35 compiler.deferredLoadTask.onResolutionComplete(main); | 35 compiler.deferredLoadTask.onResolutionComplete(main); |
36 var outputUnitForElement = compiler.deferredLoadTask.outputUnitForElement; | 36 var outputUnitForElement = compiler.deferredLoadTask.outputUnitForElement; |
37 | 37 |
38 var lib1 = lookupLibrary(compiler, "memory:lib1.dart"); | 38 var lib1 = lookupLibrary(compiler, "memory:lib1.dart"); |
39 var lib2 = lookupLibrary(compiler, "memory:lib2.dart"); | 39 var lib2 = lookupLibrary(compiler, "memory:lib2.dart"); |
40 var mathLib = lookupLibrary(compiler, "dart:math"); | 40 var mathLib = lookupLibrary(compiler, "dart:math"); |
41 var sin = mathLib.find('sin'); | 41 var sin = mathLib.find('sin'); |
42 var foo1 = lib1.find("foo1"); | 42 var foo1 = lib1.find("foo1"); |
43 var foo2 = lib2.find("foo2"); | 43 var foo2 = lib2.find("foo2"); |
44 var field2 = lib2.find("field2"); | 44 var field2 = lib2.find("field2"); |
45 | 45 |
46 Expect.notEquals(outputUnitForElement(main), outputUnitForElement(foo1)); | 46 Expect.notEquals(outputUnitForElement(main), outputUnitForElement(foo1)); |
47 Expect.equals(outputUnitForElement(main), outputUnitForElement(sin)); | 47 Expect.equals(outputUnitForElement(main), outputUnitForElement(sin)); |
48 Expect.equals(outputUnitForElement(foo2), outputUnitForElement(field2)); | 48 Expect.equals(outputUnitForElement(foo2), outputUnitForElement(field2)); |
49 }); | 49 }); |
50 await runTest('memory:main2.dart', (compiler) { | 50 await runTest('memory:main2.dart', (compiler) { |
51 // Just check that the compile runs. | 51 // Just check that the compile runs. |
52 // This is a regression test. | 52 // This is a regression test. |
53 Expect.isTrue(true); | 53 Expect.isTrue(true); |
54 }); | 54 }); |
55 await runTest('memory:main3.dart', (compiler) { | 55 await runTest('memory:main3.dart', (compiler) { |
56 var main = compiler.mainApp.find(dart2js.Compiler.MAIN); | 56 var main = compiler.mainFunction; |
57 Expect.isNotNull(main, "Could not find 'main'"); | 57 Expect.isNotNull(main, "Could not find 'main'"); |
58 compiler.deferredLoadTask.onResolutionComplete(main); | 58 compiler.deferredLoadTask.onResolutionComplete(main); |
59 var outputUnitForElement = compiler.deferredLoadTask.outputUnitForElement; | 59 var outputUnitForElement = compiler.deferredLoadTask.outputUnitForElement; |
60 | 60 |
61 Expect.isFalse(compiler.backend.hasInsufficientMirrorsUsed); | 61 Expect.isFalse(compiler.backend.hasInsufficientMirrorsUsed); |
62 var mainLib = lookupLibrary(compiler, "memory:main3.dart"); | 62 var mainLib = lookupLibrary(compiler, "memory:main3.dart"); |
63 var lib3 = lookupLibrary(compiler, "memory:lib3.dart"); | 63 var lib3 = lookupLibrary(compiler, "memory:lib3.dart"); |
64 var C = mainLib.find("C"); | 64 var C = mainLib.find("C"); |
65 var foo = lib3.find("foo"); | 65 var foo = lib3.find("foo"); |
66 | 66 |
67 Expect.notEquals(outputUnitForElement(main), outputUnitForElement(foo)); | 67 Expect.notEquals(outputUnitForElement(main), outputUnitForElement(foo)); |
68 Expect.equals(outputUnitForElement(main), outputUnitForElement(C)); | 68 Expect.equals(outputUnitForElement(main), outputUnitForElement(C)); |
69 }); | 69 }); |
70 await runTest('memory:main4.dart', (compiler) { | 70 await runTest('memory:main4.dart', (compiler) { |
71 var main = compiler.mainApp.find(dart2js.Compiler.MAIN); | 71 var main = compiler.mainFunction; |
72 Expect.isNotNull(main, "Could not find 'main'"); | 72 Expect.isNotNull(main, "Could not find 'main'"); |
73 compiler.deferredLoadTask.onResolutionComplete(main); | 73 compiler.deferredLoadTask.onResolutionComplete(main); |
74 var outputUnitForElement = compiler.deferredLoadTask.outputUnitForElement; | 74 var outputUnitForElement = compiler.deferredLoadTask.outputUnitForElement; |
75 | 75 |
76 var mainLib = lookupLibrary(compiler, "memory:main4.dart"); | 76 var mainLib = lookupLibrary(compiler, "memory:main4.dart"); |
77 var lib4 = lookupLibrary(compiler, "memory:lib4.dart"); | 77 var lib4 = lookupLibrary(compiler, "memory:lib4.dart"); |
78 var lib5 = lookupLibrary(compiler, "memory:lib5.dart"); | 78 var lib5 = lookupLibrary(compiler, "memory:lib5.dart"); |
79 var lib6 = lookupLibrary(compiler, "memory:lib6.dart"); | 79 var lib6 = lookupLibrary(compiler, "memory:lib6.dart"); |
80 var foo5 = lib5.find("foo"); | 80 var foo5 = lib5.find("foo"); |
81 var foo6 = lib6.find("foo"); | 81 var foo6 = lib6.find("foo"); |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 library lib5; | 193 library lib5; |
194 | 194 |
195 foo() {} | 195 foo() {} |
196 """, | 196 """, |
197 "lib6.dart": """ | 197 "lib6.dart": """ |
198 library lib6; | 198 library lib6; |
199 | 199 |
200 foo() {} | 200 foo() {} |
201 """, | 201 """, |
202 }; | 202 }; |
OLD | NEW |