Index: packages/polymer/test/build/polymer_smoke_generator_test.dart |
diff --git a/packages/polymer/test/build/polymer_smoke_generator_test.dart b/packages/polymer/test/build/polymer_smoke_generator_test.dart |
deleted file mode 100644 |
index 7a115c135bac7a63092bd1431a911afe0cb106f2..0000000000000000000000000000000000000000 |
--- a/packages/polymer/test/build/polymer_smoke_generator_test.dart |
+++ /dev/null |
@@ -1,749 +0,0 @@ |
-// Copyright (c) 2013, 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. |
- |
-library polymer.test.build.polymer_smoke_generator_test; |
- |
-import 'package:code_transformers/tests.dart' |
- show testingDartSdkDirectory, StringFormatter; |
-import 'package:polymer/src/build/common.dart'; |
-import 'package:polymer/src/build/messages.dart'; |
-import 'package:polymer/src/build/polymer_smoke_generator.dart'; |
-import 'package:smoke/codegen/generator.dart' show DEFAULT_IMPORTS; |
-import 'package:unittest/compact_vm_config.dart'; |
-import 'package:unittest/unittest.dart'; |
- |
-import 'common.dart'; |
- |
-void main() { |
- useCompactVMConfiguration(); |
- var phases = [ |
- [ |
- new PolymerSmokeGeneratorTransformer(new TransformOptions(), |
- sdkDir: testingDartSdkDirectory) |
- ] |
- ]; |
- group('initializers', () => initializerTests(phases)); |
- group('codegen', () => codegenTests(phases)); |
- group('log element injection', logElementInjectionTests); |
-} |
- |
-initializerTests(phases) { |
- testPhases('no changes', phases, { |
- 'a|web/test.html': '<!DOCTYPE html><html></html>', |
- }, {'a|web/test.html': '<!DOCTYPE html><html></html>',}); |
- |
- testPhases('no changes outside web/', phases, { |
- 'a|lib/test.html': '<!DOCTYPE html><html><head>' |
- '<script type="application/dart" src="a.dart"></script>', |
- }, { |
- 'a|lib/test.html': '<!DOCTYPE html><html><head>' |
- '<script type="application/dart" src="a.dart"></script>', |
- }); |
- |
- testPhases('single script', phases, { |
- 'a|web/test.html': '<!DOCTYPE html><html><head>' |
- '<script type="application/dart" src="a.dart"></script>', |
- 'a|web/a.dart': 'library a;\n' |
- 'import "package:polymer/polymer.dart";\n' |
- 'main(){}', |
- }, { |
- 'a|web/test.html': '<!DOCTYPE html><html><head>' |
- '<script type="application/dart" src="test.html_bootstrap.dart">' |
- '</script>' |
- '</head><body></body></html>', |
- 'a|web/test.html_bootstrap.dart': '''$MAIN_HEADER |
- import 'a.dart' as i0; |
- ${DEFAULT_IMPORTS.join('\n')} |
- import 'package:polymer/polymer.dart' as smoke_0; |
- |
- main() { |
- useGeneratedCode(new StaticConfiguration( |
- checkedMode: false, |
- declarations: { |
- smoke_0.PolymerElement: {}, |
- })); |
- configureForDeployment(); |
- return i0.main(); |
- } |
- '''.replaceAll('\n ', '\n'), |
- 'a|web/a.dart': 'library a;\n' |
- 'import "package:polymer/polymer.dart";\n' |
- 'main(){}', |
- }); |
- |
- testPhases('simple initialization', phases, { |
- 'a|web/test.html': '<!DOCTYPE html><html><head>' |
- '<script type="application/dart" src="a.dart"></script>', |
- 'a|web/a.dart': 'library a;\n' |
- 'import "package:polymer/polymer.dart";\n' |
- '@CustomTag("x-foo")\n' |
- 'class XFoo extends PolymerElement {\n' |
- '}\n' |
- 'main(){}', |
- }, { |
- 'a|web/test.html_bootstrap.dart': '''$MAIN_HEADER |
- import 'a.dart' as i0; |
- ${DEFAULT_IMPORTS.join('\n')} |
- import 'package:polymer/polymer.dart' as smoke_0; |
- import 'a.dart' as smoke_1; |
- |
- main() { |
- useGeneratedCode(new StaticConfiguration( |
- checkedMode: false, |
- parents: { |
- smoke_1.XFoo: smoke_0.PolymerElement, |
- }, |
- declarations: { |
- smoke_1.XFoo: {}, |
- smoke_0.PolymerElement: {}, |
- })); |
- configureForDeployment(); |
- return i0.main(); |
- } |
- '''.replaceAll('\n ', '\n'), |
- }); |
- |
- testPhases('simple initialization of imports and exports', phases, { |
- 'a|web/test.html': '<!DOCTYPE html><html><head>' |
- '<script type="application/dart" src="a.dart"></script>', |
- 'a|web/a.dart': ''' |
- library a; |
- import "package:polymer/polymer.dart"; |
- import 'b.dart'; |
- |
- @CustomTag("x-a") |
- class XA extends PolymerElement {} |
- main(){}'''.replaceAll('\n ', '\n'), |
- 'a|web/b.dart': ''' |
- library b; |
- import "package:polymer/polymer.dart"; |
- export 'c.dart'; |
- |
- @CustomTag("x-b") |
- class XB extends PolymerElement {} |
- ''', |
- 'a|web/c.dart': ''' |
- library c; |
- import "package:polymer/polymer.dart"; |
- |
- @CustomTag("x-c") |
- class XC extends PolymerElement {} |
- ''', |
- }, { |
- 'a|web/test.html_bootstrap.dart': '''$MAIN_HEADER |
- import 'a.dart' as i0; |
- ${DEFAULT_IMPORTS.join('\n')} |
- import 'package:polymer/polymer.dart' as smoke_0; |
- import 'c.dart' as smoke_1; |
- import 'b.dart' as smoke_2; |
- import 'a.dart' as smoke_3; |
- |
- main() { |
- useGeneratedCode(new StaticConfiguration( |
- checkedMode: false, |
- parents: { |
- smoke_3.XA: smoke_0.PolymerElement, |
- smoke_2.XB: smoke_0.PolymerElement, |
- smoke_1.XC: smoke_0.PolymerElement, |
- }, |
- declarations: { |
- smoke_3.XA: {}, |
- smoke_2.XB: {}, |
- smoke_1.XC: {}, |
- smoke_0.PolymerElement: {}, |
- })); |
- configureForDeployment(); |
- return i0.main(); |
- } |
- '''.replaceAll('\n ', '\n'), |
- }); |
- |
- testPhases('use const expressions', phases, { |
- 'a|web/test.html': '<!DOCTYPE html><html><head>' |
- '<script type="application/dart" src="a.dart"></script>', |
- 'a|web/b.dart': 'library a;\n' |
- 'const x = "x";\n', |
- 'a|web/c.dart': 'part of a;\n' |
- 'const dash = "-";\n', |
- 'a|web/a.dart': 'library a;\n' |
- 'import "package:polymer/polymer.dart";\n' |
- 'import "b.dart";\n' |
- 'part "c.dart";\n' |
- 'const letterO = "o";\n' |
- '@CustomTag("\$x\${dash}f\${letterO}o2")\n' |
- 'class XFoo extends PolymerElement {\n' |
- '}\n', |
- }, { |
- 'a|web/test.html_bootstrap.dart': '''$MAIN_HEADER |
- import 'a.dart' as i0; |
- ${DEFAULT_IMPORTS.join('\n')} |
- import 'package:polymer/polymer.dart' as smoke_0; |
- import 'a.dart' as smoke_1; |
- |
- main() { |
- useGeneratedCode(new StaticConfiguration( |
- checkedMode: false, |
- parents: { |
- smoke_1.XFoo: smoke_0.PolymerElement, |
- }, |
- declarations: { |
- smoke_1.XFoo: {}, |
- smoke_0.PolymerElement: {}, |
- })); |
- configureForDeployment(); |
- return i0.main(); |
- } |
- '''.replaceAll('\n ', '\n'), |
- }); |
- |
- testLogOutput((options) => new PolymerSmokeGeneratorTransformer(options, |
- sdkDir: testingDartSdkDirectory), 'invalid const expression logs', { |
- 'a|web/test.html': '<!DOCTYPE html><html><head>' |
- '<script type="application/dart" src="a.dart"></script>', |
- 'a|web/a.dart': 'library a;\n' |
- 'import "package:polymer/polymer.dart";\n' |
- '@CustomTag("\${x}-foo")\n' // invalid, x is not defined |
- 'class XFoo extends PolymerElement {\n' |
- '}\n' |
- 'main(){}', |
- }, {}, [ |
- 'warning: ${INVALID_ANNOTATION_ARGUMENT.create( |
- {'name': 'CustomTag'}).snippet} (web/a.dart 2 11)', |
- ]); |
- |
- testPhases('invalid const expression', phases, { |
- 'a|web/test.html': '<!DOCTYPE html><html><head>' |
- '<script type="application/dart" src="a.dart"></script>', |
- 'a|web/a.dart': 'library a;\n' |
- 'import "package:polymer/polymer.dart";\n' |
- '@CustomTag("\${x}-foo")\n' // invalid, x is not defined |
- 'class XFoo extends PolymerElement {\n' |
- '}\n' |
- 'main(){}', |
- }, { |
- 'a|web/test.html_bootstrap.dart': '''$MAIN_HEADER |
- import 'a.dart' as i0; |
- ${DEFAULT_IMPORTS.join('\n')} |
- import 'package:polymer/polymer.dart' as smoke_0; |
- import 'a.dart' as smoke_1; |
- |
- main() { |
- useGeneratedCode(new StaticConfiguration( |
- checkedMode: false, |
- parents: { |
- smoke_1.XFoo: smoke_0.PolymerElement, |
- }, |
- declarations: { |
- smoke_1.XFoo: {}, |
- smoke_0.PolymerElement: {}, |
- })); |
- configureForDeployment(); |
- return i0.main(); |
- } |
- '''.replaceAll('\n ', '\n'), |
- }); |
- |
- testPhases('no polymer import (warning, but no crash)', phases, { |
- 'a|web/test.html': '<!DOCTYPE html><html><head>' |
- '<script type="application/dart" src="a.dart"></script>', |
- 'a|web/a.dart': 'library a;\n' |
- 'import "package:polymer/polymer.broken.import.dart";\n' |
- '@CustomTag("x-foo")\n' |
- 'class XFoo extends PolymerElement {\n' |
- '}\n' |
- 'main(){}', |
- }, { |
- 'a|web/test.html': '<!DOCTYPE html><html><head>' |
- '<script type="application/dart" src="test.html_bootstrap.dart">' |
- '</script></head><body></body></html>', |
- 'a|web/test.html_bootstrap.dart': '''$MAIN_HEADER |
- import 'a.dart' as i0; |
- ${DEFAULT_IMPORTS.join('\n')} |
- |
- main() { |
- useGeneratedCode(new StaticConfiguration( |
- checkedMode: false)); |
- configureForDeployment(); |
- return i0.main(); |
- } |
- '''.replaceAll('\n ', '\n'), |
- }, ['warning: ${MISSING_POLYMER_DART.snippet}']); |
-} |
- |
-codegenTests(phases) { |
- testPhases('bindings', phases, { |
- 'a|web/test.html': '<!DOCTYPE html><html>' |
- '<head>' |
- '<link rel="import" href="foo_remote.html">' |
- '</head><body>' |
- '<polymer-element name="foo-bar"><template>' |
- '<div>{{a.node}}</div>' |
- '<div>{{ anotherNode }}</div>' // extra space inside bindings is OK |
- '<div>{{a.call1(a)}}</div>' |
- '<div>{{call2(a)}}</div>' |
- '<div>{{}}</div>' // empty bindings are ignored |
- '<div>{{ }}</div>' |
- '<div class="{{an.attribute}}"></div>' |
- '<a href="path/{{within.an.attribute}}/foo/bar"></a>' |
- '<div data-attribute="{{anotherAttribute}}"></div>' |
- // input and custom-element attributes are treated as 2-way bindings: |
- '<input value="{{this.iS.twoWay}}">' |
- '<input value="{{this.iS.twoWayInt | intToStringTransformer}}">' |
- '<something-else my-attribute="{{here.too}}"></something-else>' |
- '<div on-click="{{methodName}}"></div>' |
- '<div on-click="{{ methodName2 }}"></div>' // extra space is OK |
- // empty handlers are invalid, but we still produce valid output. |
- '<div on-click="{{}}"></div>' |
- '<div on-click="{{ }}"></div>' |
- '</template></polymer-element>' |
- '<script type="application/dart" src="a.dart"></script>', |
- 'a|web/foo_remote.html': '<polymer-element name="foo-remote"><template>' |
- '<div>{{remoteValue}}</div>' |
- '</template></polymer-element>', |
- 'a|web/a.dart': 'library a;\n' |
- 'import "package:polymer/polymer.dart";\n' |
- 'main(){}', |
- }, { |
- 'a|web/test.html_bootstrap.dart': '''$MAIN_HEADER |
- import 'a.dart' as i0; |
- ${DEFAULT_IMPORTS.join('\n')} |
- import 'package:polymer/polymer.dart' as smoke_0; |
- |
- main() { |
- useGeneratedCode(new StaticConfiguration( |
- checkedMode: false, |
- getters: { |
- #a: (o) => o.a, |
- #an: (o) => o.an, |
- #anotherAttribute: (o) => o.anotherAttribute, |
- #anotherNode: (o) => o.anotherNode, |
- #attribute: (o) => o.attribute, |
- #call1: (o) => o.call1, |
- #call2: (o) => o.call2, |
- #here: (o) => o.here, |
- #iS: (o) => o.iS, |
- #intToStringTransformer: (o) => o.intToStringTransformer, |
- #methodName: (o) => o.methodName, |
- #methodName2: (o) => o.methodName2, |
- #node: (o) => o.node, |
- #remoteValue: (o) => o.remoteValue, |
- #too: (o) => o.too, |
- #twoWay: (o) => o.twoWay, |
- #twoWayInt: (o) => o.twoWayInt, |
- #within: (o) => o.within, |
- }, |
- setters: { |
- #too: (o, v) { o.too = v; }, |
- #twoWay: (o, v) { o.twoWay = v; }, |
- #twoWayInt: (o, v) { o.twoWayInt = v; }, |
- }, |
- declarations: { |
- smoke_0.PolymerElement: {}, |
- }, |
- names: { |
- #a: r'a', |
- #an: r'an', |
- #anotherAttribute: r'anotherAttribute', |
- #anotherNode: r'anotherNode', |
- #attribute: r'attribute', |
- #call1: r'call1', |
- #call2: r'call2', |
- #here: r'here', |
- #iS: r'iS', |
- #intToStringTransformer: r'intToStringTransformer', |
- #methodName: r'methodName', |
- #methodName2: r'methodName2', |
- #node: r'node', |
- #remoteValue: r'remoteValue', |
- #too: r'too', |
- #twoWay: r'twoWay', |
- #twoWayInt: r'twoWayInt', |
- #within: r'within', |
- })); |
- configureForDeployment(); |
- return i0.main(); |
- } |
- '''.replaceAll('\n ', '\n'), |
- }); |
- |
- computedDeclaration(name, expr) => |
- '#$name: const Declaration(#$name, Object, kind: PROPERTY,' |
- ' isFinal: true, annotations: const [const smoke_0.ComputedProperty' |
- '(\'$expr\')])'; |
- |
- testPhases('computed properties', phases, { |
- 'a|web/test.html': '<!DOCTYPE html><html><body>' |
- '<polymer-element name="x-foo"><template>' |
- '</template></polymer-element>' |
- '<script type="application/dart" src="a.dart"></script>', |
- 'a|web/a.dart': 'library a;\n' |
- 'import "package:polymer/polymer.dart";\n' |
- '@CustomTag("x-foo")\n' |
- 'class XFoo extends PolymerElement {\n' |
- ' @ComputedProperty("ta.tb")\n' |
- ' get pa => readValue(#pa);\n' |
- ' @ComputedProperty(" tc ")\n' // extra space inside is OK |
- ' get pb => null;\n' |
- ' @ComputedProperty("td.m1(te)")\n' |
- ' get pc => null;\n' |
- ' @ComputedProperty("m2(tf)")\n' |
- ' get pd => null;\n' |
- ' @ComputedProperty("")\n' // empty is ignored |
- ' get pe => null;\n' |
- ' @ComputedProperty(" ")\n' |
- ' get pf => null;\n' |
- ' @ComputedProperty("tg + th")\n' |
- ' get pg => null;\n' |
- ' @ComputedProperty("ti.tj | tk")\n' |
- ' get ph => null;\n' |
- '}\n' |
- 'main(){}', |
- }, { |
- 'a|web/test.html_bootstrap.dart': '''$MAIN_HEADER |
- import 'a.dart' as i0; |
- ${DEFAULT_IMPORTS.join('\n')} |
- import 'package:polymer/polymer.dart' as smoke_0; |
- import 'a.dart' as smoke_1; |
- |
- main() { |
- useGeneratedCode(new StaticConfiguration( |
- checkedMode: false, |
- getters: { |
- #m1: (o) => o.m1, |
- #m2: (o) => o.m2, |
- #pa: (o) => o.pa, |
- #pb: (o) => o.pb, |
- #pc: (o) => o.pc, |
- #pd: (o) => o.pd, |
- #pe: (o) => o.pe, |
- #pf: (o) => o.pf, |
- #pg: (o) => o.pg, |
- #ph: (o) => o.ph, |
- #ta: (o) => o.ta, |
- #tb: (o) => o.tb, |
- #tc: (o) => o.tc, |
- #td: (o) => o.td, |
- #te: (o) => o.te, |
- #tf: (o) => o.tf, |
- #tg: (o) => o.tg, |
- #th: (o) => o.th, |
- #ti: (o) => o.ti, |
- #tj: (o) => o.tj, |
- #tk: (o) => o.tk, |
- }, |
- setters: { |
- #tb: (o, v) { o.tb = v; }, |
- #tc: (o, v) { o.tc = v; }, |
- #tj: (o, v) { o.tj = v; }, |
- }, |
- parents: { |
- smoke_1.XFoo: smoke_0.PolymerElement, |
- }, |
- declarations: { |
- smoke_1.XFoo: { |
- ${computedDeclaration('pa', 'ta.tb')}, |
- ${computedDeclaration('pb', ' tc ')}, |
- ${computedDeclaration('pc', 'td.m1(te)')}, |
- ${computedDeclaration('pd', 'm2(tf)')}, |
- ${computedDeclaration('pe', '')}, |
- ${computedDeclaration('pf', ' ')}, |
- ${computedDeclaration('pg', 'tg + th')}, |
- ${computedDeclaration('ph', 'ti.tj | tk')}, |
- }, |
- smoke_0.PolymerElement: {}, |
- }, |
- names: { |
- #m1: r'm1', |
- #m2: r'm2', |
- #pa: r'pa', |
- #pb: r'pb', |
- #pc: r'pc', |
- #pd: r'pd', |
- #pe: r'pe', |
- #pf: r'pf', |
- #pg: r'pg', |
- #ph: r'ph', |
- #ta: r'ta', |
- #tb: r'tb', |
- #tc: r'tc', |
- #td: r'td', |
- #te: r'te', |
- #tf: r'tf', |
- #tg: r'tg', |
- #th: r'th', |
- #ti: r'ti', |
- #tj: r'tj', |
- #tk: r'tk', |
- })); |
- configureForDeployment(); |
- return i0.main(); |
- } |
- '''.replaceAll('\n ', '\n'), |
- }); |
- |
- final field1Details = "annotations: const [smoke_0.published]"; |
- final field3Details = "isFinal: true, annotations: const [smoke_0.published]"; |
- final prop1Details = "kind: PROPERTY, annotations: const [smoke_0.published]"; |
- final prop3Details = |
- "kind: PROPERTY, isFinal: true, annotations: const [smoke_0.published]"; |
- testPhases('published via annotation', phases, { |
- 'a|web/test.html': '<!DOCTYPE html><html><body>' |
- '<script type="application/dart" src="a.dart"></script>', |
- 'a|web/a.dart': 'library a;\n' |
- 'import "package:polymer/polymer.dart";\n' |
- '@CustomTag("x-foo")\n' |
- 'class XFoo extends PolymerElement {\n' |
- ' @published int field1;\n' |
- ' int field2;\n' |
- ' @published final int field3;\n' |
- ' final int field4;\n' |
- ' @published int get prop1 => 1;\n' |
- ' set prop1(int x) {};\n' |
- ' int get prop2 => 2;\n' |
- ' set prop2(int x) {};\n' |
- ' @published int get prop3 => 3;\n' |
- ' int get prop4 => 4;\n' |
- ' @published int method1() => 1;\n' |
- ' int method2() => 2;\n' |
- '}\n', |
- }, { |
- 'a|web/test.html_bootstrap.dart': '''$MAIN_HEADER |
- import 'a.dart' as i0; |
- ${DEFAULT_IMPORTS.join('\n')} |
- import 'package:polymer/polymer.dart' as smoke_0; |
- import 'a.dart' as smoke_1; |
- |
- main() { |
- useGeneratedCode(new StaticConfiguration( |
- checkedMode: false, |
- getters: { |
- #field1: (o) => o.field1, |
- #field3: (o) => o.field3, |
- #prop1: (o) => o.prop1, |
- #prop3: (o) => o.prop3, |
- }, |
- setters: { |
- #field1: (o, v) { o.field1 = v; }, |
- #prop1: (o, v) { o.prop1 = v; }, |
- }, |
- parents: { |
- smoke_1.XFoo: smoke_0.PolymerElement, |
- }, |
- declarations: { |
- smoke_1.XFoo: { |
- #field1: const Declaration(#field1, int, $field1Details), |
- #field3: const Declaration(#field3, int, $field3Details), |
- #prop1: const Declaration(#prop1, int, $prop1Details), |
- #prop3: const Declaration(#prop3, int, $prop3Details), |
- }, |
- smoke_0.PolymerElement: {}, |
- }, |
- names: { |
- #field1: r'field1', |
- #field3: r'field3', |
- #prop1: r'prop1', |
- #prop3: r'prop3', |
- })); |
- configureForDeployment(); |
- return i0.main(); |
- } |
- '''.replaceAll('\n ', '\n'), |
- }); |
- |
- testPhases('published via attributes', phases, { |
- 'a|web/test.html': '<!DOCTYPE html><html><body>' |
- '<polymer-element name="x-foo" attributes="field1,prop2">' |
- '</polymer-element>' |
- '<script type="application/dart" src="a.dart"></script>', |
- 'a|web/a.dart': 'library a;\n' |
- 'import "package:polymer/polymer.dart";\n' |
- '@CustomTag("x-foo")\n' |
- 'class XFoo extends PolymerElement {\n' |
- ' int field1;\n' |
- ' int field2;\n' |
- ' int get prop1 => 1;\n' |
- ' set prop1(int x) {};\n' |
- ' int get prop2 => 2;\n' |
- ' set prop2(int x) {};\n' |
- '}\n', |
- }, { |
- 'a|web/test.html_bootstrap.dart': '''$MAIN_HEADER |
- import 'a.dart' as i0; |
- ${DEFAULT_IMPORTS.join('\n')} |
- import 'package:polymer/polymer.dart' as smoke_0; |
- import 'a.dart' as smoke_1; |
- |
- main() { |
- useGeneratedCode(new StaticConfiguration( |
- checkedMode: false, |
- getters: { |
- #field1: (o) => o.field1, |
- #prop2: (o) => o.prop2, |
- }, |
- setters: { |
- #field1: (o, v) { o.field1 = v; }, |
- #prop2: (o, v) { o.prop2 = v; }, |
- }, |
- parents: { |
- smoke_1.XFoo: smoke_0.PolymerElement, |
- }, |
- declarations: { |
- smoke_1.XFoo: { |
- #field1: const Declaration(#field1, int), |
- #prop2: const Declaration(#prop2, int, kind: PROPERTY), |
- }, |
- smoke_0.PolymerElement: {}, |
- }, |
- names: { |
- #field1: r'field1', |
- #prop2: r'prop2', |
- })); |
- configureForDeployment(); |
- return i0.main(); |
- } |
- '''.replaceAll('\n ', '\n'), |
- }); |
- |
- final fooDetails = |
- "kind: METHOD, annotations: const [const smoke_0.ObserveProperty('x')]"; |
- final xChangedDetails = "Function, kind: METHOD"; |
- testPhases('ObserveProperty and *Changed methods', phases, { |
- 'a|web/test.html': '<!DOCTYPE html><html><body>' |
- '</polymer-element>' |
- '<script type="application/dart" src="a.dart"></script>', |
- 'a|web/a.dart': 'library a;\n' |
- 'import "package:polymer/polymer.dart";\n' |
- '@CustomTag("x-foo")\n' |
- 'class XFoo extends PolymerElement {\n' |
- ' int x;\n' |
- ' void xChanged() {}\n' |
- ' void attributeChanged() {}\n' // should be excluded |
- ' @ObserveProperty("x")' |
- ' void foo() {}\n' |
- '}\n', |
- }, { |
- 'a|web/test.html_bootstrap.dart': '''$MAIN_HEADER |
- import 'a.dart' as i0; |
- ${DEFAULT_IMPORTS.join('\n')} |
- import 'package:polymer/polymer.dart' as smoke_0; |
- import 'a.dart' as smoke_1; |
- |
- main() { |
- useGeneratedCode(new StaticConfiguration( |
- checkedMode: false, |
- getters: { |
- #foo: (o) => o.foo, |
- #xChanged: (o) => o.xChanged, |
- }, |
- parents: { |
- smoke_1.XFoo: smoke_0.PolymerElement, |
- }, |
- declarations: { |
- smoke_1.XFoo: { |
- #foo: const Declaration(#foo, Function, $fooDetails), |
- #xChanged: const Declaration(#xChanged, $xChangedDetails), |
- }, |
- smoke_0.PolymerElement: {}, |
- }, |
- names: { |
- #foo: r'foo', |
- #xChanged: r'xChanged', |
- })); |
- configureForDeployment(); |
- return i0.main(); |
- } |
- '''.replaceAll('\n ', '\n'), |
- }); |
- |
- final rcDetails = "#registerCallback, Function, kind: METHOD, isStatic: true"; |
- testPhases('register callback is included', phases, { |
- 'a|web/test.html': '<!DOCTYPE html><html><body>' |
- '</polymer-element>' |
- '<script type="application/dart" src="a.dart"></script>', |
- 'a|web/a.dart': 'library a;\n' |
- 'import "package:polymer/polymer.dart";\n' |
- '@CustomTag("x-foo")\n' |
- 'class XFoo extends PolymerElement {\n' |
- ' static registerCallback() {};\n' |
- ' static foo() {};\n' |
- '}\n', |
- }, { |
- 'a|web/test.html_bootstrap.dart': '''$MAIN_HEADER |
- import 'a.dart' as i0; |
- ${DEFAULT_IMPORTS.join('\n')} |
- import 'package:polymer/polymer.dart' as smoke_0; |
- import 'a.dart' as smoke_1; |
- |
- main() { |
- useGeneratedCode(new StaticConfiguration( |
- checkedMode: false, |
- parents: { |
- smoke_1.XFoo: smoke_0.PolymerElement, |
- }, |
- declarations: { |
- smoke_1.XFoo: { |
- #registerCallback: const Declaration($rcDetails), |
- }, |
- smoke_0.PolymerElement: {}, |
- }, |
- staticMethods: { |
- smoke_1.XFoo: { |
- #registerCallback: smoke_1.XFoo.registerCallback, |
- }, |
- }, |
- names: { |
- #registerCallback: r'registerCallback', |
- })); |
- configureForDeployment(); |
- return i0.main(); |
- } |
- '''.replaceAll('\n ', '\n'), |
- }); |
-} |
- |
-void logElementInjectionTests() { |
- final outputLogsPhases = [ |
- [ |
- new PolymerSmokeGeneratorTransformer(new TransformOptions( |
- injectBuildLogsInOutput: true, releaseMode: false), |
- sdkDir: testingDartSdkDirectory) |
- ] |
- ]; |
- |
- testPhases('Injects logging element and styles', outputLogsPhases, { |
- 'a|web/test.html': '<!DOCTYPE html><html><head>' |
- '<script type="application/dart" src="a.dart"></script>', |
- 'a|web/a.dart': 'library a;\n' |
- 'import "package:polymer/polymer.dart";\n' |
- 'main(){}', |
- }, { |
- 'a|web/test.html': '<!DOCTYPE html><html><head>' |
- '<script type="application/dart" ' |
- 'src="test.html_bootstrap.dart"></script>' |
- '<link rel="stylesheet" type="text/css" ' |
- 'href="packages/polymer/src/build/log_injector.css">' |
- '</head><body>' |
- '</body></html>', |
- 'a|web/test.html_bootstrap.dart': '''$MAIN_HEADER |
- import 'package:polymer/src/build/log_injector.dart'; |
- import 'a.dart' as i0; |
- ${DEFAULT_IMPORTS.join('\n')} |
- import 'package:polymer/polymer.dart' as smoke_0; |
- |
- main() { |
- useGeneratedCode(new StaticConfiguration( |
- checkedMode: false, |
- declarations: { |
- smoke_0.PolymerElement: {}, |
- })); |
- new LogInjector().injectLogsFromUrl('test.html._buildLogs'); |
- configureForDeployment(); |
- return i0.main(); |
- } |
- '''.replaceAll('\n ', '\n'), |
- 'a|web/a.dart': 'library a;\n' |
- 'import "package:polymer/polymer.dart";\n' |
- 'main(){}', |
- }); |
-} |