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

Unified Diff: test/codegen/lib/mirrors/field_type_test.dart

Issue 2265533002: Add mirrors tests (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: Created 4 years, 4 months 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: test/codegen/lib/mirrors/field_type_test.dart
diff --git a/test/codegen/lib/mirrors/field_type_test.dart b/test/codegen/lib/mirrors/field_type_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..a5e6b716ae9ff0f9115f4b209523fcf0d8184ad3
--- /dev/null
+++ b/test/codegen/lib/mirrors/field_type_test.dart
@@ -0,0 +1,77 @@
+// 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 field_test;
+
+import 'dart:mirrors';
+import "package:expect/expect.dart";
+
+String toplevelVariable;
+class C {
+ final int i;
+ const C(this.i);
+}
+class A<T> {
+ static int staticField;
+ @C(42)
+ @C(44)
+ String field;
+ var dynamicTypeField;
+ T typeVariableField;
+ H<int> parameterizedTypeField;
+}
+
+class H<T> {}
+
+testOriginalDeclaration() {
+ ClassMirror a = reflectClass(A);
+ VariableMirror staticField = a.declarations[#staticField];
+ VariableMirror field = a.declarations[#field];
+ VariableMirror dynamicTypeField = a.declarations[#dynamicTypeField];
+ VariableMirror typeVariableField = a.declarations[#typeVariableField];
+ VariableMirror parameterizedTypeField =
+ a.declarations[#parameterizedTypeField];
+
+ Expect.equals(reflectType(int), staticField.type);
+ Expect.equals(reflectClass(String), field.type);
+ Expect.equals(reflectType(dynamic), dynamicTypeField.type);
+ Expect.equals(a.typeVariables.single, typeVariableField.type);
+ Expect.equals(reflect(new H<int>()).type, parameterizedTypeField.type);
+
+ Expect.equals(2, field.metadata.length);
+ Expect.equals(reflect(const C(42)), field.metadata.first);
+ Expect.equals(reflect(const C(44)), field.metadata.last);
+}
+
+testInstance() {
+ ClassMirror aOfString = reflect(new A<String>()).type;
+ VariableMirror staticField = aOfString.declarations[#staticField];
+ VariableMirror field = aOfString.declarations[#field];
+ VariableMirror dynamicTypeField = aOfString.declarations[#dynamicTypeField];
+ VariableMirror typeVariableField = aOfString.declarations[#typeVariableField];
+ VariableMirror parameterizedTypeField =
+ aOfString.declarations[#parameterizedTypeField];
+
+ Expect.equals(reflectType(int), staticField.type);
+ Expect.equals(reflectClass(String), field.type);
+ Expect.equals(reflectType(dynamic), dynamicTypeField.type);
+ Expect.equals(reflectClass(String), typeVariableField.type);
+ Expect.equals(reflect(new H<int>()).type, parameterizedTypeField.type);
+
+ Expect.equals(2, field.metadata.length);
+ Expect.equals(reflect(const C(42)), field.metadata.first);
+ Expect.equals(reflect(const C(44)), field.metadata.last);
+}
+
+testTopLevel() {
+ LibraryMirror currentLibrary = currentMirrorSystem().findLibrary(#field_test);
+ VariableMirror topLevel = currentLibrary.declarations[#toplevelVariable];
+ Expect.equals(reflectClass(String), topLevel.type);
+}
+
+main() {
+ testOriginalDeclaration();
+ testInstance();
+ testTopLevel();
+}

Powered by Google App Engine
This is Rietveld 408576698