Index: dart/tests/lib/mirrors/metadata_test.dart |
diff --git a/dart/tests/lib/mirrors/metadata_test.dart b/dart/tests/lib/mirrors/metadata_test.dart |
index 9bbee5a857076860f4945235575322bf9505dd45..973bf34ff7906ec952a05aca85f611c0b772f395 100644 |
--- a/dart/tests/lib/mirrors/metadata_test.dart |
+++ b/dart/tests/lib/mirrors/metadata_test.dart |
@@ -11,24 +11,38 @@ const fisk = 'a metadata string'; |
const symbol = const Symbol('fisk'); |
-main() { |
- MirrorSystem mirrors = currentMirrorSystem(); |
- LibraryMirror library = |
- mirrors.findLibrary(const Symbol('test.metadata_test')).first; |
- List metadata = library.metadata.map((m) => m.reflectee).toList(); |
- if (metadata.length != 2) { |
- throw 'Expected two pieces of metadata on library'; |
+@symbol @fisk |
+class MyClass { |
+} |
+ |
+checkMetadata(DeclarationMirror mirror, List expectedMetadata) { |
+ List metadata = mirror.metadata.map((m) => m.reflectee).toList(); |
+ if (metadata == null) { |
+ throw 'Null metadata on $mirror'; |
} |
- if (!metadata.contains(fisk)) { |
- throw '$metadata does not contain "$fisk"'; |
+ int expectedLength = expectedMetadata.length; |
+ int actualLength = metadata.length; |
+ if (expectedLength != actualLength) { |
+ throw 'Expected length = $expectedLength, but got length = $actualLength.'; |
} |
- if (!metadata.contains(symbol)) { |
- throw '$metadata does not contain "$symbol"'; |
+ for (int i = 0; i < expectedLength; i++) { |
+ if (metadata[i] != expectedMetadata[i]) { |
+ throw '${metadata[i]} is not "${expectedMetadata[i]}"' |
+ ' in $mirror at index $i'; |
+ } |
} |
+ print(metadata); |
+} |
+ |
+main() { |
if (MirrorSystem.getName(symbol) != 'fisk') { |
// This happened in dart2js due to how early library metadata is |
// computed. |
throw 'Bad constant: $symbol'; |
} |
- print(metadata); |
+ |
+ MirrorSystem mirrors = currentMirrorSystem(); |
+ checkMetadata(mirrors.findLibrary(const Symbol('test.metadata_test')).first, |
+ [fisk, symbol]); |
+ checkMetadata(reflect(new MyClass()).type, [symbol, fisk]); |
} |