Chromium Code Reviews| Index: tests/compiler/dart2js/dump_info_test.dart |
| diff --git a/tests/compiler/dart2js/dump_info_test.dart b/tests/compiler/dart2js/dump_info_test.dart |
| index 9d5e04d8a13b1f4fde2b7f1cbe87d8ae99c6c39b..d1920e57075c5ce1d72482755be340cf3ce072f3 100644 |
| --- a/tests/compiler/dart2js/dump_info_test.dart |
| +++ b/tests/compiler/dart2js/dump_info_test.dart |
| @@ -42,18 +42,43 @@ main() { |
| } |
| """; |
| +const String TEST_TWO = r""" |
| main() { |
| - var compiler = compilerFor({'main.dart': TEST_ONE}, options: ["--dump-info"]); |
| - asyncTest(() => compiler.runCompiler(Uri.parse('memory:main.dart')).then((_) { |
| - var dumpTask = compiler.dumpInfoTask; |
| - dumpTask.collectInfo(); |
| - var info = dumpTask.infoCollector; |
| + print(bar); |
| + print(bar()); |
| + print(new X().foo); |
| + print(new X().foo()); |
| +} |
| + |
| +bar() => [() => [() => [() => [() => [() => [() => [() => [() => [() => [() => |
| +[() => []]]]]]]]]]]]; |
| + |
| +class X { |
| + foo() => [() => [() => [() => [() => [() => [() => [() => [() => [() => |
| +[() => []]]]]]]]]]]; |
| +} |
| +"""; |
| + |
| +typedef void JsonTaking(Map<String, dynamic> json); |
|
sra1
2014/08/13 21:45:26
I'd put a line between top level declarations unle
Ty Overby (Google)
2014/08/13 22:00:31
Done.
|
| +void jsonTest(String program, JsonTaking testFn) { |
| + var compiler = compilerFor({'main.dart': program}, options: ['--dump-info']); |
| + asyncTest(() => compiler.runCompiler(Uri.parse('memory:main.dart')).then( |
| + (_) { |
| + var dumpTask = compiler.dumpInfoTask; |
| + dumpTask.collectInfo(); |
| + var info = dumpTask.infoCollector; |
| + |
| + StringBuffer sb = new StringBuffer(); |
| + dumpTask.dumpInfoJson(sb); |
| + String json = sb.toString(); |
| + Map<String, dynamic> map = JSON.decode(json); |
| - StringBuffer sb = new StringBuffer(); |
| - dumpTask.dumpInfoJson(sb); |
| - String json = sb.toString(); |
| - Map<String, dynamic> map = JSON.decode(json); |
| - Expect.isTrue(map.isNotEmpty); |
| + testFn(map); |
| + })); |
| +} |
| + |
| +main() { |
| + jsonTest(TEST_ONE, (map) { |
| Expect.isTrue(map['elements'].isNotEmpty); |
| Expect.isTrue(map['elements']['function'].isNotEmpty); |
| Expect.isTrue(map['elements']['library'].isNotEmpty); |
| @@ -67,5 +92,15 @@ main() { |
| Expect.isTrue(map['elements']['function'].values.any((fun) { |
| return fun['name'] == 'f'; |
| })); |
| - })); |
| + }); |
| + |
| + jsonTest(TEST_TWO, (map) { |
| + var functions = map['elements']['function'].values; |
| + Expect.isTrue(functions.any((fn) { |
| + return fn['name'] == 'bar' && fn['children'].length == 11; |
| + })); |
| + Expect.isTrue(functions.any((fn) { |
| + return fn['name'] == 'foo' && fn['children'].length == 10; |
| + })); |
| + }); |
| } |