| Index: dart/tests/try/poi/compiler_test_case.dart | 
| diff --git a/dart/tests/try/poi/compiler_test_case.dart b/dart/tests/try/poi/compiler_test_case.dart | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..c24a88dd6ec87aeae40b429cf56c7dd92f1ac42e | 
| --- /dev/null | 
| +++ b/dart/tests/try/poi/compiler_test_case.dart | 
| @@ -0,0 +1,66 @@ | 
| +// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file | 
| +// for details. All rights reserved. Use of this source code is governed by a | 
| +// BSD-style license that can be found in the LICENSE file. | 
| + | 
| +// Helper class for writing compiler tests. | 
| +library trydart.compiler_test_case; | 
| + | 
| +import 'dart:async' show | 
| +    Future; | 
| + | 
| +export 'dart:async' show | 
| +    Future; | 
| + | 
| +import 'package:async_helper/async_helper.dart' show | 
| +    asyncTest; | 
| + | 
| +import '../../compiler/dart2js/compiler_helper.dart' show | 
| +    MockCompiler, | 
| +    compilerFor; | 
| + | 
| +export 'package:expect/expect.dart' show | 
| +    Expect; | 
| + | 
| +const String SCHEME = 'org.trydart.compiler-test-case'; | 
| + | 
| +Uri customUri(String path) => Uri.parse('$SCHEME://$path'); | 
| + | 
| +Future runTests(List<CompilerTest> tests) { | 
| +  asyncTest(() => Future.forEach(tests, runTest)); | 
| +} | 
| + | 
| +Future runTest(CompilerTestCase test) { | 
| +  print('\n{{{\n$test\n\n=== Test Output:\n'); | 
| +  return test.run().then((_) { | 
| +  print('}}}'); | 
| +  }); | 
| +} | 
| + | 
| +abstract class CompilerTestCase { | 
| +  final String source; | 
| + | 
| +  final Uri scriptUri; | 
| + | 
| +  final MockCompiler compiler; | 
| + | 
| +  Future<LibraryElement> mainAppCache; | 
| + | 
| +  CompilerTestCase.init(this.source, this.scriptUri, this.compiler); | 
| + | 
| +  CompilerTestCase.intermediate(String source, Uri scriptUri) | 
| +      : this.init(source, scriptUri, compilerFor(source, scriptUri)); | 
| + | 
| +  CompilerTestCase(String source, [String path]) | 
| +      : this.intermediate(source, customUri(path == null ? 'main.dart' : path)); | 
| + | 
| +  Future<LibraryElement> get mainApp { | 
| +    if (mainAppCache == null) { | 
| +      mainAppCache = compiler.libraryLoader.loadLibrary(scriptUri); | 
| +    } | 
| +    return mainAppCache; | 
| +  } | 
| + | 
| +  Future run(); | 
| + | 
| +  String toString() => source; | 
| +} | 
|  |