OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 // TODO(rmacnak): Move the existing mirror tests here (a place for | 5 // TODO(rmacnak): Move the existing mirror tests here (a place for |
6 // cross-implementation tests). | 6 // cross-implementation tests). |
7 | 7 |
8 library MirrorsTest; | 8 library MirrorsTest; |
9 import "dart:mirrors"; | 9 import "dart:mirrors"; |
10 import "../../../pkg/unittest/lib/unittest.dart"; | 10 import "../../../pkg/unittest/lib/unittest.dart"; |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
154 var classMirror = reflectClass(Class); | 154 var classMirror = reflectClass(Class); |
155 expect(classMirror is ClassMirror, equals(true)); | 155 expect(classMirror is ClassMirror, equals(true)); |
156 var symbolClassMirror = reflectClass(Symbol); | 156 var symbolClassMirror = reflectClass(Symbol); |
157 var symbolMirror = symbolClassMirror.newInstance(const Symbol(''), | 157 var symbolMirror = symbolClassMirror.newInstance(const Symbol(''), |
158 ['withInitialValue']); | 158 ['withInitialValue']); |
159 var objectMirror = classMirror.newInstance(symbolMirror.reflectee,[1234]); | 159 var objectMirror = classMirror.newInstance(symbolMirror.reflectee,[1234]); |
160 expect(objectMirror.reflectee is Class, equals(true)); | 160 expect(objectMirror.reflectee is Class, equals(true)); |
161 expect(objectMirror.reflectee.field, equals(1234)); | 161 expect(objectMirror.reflectee.field, equals(1234)); |
162 } | 162 } |
163 | 163 |
164 testNames(mirrors) { | 164 testNames(mirrors, isDart2js) { |
165 var libMirror = mirrors.findLibrary(const Symbol("MirrorsTest")).single; | 165 var libMirror = mirrors.findLibrary(const Symbol("MirrorsTest")).single; |
166 var classMirror = libMirror.classes[const Symbol('Class')]; | 166 var classMirror = libMirror.classes[const Symbol('Class')]; |
167 var typedefMirror = libMirror.members[const Symbol('Typedef')]; | 167 var typedefMirror = libMirror.members[const Symbol('Typedef')]; |
168 var methodMirror = libMirror.functions[const Symbol('testNames')]; | 168 var methodMirror = libMirror.functions[const Symbol('testNames')]; |
169 var variableMirror = classMirror.variables[const Symbol('field')]; | 169 var variableMirror = classMirror.variables[const Symbol('field')]; |
170 | 170 |
171 expect(libMirror.simpleName, equals(const Symbol('MirrorsTest'))); | 171 expect(libMirror.simpleName, equals(const Symbol('MirrorsTest'))); |
172 expect(libMirror.qualifiedName, equals(const Symbol('MirrorsTest'))); | 172 expect(libMirror.qualifiedName, equals(const Symbol('MirrorsTest'))); |
173 | 173 |
174 expect(classMirror.simpleName, equals(const Symbol('Class'))); | 174 expect(classMirror.simpleName, equals(const Symbol('Class'))); |
175 expect(classMirror.qualifiedName, equals(const Symbol('MirrorsTest.Class'))); | 175 expect(classMirror.qualifiedName, equals(const Symbol('MirrorsTest.Class'))); |
176 | 176 |
177 TypeVariableMirror typeVariable = classMirror.typeVariables.values.single; | 177 if (!isDart2js) { // TODO(ahe): Implement this in dart2js. |
178 expect(typeVariable.simpleName, equals(const Symbol('T'))); | 178 TypeVariableMirror typeVariable = classMirror.typeVariables.values.single; |
179 expect(typeVariable.qualifiedName, | 179 expect(typeVariable.simpleName, equals(const Symbol('T'))); |
180 equals(const Symbol('MirrorsTest.Class.T'))); | 180 expect(typeVariable.qualifiedName, |
| 181 equals(const Symbol('MirrorsTest.Class.T'))); |
181 | 182 |
182 expect(typedefMirror.simpleName, equals(const Symbol('Typedef'))); | 183 expect(typedefMirror.simpleName, equals(const Symbol('Typedef'))); |
183 expect(typedefMirror.qualifiedName, | 184 expect(typedefMirror.qualifiedName, |
184 equals(const Symbol('MirrorsTest.Typedef'))); | 185 equals(const Symbol('MirrorsTest.Typedef'))); |
| 186 } |
185 | 187 |
186 expect(methodMirror.simpleName, equals(const Symbol('testNames'))); | 188 expect(methodMirror.simpleName, equals(const Symbol('testNames'))); |
187 expect(methodMirror.qualifiedName, | 189 expect(methodMirror.qualifiedName, |
188 equals(const Symbol('MirrorsTest.testNames'))); | 190 equals(const Symbol('MirrorsTest.testNames'))); |
189 | 191 |
190 expect(variableMirror.simpleName, equals(const Symbol('field'))); | 192 expect(variableMirror.simpleName, equals(const Symbol('field'))); |
191 expect(variableMirror.qualifiedName, | 193 expect(variableMirror.qualifiedName, |
192 equals(const Symbol('MirrorsTest.Class.field'))); | 194 equals(const Symbol('MirrorsTest.Class.field'))); |
193 } | 195 } |
194 | 196 |
(...skipping 12 matching lines...) Expand all Loading... |
207 test("Test field access", () { testFieldAccess(mirrors); }); | 209 test("Test field access", () { testFieldAccess(mirrors); }); |
208 test("Test closure mirrors", () { testClosureMirrors(mirrors); }); | 210 test("Test closure mirrors", () { testClosureMirrors(mirrors); }); |
209 test("Test invoke constructor", () { testInvokeConstructor(mirrors); }); | 211 test("Test invoke constructor", () { testInvokeConstructor(mirrors); }); |
210 test("Test current library uri", () { | 212 test("Test current library uri", () { |
211 testLibraryUri(new Class(), | 213 testLibraryUri(new Class(), |
212 (Uri uri) => uri.path.endsWith('/mirrors_test.dart')); | 214 (Uri uri) => uri.path.endsWith('/mirrors_test.dart')); |
213 }); | 215 }); |
214 test("Test dart library uri", () { | 216 test("Test dart library uri", () { |
215 testLibraryUri("test", (Uri uri) => uri == Uri.parse('dart:core')); | 217 testLibraryUri("test", (Uri uri) => uri == Uri.parse('dart:core')); |
216 }); | 218 }); |
217 if (isDart2js) return; | 219 test("Test simple and qualifiedName", () { testNames(mirrors, isDart2js); }); |
| 220 if (isDart2js) return; // TODO(ahe): Remove this line. |
218 test("Test reflect type", () { testReflectClass(mirrors); }); | 221 test("Test reflect type", () { testReflectClass(mirrors); }); |
219 test("Test simple and qualifiedName", () { testNames(mirrors); }); | |
220 } | 222 } |
221 | 223 |
222 main() { | 224 main() { |
223 mainWithArgument(isDart2js: false); | 225 mainWithArgument(isDart2js: false); |
224 } | 226 } |
OLD | NEW |