Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(594)

Unified Diff: tests/compiler/dart2js/mirrors_test.dart

Issue 11571058: DeclarationMirror extended with metadata. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
}
« tests/compiler/dart2js/mirrors_helper.dart ('K') | « tests/compiler/dart2js/mirrors_helper.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698