OLD | NEW |
---|---|
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 import "dart:mirrors"; | 5 import "dart:mirrors"; |
6 | 6 |
7 import "../../../pkg/unittest/lib/unittest.dart"; | 7 import "../../../pkg/unittest/lib/unittest.dart"; |
ahe
2013/07/16 20:36:53
It would be great if you could avoid using the uni
Michael Lippautz (Google)
2013/07/16 21:14:00
Using stringify.dart or expect/expect.dart now. Do
| |
8 | 8 |
9 String _symbolToString(Symbol sym) { | 9 String _symbolToString(Symbol sym) { |
10 return MirrorSystem.getName(sym); | 10 return MirrorSystem.getName(sym); |
11 } | 11 } |
12 | 12 |
13 doNothing42() {} | 13 doNothing42() {} |
14 | 14 |
15 int _x = 5; | |
16 int get topGetter => _x; | |
17 void set topSetter(x) { _x = x } | |
18 | |
19 class AbstractC { | |
20 | |
21 AbstractC(); | |
22 | |
23 void bar(); | |
24 get priv; | |
25 set priv(value); | |
26 } | |
27 | |
28 class C extends AbstractC { | |
29 | |
30 static foo() {} | |
31 | |
32 C(); | |
33 C.other(); | |
34 C.other2() : this.other(); | |
35 | |
36 var _priv; | |
37 get priv => _priv; | |
38 set priv(value) => _priv = value; | |
39 } | |
40 | |
41 checkKinds(method, kinds) { | |
42 expect(method.isStatic, kinds[0]); | |
43 expect(method.isAbstract, kinds[1]); | |
44 expect(method.isGetter, kinds[2]); | |
45 expect(method.isSetter, kinds[3]); | |
46 expect(method.isConstructor, kinds[4]); | |
47 } | |
48 | |
15 main() { | 49 main() { |
16 // Regression test for http://www.dartbug.com/6335 | 50 // Regression test for http://www.dartbug.com/6335 |
17 test("NamedMethodName", () { | 51 test("NamedMethodName", () { |
18 var closureMirror = reflect(doNothing42); | 52 var closureMirror = reflect(doNothing42); |
19 expect(_symbolToString(closureMirror.function.simpleName), "doNothing42"); | 53 expect(_symbolToString(closureMirror.function.simpleName), "doNothing42"); |
20 }); | 54 }); |
55 test("FunctionKinds", () { | |
ahe
2013/07/16 20:36:53
As far as I can tell, the added tests reuse virtua
Michael Lippautz (Google)
2013/07/16 21:14:00
Done.
| |
56 // Top level functions should be static. | |
57 var closureMirror = reflect(doNothing42); | |
58 checkKinds(closureMirror.function, | |
59 [true, false, false, false, false]); | |
60 var libraryMirror = reflectClass(C).owner; | |
61 checkKinds(libraryMirror.getters[const Symbol("topGetter")], | |
62 [true, false, true, false, false]); | |
63 checkKinds(libraryMirror.setters[const Symbol("topSetter=")], | |
64 [true, false, false, true, false]); | |
65 var classMirror; | |
66 classMirror = reflectClass(C); | |
67 checkKinds(classMirror.members[const Symbol("foo")], | |
68 [true, false, false, false, false]); | |
69 checkKinds(classMirror.members[const Symbol("priv")], | |
70 [false, false, true, false, false]); | |
71 checkKinds(classMirror.members[const Symbol("priv=")], | |
72 [false, false, false, true, false]); | |
73 checkKinds(classMirror.constructors[const Symbol("C")], | |
74 [false, false, false, false, true]); | |
75 checkKinds(classMirror.constructors[const Symbol("C.other")], | |
76 [false, false, false, false, true]); | |
77 checkKinds(classMirror.constructors[const Symbol("C.other2")], | |
78 [false, false, false, false, true]); | |
79 classMirror = reflectClass(AbstractC); | |
80 checkKinds(classMirror.constructors[const Symbol("AbstractC")], | |
81 [false, false, false, false, true]); | |
82 checkKinds(classMirror.members[const Symbol("bar")], | |
83 [false, true, false, false, false]); | |
84 checkKinds(classMirror.members[const Symbol("priv")], | |
85 [false, true, true, false, false]); | |
86 checkKinds(classMirror.members[const Symbol("priv=")], | |
87 [false, true, false, true, false]); | |
88 }); | |
21 } | 89 } |
OLD | NEW |