Index: tests/compiler/dart2js/mirrors_test.dart |
diff --git a/tests/compiler/dart2js/mirrors_test.dart b/tests/compiler/dart2js/mirrors_test.dart |
index 8b223fa7fddf1d763e654706deb615d28a7c24e5..6cec0319a6b51924dd95aeb531fbf2f16f7e13a0 100644 |
--- a/tests/compiler/dart2js/mirrors_test.dart |
+++ b/tests/compiler/dart2js/mirrors_test.dart |
@@ -163,6 +163,138 @@ void testFoo(MirrorSystem system, LibraryMirror helperLibrary, |
Expect.isNotNull(fooClass.getters); |
Expect.isNotNull(fooClass.setters); |
Expect.isNotNull(fooClass.variables); |
+ |
+ ////////////////////////////////////////////////////////////////////////////// |
+ // Metadata tests |
+ // |
+ // @Metadata |
ahe
2012/12/19 15:44:03
These comments would be more helpful closer to the
Johnni Winther
2012/12/20 11:30:35
Done.
|
+ // @Metadata(null) |
+ // @Metadata(true) |
+ // @Metadata(false) |
+ // @Metadata(0) |
+ // @Metadata(1.5) |
+ // @Metadata("Foo") |
+ // @Metadata(const ["Foo"]) |
+ // @Metadata(const {'foo':"Foo"}) |
+ ////////////////////////////////////////////////////////////////////////////// |
+ |
+ var metadata = fooClass.metadata; |
+ Expect.isNotNull(metadata); |
+ Expect.equals(9, metadata.length); |
+ |
+ var metadata0 = metadata[0]; |
+ Expect.isTrue(metadata0 is InstanceMirror); |
+ Expect.isFalse(metadata0.hasReflectee); |
+ Expect.throws(() => metadata0.reflectee, (_) => true); |
+ Expect.isTrue(metadata0 is TypeInstanceMirror); |
+ var metadataType = metadata0.representedType; |
+ Expect.isNotNull(metadataType); |
+ Expect.stringEquals('Metadata', metadataType.simpleName); |
+ |
+ var metadata1 = metadata[1]; |
+ Expect.isTrue(metadata1 is InstanceMirror); |
+ Expect.isFalse(metadata1.hasReflectee); |
+ Expect.throws(() => metadata1.reflectee, (_) => true); |
+ Expect.equals(metadataType.originalDeclaration, metadata1.type); |
+ metadata1.getField('data').then((InstanceMirror data) { |
+ Expect.isNotNull(data); |
+ Expect.isTrue(data.hasReflectee); |
+ Expect.isNull(data.reflectee); |
+ }); |
+ |
+ var metadata2 = metadata[2]; |
+ Expect.isTrue(metadata2 is InstanceMirror); |
+ Expect.isFalse(metadata2.hasReflectee); |
+ Expect.throws(() => metadata2.reflectee, (_) => true); |
+ Expect.equals(metadataType.originalDeclaration, metadata2.type); |
+ metadata2.getField('data').then((InstanceMirror data) { |
+ Expect.isNotNull(data); |
+ Expect.isTrue(data.hasReflectee); |
+ Expect.isTrue(data.reflectee); |
+ }); |
+ |
+ var metadata3 = metadata[3]; |
+ Expect.isTrue(metadata3 is InstanceMirror); |
+ Expect.isFalse(metadata3.hasReflectee); |
+ Expect.throws(() => metadata3.reflectee, (_) => true); |
+ Expect.equals(metadataType.originalDeclaration, metadata3.type); |
+ metadata3.getField('data').then((InstanceMirror data) { |
+ Expect.isNotNull(data); |
+ Expect.isTrue(data.hasReflectee); |
+ Expect.isFalse(data.reflectee); |
+ }); |
+ |
+ var metadata4 = metadata[4]; |
+ Expect.isTrue(metadata4 is InstanceMirror); |
+ Expect.isFalse(metadata4.hasReflectee); |
+ Expect.throws(() => metadata4.reflectee, (_) => true); |
+ Expect.equals(metadataType.originalDeclaration, metadata4.type); |
+ metadata4.getField('data').then((InstanceMirror data) { |
+ Expect.isNotNull(data); |
+ Expect.isTrue(data.hasReflectee); |
+ Expect.equals(0, data.reflectee); |
+ }); |
+ |
+ var metadata5 = metadata[5]; |
+ Expect.isTrue(metadata5 is InstanceMirror); |
+ Expect.isFalse(metadata5.hasReflectee); |
+ Expect.throws(() => metadata5.reflectee, (_) => true); |
+ Expect.equals(metadataType.originalDeclaration, metadata5.type); |
+ metadata5.getField('data').then((InstanceMirror data) { |
+ Expect.isNotNull(data); |
+ Expect.isTrue(data.hasReflectee); |
+ Expect.equals(1.5, data.reflectee); |
+ }); |
+ |
+ var metadata6 = metadata[6]; |
+ Expect.isTrue(metadata6 is InstanceMirror); |
+ Expect.isFalse(metadata6.hasReflectee); |
+ Expect.throws(() => metadata6.reflectee, (_) => true); |
+ Expect.equals(metadataType.originalDeclaration, metadata6.type); |
+ metadata6.getField('data').then((InstanceMirror data) { |
+ Expect.isNotNull(data); |
+ Expect.isTrue(data.hasReflectee); |
+ Expect.stringEquals("Foo", data.reflectee); |
+ }); |
+ |
+ var metadata7 = metadata[7]; |
+ Expect.isTrue(metadata7 is InstanceMirror); |
+ Expect.isFalse(metadata7.hasReflectee); |
+ Expect.throws(() => metadata7.reflectee, (_) => true); |
+ Expect.equals(metadataType.originalDeclaration, metadata7.type); |
+ metadata7.getField('data').then((InstanceMirror data) { |
+ Expect.isTrue(data is ListInstanceMirror); |
+ Expect.isFalse(data.hasReflectee); |
+ Expect.throws(() => data.reflectee, (_) => true); |
+ ListInstanceMirror listData = data; |
+ Expect.equals(1, listData.length); |
+ listData[0].then((InstanceMirror element) { |
+ Expect.isNotNull(element); |
+ Expect.isTrue(element.hasReflectee); |
+ Expect.stringEquals("Foo", element.reflectee); |
+ }); |
+ }); |
+ |
+ var metadata8 = metadata[8]; |
+ Expect.isTrue(metadata8 is InstanceMirror); |
+ Expect.isFalse(metadata8.hasReflectee); |
+ Expect.throws(() => metadata8.reflectee, (_) => true); |
+ Expect.equals(metadataType.originalDeclaration, metadata8.type); |
+ metadata8.getField('data').then((InstanceMirror data) { |
+ Expect.isTrue(data is MapInstanceMirror); |
+ Expect.isFalse(data.hasReflectee); |
+ Expect.throws(() => data.reflectee, (_) => true); |
+ MapInstanceMirror mapData = data; |
+ Expect.equals(1, mapData.length); |
+ Expect.stringEquals('foo', mapData.keys.iterator().next()); |
+ mapData['foo'].then((InstanceMirror element) { |
+ Expect.isNotNull(element); |
+ Expect.isTrue(element.hasReflectee); |
+ Expect.stringEquals("Foo", element.reflectee); |
+ }); |
+ Expect.isNull(mapData['bar']); |
+ }); |
+ |
} |
// Testing interface Bar: |
@@ -243,6 +375,10 @@ void testBar(MirrorSystem system, LibraryMirror helperLibrary, |
Expect.isNotNull(barInterfaceConstructors, "Constructors map is null"); |
Expect.isTrue(barInterfaceConstructors.isEmpty, |
"Constructors map is unempty"); |
+ |
+ var metadata = barInterface.metadata; |
+ Expect.isNotNull(metadata); |
+ Expect.equals(0, metadata.length); |
} |
// Testing class Baz: |
@@ -721,6 +857,10 @@ void testBaz(MirrorSystem system, LibraryMirror helperLibrary, |
// TODO(johnniwinther): Add more tests of constructors. |
// TODO(johnniwinther): Add a test for unnamed factory methods. |
+ |
+ var metadata = bazClass.metadata; |
+ Expect.isNotNull(metadata); |
+ Expect.equals(0, metadata.length); |
} |
// class _PrivateClass { |
@@ -785,4 +925,8 @@ void testPrivate(MirrorSystem system, LibraryMirror helperLibrary, |
Expect.isFalse(privateFactoryConstructor.isRedirectingConstructor); |
Expect.isFalse(privateFactoryConstructor.isGenerativeConstructor); |
Expect.isTrue(privateFactoryConstructor.isFactoryConstructor); |
+ |
+ var metadata = privateClass.metadata; |
+ Expect.isNotNull(metadata); |
+ Expect.equals(0, metadata.length); |
} |