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 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 | 98 |
99 instMirror.setFieldAsync(const Symbol('field'), 44); | 99 instMirror.setFieldAsync(const Symbol('field'), 44); |
100 future = instMirror.getFieldAsync(const Symbol('field')); | 100 future = instMirror.getFieldAsync(const Symbol('field')); |
101 future.then(expectAsync1((resultMirror) { | 101 future.then(expectAsync1((resultMirror) { |
102 expect(resultMirror.reflectee, equals(44)); | 102 expect(resultMirror.reflectee, equals(44)); |
103 expect(instance.field, equals(44)); | 103 expect(instance.field, equals(44)); |
104 })); | 104 })); |
105 } | 105 } |
106 | 106 |
107 testClosureMirrors(mirrors) { | 107 testClosureMirrors(mirrors) { |
| 108 // TODO(ahe): Test optional parameters (named or not). |
108 var closure = (x, y, z) { return x + y + z; }; | 109 var closure = (x, y, z) { return x + y + z; }; |
109 | 110 |
110 var mirror = reflect(closure); | 111 var mirror = reflect(closure); |
111 expect(mirror is ClosureMirror, equals(true)); | 112 expect(mirror is ClosureMirror, equals(true)); |
112 | 113 |
113 var funcMirror = mirror.function; | 114 var funcMirror = mirror.function; |
114 expect(funcMirror is MethodMirror, equals(true)); | 115 expect(funcMirror is MethodMirror, equals(true)); |
115 expect(funcMirror.parameters.length, equals(3)); | 116 expect(funcMirror.parameters.length, equals(3)); |
116 | 117 |
117 expect(mirror.apply([7, 8, 9]).reflectee, equals(24)); | 118 expect(mirror.apply([7, 8, 9]).reflectee, equals(24)); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
197 LibraryMirror valueLibrary = valueClass.owner; | 198 LibraryMirror valueLibrary = valueClass.owner; |
198 expect(check(valueLibrary.uri), isTrue); | 199 expect(check(valueLibrary.uri), isTrue); |
199 } | 200 } |
200 | 201 |
201 mainWithArgument({bool isDart2js}) { | 202 mainWithArgument({bool isDart2js}) { |
202 var mirrors = currentMirrorSystem(); | 203 var mirrors = currentMirrorSystem(); |
203 test("Test reflective method invocation", () { testInvoke(mirrors); }); | 204 test("Test reflective method invocation", () { testInvoke(mirrors); }); |
204 test("Test instance field access", () { testInstanceFieldAccess(mirrors); }); | 205 test("Test instance field access", () { testInstanceFieldAccess(mirrors); }); |
205 test('Test intercepted objects', () { testIntercepted(mirrors); }); | 206 test('Test intercepted objects', () { testIntercepted(mirrors); }); |
206 test("Test field access", () { testFieldAccess(mirrors); }); | 207 test("Test field access", () { testFieldAccess(mirrors); }); |
| 208 test("Test closure mirrors", () { testClosureMirrors(mirrors); }); |
207 if (isDart2js) return; | 209 if (isDart2js) return; |
208 test("Test closure mirrors", () { testClosureMirrors(mirrors); }); | |
209 test("Test invoke constructor", () { testInvokeConstructor(mirrors); }); | 210 test("Test invoke constructor", () { testInvokeConstructor(mirrors); }); |
210 test("Test reflect type", () { testReflectClass(mirrors); }); | 211 test("Test reflect type", () { testReflectClass(mirrors); }); |
211 test("Test simple and qualifiedName", () { testNames(mirrors); }); | 212 test("Test simple and qualifiedName", () { testNames(mirrors); }); |
212 test("Test current library uri", () { | 213 test("Test current library uri", () { |
213 testLibraryUri(new Class(), | 214 testLibraryUri(new Class(), |
214 (Uri uri) => uri.path.endsWith('/mirrors_test.dart')); | 215 (Uri uri) => uri.path.endsWith('/mirrors_test.dart')); |
215 }); | 216 }); |
216 test("Test dart library uri", () { | 217 test("Test dart library uri", () { |
217 testLibraryUri("test", (Uri uri) => uri == Uri.parse('dart:core')); | 218 testLibraryUri("test", (Uri uri) => uri == Uri.parse('dart:core')); |
218 }); | 219 }); |
219 } | 220 } |
220 | 221 |
221 main() { | 222 main() { |
222 mainWithArgument(isDart2js: false); | 223 mainWithArgument(isDart2js: false); |
223 } | 224 } |
OLD | NEW |