OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 import 'dart:async'; | 5 import 'dart:async'; |
6 import 'dart:html'; | 6 import 'dart:html'; |
7 | 7 |
| 8 import 'dart:mirrors'; |
| 9 |
8 import 'package:unittest/unittest.dart'; | 10 import 'package:unittest/unittest.dart'; |
9 import 'package:unittest/html_config.dart'; | 11 import 'package:unittest/html_config.dart'; |
10 import 'package:polymer/polymer.dart'; | 12 import 'package:path/path.dart' show url; |
11 | 13 |
12 @CustomTag('x-a') | 14 import 'package:polymer/src/mirror_loader.dart'; |
13 class XA extends PolymerElement { | 15 import 'mirror_loader_1.dart' as m1; |
14 final String x = "a"; | 16 import 'mirror_loader_2.dart' as m2; |
15 XA.created() : super.created(); | 17 import 'mirror_loader_3.dart' as m3; |
16 } | 18 import 'mirror_loader_4.dart' as m4; |
17 | |
18 // The next classes are here as a regression test for darbug.com/17929. Our | |
19 // loader was incorrectly trying to retrieve the reflectiveType of these | |
20 // classes. | |
21 class Foo<T> {} | |
22 | |
23 @CustomTag('x-b') | |
24 class XB<T> extends PolymerElement { | |
25 final String x = "a"; | |
26 XB.created() : super.created(); | |
27 } | |
28 | 19 |
29 main() { | 20 main() { |
30 useHtmlConfiguration(); | 21 useHtmlConfiguration(); |
31 | 22 |
32 runZoned(() { | 23 test('registered correctly', () { |
33 initPolymer().run(() { | 24 expect(_discover(#mirror_loader_test1).length, 1); |
34 setUp(() => Polymer.onReady); | 25 expect(_discover(#mirror_loader_test2).length, 1); |
| 26 }); |
35 | 27 |
36 test('XA was registered correctly', () { | 28 test('parameterized custom tags are not registered', () { |
37 expect(querySelector('x-a').shadowRoot.nodes.first.text, 'a'); | 29 runZoned(() { |
38 }); | 30 expect(_discover(#mirror_loader_test3).length, 0); |
| 31 }, onError: (e) { |
| 32 expect(e is UnsupportedError, isTrue); |
| 33 expect('$e', contains( |
| 34 'Custom element classes cannot have type-parameters: XB')); |
| 35 }); |
| 36 }); |
39 | 37 |
40 test('XB was not registered', () { | 38 test('registers correct types even when errors are found', () { |
41 expect(querySelector('x-b').shadowRoot, null); | 39 runZoned(() { |
42 }); | 40 expect(_discover(#mirror_loader_test4).length, 1); |
| 41 }, onError: (e) { |
| 42 expect(e is UnsupportedError, isTrue); |
| 43 expect('$e', contains( |
| 44 'Custom element classes cannot have type-parameters: XB')); |
43 }); | 45 }); |
44 }, onError: (e) { | |
45 expect(e is UnsupportedError, isTrue); | |
46 expect('$e', contains( | |
47 'Custom element classes cannot have type-parameters: XB')); | |
48 }); | 46 }); |
49 } | 47 } |
| 48 |
| 49 final mirrors = currentMirrorSystem(); |
| 50 _discover(Symbol name) => |
| 51 discoverInitializers([mirrors.findLibrary(name).uri.toString()]); |
OLD | NEW |