Index: test/transformer_test.dart |
diff --git a/test/transformer_test.dart b/test/transformer_test.dart |
index ac3b25e91e7de622a71c7244359a3bf9469fd714..12e32598bc594aa0cb9ac468cdad074d8f39e614 100644 |
--- a/test/transformer_test.dart |
+++ b/test/transformer_test.dart |
@@ -4,19 +4,26 @@ |
library initialize.transformer_test; |
import 'common.dart'; |
+import 'package:analyzer/src/generated/element.dart'; |
import 'package:dart_style/dart_style.dart'; |
import 'package:initialize/transformer.dart'; |
import 'package:unittest/compact_vm_config.dart'; |
+import 'package:unittest/unittest.dart'; |
+ |
+var formatter = new DartFormatter(); |
main() { |
useCompactVMConfiguration(); |
- var formatter = new DartFormatter(); |
+ group('Html entry points', htmlEntryPointTests); |
+ group('Dart entry points', dartEntryPointTests); |
+ group('InitializerPlugins', pluginTests); |
+} |
- var htmlTransformer = new InitializeTransformer(['web/*.html']); |
- var dartTransformer = new InitializeTransformer(['web/index.dart']); |
+void htmlEntryPointTests() { |
+ var phases = [[new InitializeTransformer(['web/*.html'])]]; |
- testPhases('basic', [[htmlTransformer]], { |
+ testPhases('basic', phases, { |
'a|web/index.html': ''' |
<html><head></head><body> |
<script type="application/dart" src="index.dart"></script> |
@@ -101,8 +108,12 @@ main() { |
} |
''') |
}, []); |
+} |
- testPhases('constructor arguments', [[dartTransformer]], { |
+void dartEntryPointTests() { |
+ var phases = [[new InitializeTransformer(['web/index.dart'])]]; |
+ |
+ testPhases('constructor arguments', phases, { |
'a|web/index.dart': ''' |
@DynamicInit(foo) |
@DynamicInit(Foo.foo) |
@@ -158,3 +169,65 @@ main() { |
''') |
}, []); |
} |
+ |
+class SkipConstructorsPlugin extends InitializerPlugin { |
+ bool shouldApply(InitializerPluginData data) { |
+ return data.initializer.annotationElement.element is ConstructorElement; |
+ } |
+ |
+ String apply(_) => null; |
+} |
+ |
+void pluginTests() { |
+ var phases = [ |
+ [ |
+ new InitializeTransformer(['web/index.dart'], |
+ plugins: [new SkipConstructorsPlugin()]) |
+ ] |
+ ]; |
+ |
+ testPhases('can omit statements', phases, { |
+ 'a|web/index.dart': ''' |
+ library index; |
+ |
+ import 'package:initialize/initialize.dart'; |
+ import 'package:test_initializers/common.dart'; |
+ import 'foo.dart'; |
+ |
+ @initMethod |
+ @DynamicInit('index') |
+ index() {} |
+ ''', |
+ 'a|web/foo.dart': ''' |
+ library foo; |
+ |
+ import 'package:initialize/initialize.dart'; |
+ import 'package:test_initializers/common.dart'; |
+ |
+ @initMethod |
+ @DynamicInit('Foo') |
+ foo() {} |
+ ''', |
+ // Mock out the Initialize package plus some initializers. |
+ 'initialize|lib/initialize.dart': mockInitialize, |
+ 'test_initializers|lib/common.dart': commonInitializers, |
+ }, { |
+ 'a|web/index.initialize.dart': formatter.format(''' |
+ import 'package:initialize/src/static_loader.dart'; |
+ import 'package:initialize/initialize.dart'; |
+ import 'index.dart' as i0; |
+ import 'foo.dart' as i1; |
+ import 'package:initialize/initialize.dart' as i2; |
+ import 'package:test_initializers/common.dart' as i3; |
+ |
+ main() { |
+ initializers.addAll([ |
+ new InitEntry(i2.initMethod, i1.foo), |
+ new InitEntry(i2.initMethod, i0.index), |
+ ]); |
+ |
+ i0.main(); |
+ } |
+ ''') |
+ }, []); |
+} |