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

Side by Side Diff: tests/lib/mirrors/closure_mirror_find_in_context_test.dart

Issue 23633002: Implementation for ClosureMirror.findInContext. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 2 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 import "dart:mirrors";
6
7 import "stringify.dart";
8
9 import "package:expect/expect.dart";
10
11 import "closure_mirror_import1.dart";
12 import "closure_mirror_import1.dart" as imp1;
13 import "closure_mirror_import1.dart" as imp1_hidden
14 hide globalVariableInImport, StaticClass;
15 import "closure_mirror_import2.dart" as imp2;
16
17 var globalVariable = "globalVariable";
18
19 globalFoo() => 17;
20
21 class S {
22 static staticFooInS() => "staticFooInS";
23 static var staticInS = "staticInS";
24 var instanceInS = "instanceInS";
25 }
26
27 class C extends S {
28 static staticFooInC() => "staticFooInC";
29 static var staticInC = "staticInC";
30 var instanceInC = "instanceInC";
31
32 foo() => null;
33
34 bar() {
35 var x = 7;
36 var instanceInC = 11; // Hiding the instance field.
37 var y = 3; // Not in context.
38 baz() {
39 if (x) {}
40 if (instanceInC) {}
41 };
42 return reflect(baz);
43 }
44 }
45
46 main() {
47 C c = new C();
48 ClosureMirror cm = reflect(c.foo);
49
50 var result;
51
52 result = cm.findInContext(const Symbol("globalVariable"));
53 expect("Instance(value = globalVariable)", result);
54
55 result = cm.findInContext(const Symbol("globalFoo"));
56 Expect.isTrue(result is ClosureMirror);
57 expect("Instance(value = 17)", result.apply(const []));
58
59 result = cm.findInContext(const Symbol("S.staticInS"));
60 expect("Instance(value = staticInS)", result);
61
62 result = cm.findInContext(const Symbol("staticInS"));
63 Expect.isFalse(result is InstanceMirror);
64 Expect.equals(null, result);
65
66 result = cm.findInContext(const Symbol("staticFooInS"));
67 Expect.isTrue(result is ClosureMirror);
68 expect("Instance(value = staticFooInS)", result.apply(const []));
69
70 result = cm.findInContext(const Symbol("C.staticFooInS"));
71 Expect.isTrue(result is ClosureMirror);
72 expect("Instance(value = staticFooInS)", result.apply(const []));
73
74 result = cm.findInContext(const Symbol("C.staticInC"));
75 expect("Instance(value = staticInC)", result);
76
77 result = cm.findInContext(const Symbol("staticInC"));
78 expect("Instance(value = staticInC)", result);
79
80 result = cm.findInContext(const Symbol("C.staticFooInC"));
81 Expect.isTrue(result is ClosureMirror);
82 expect("Instance(value = staticFooInC)", result.apply(const []));
83
84 result = cm.findInContext(const Symbol("staticFooInC"));
85 Expect.isTrue(result is ClosureMirror);
86 expect("Instance(value = staticFooInC)", result.apply(const []));
87
88 result = cm.findInContext(const Symbol("instanceInC"));
89 expect("Instance(value = instanceInC)", result);
90
91 result = cm.findInContext(const Symbol("instanceInS"));
92 expect("Instance(value = instanceInS)", result);
93
94 result = cm.findInContext(const Symbol("globalVariableInImport1"));
95 expect("Instance(value = globalVariableInImport1)", result);
96
97 result = cm.findInContext(const Symbol("StaticClass.staticField"));
98 expect("Instance(value = staticField)", result);
99
100 result = cm.findInContext(
101 const Symbol("StaticClass.staticFunctionInStaticClass"));
102 Expect.isTrue(result is ClosureMirror);
103 expect("Instance(value = staticFunctionInStaticClass)",
104 result.apply(const []));
105
106 result = cm.findInContext(
107 const Symbol("imp1.StaticClass.staticFunctionInStaticClass"));
108 Expect.isTrue(result is ClosureMirror);
109 expect("Instance(value = staticFunctionInStaticClass)",
110 result.apply(const []));
111
112 result = cm.findInContext(const Symbol("imp1.globalVariableInImport1"));
113 expect("Instance(value = globalVariableInImport1)", result);
114
115 result = cm.findInContext(const Symbol("imp2.globalVariableInImport"));
116 Expect.isFalse(result is InstanceMirror);
117 Expect.equals(null, result);
118
119 result = cm.findInContext(const Symbol("imp1.StaticClass.staticField"));
120 expect("Instance(value = staticField)", result);
121
122 result = cm.findInContext(
123 const Symbol("imp1_hidden.StaticClass.staticField"));
124 Expect.isFalse(result is InstanceMirror);
125 Expect.equals(null, result);
126
127 result = cm.findInContext(const Symbol("firstGlobalVariableInImport2"));
128 expect("Instance(value = firstGlobalVariableInImport2)", result);
129
130 result = cm.findInContext(const Symbol("secondGlobalVariableInImport2"));
131 Expect.isFalse(result is InstanceMirror);
132 Expect.equals(null, result);
133
134 result = cm.findInContext(const Symbol("imp2.secondGlobalVariableInImport2"));
135 expect("Instance(value = secondGlobalVariableInImport2)", result);
136
137 result = c.bar().findInContext(const Symbol("x"));
138 expect("Instance(value = 7)", result);
139
140 result = c.bar().findInContext(const Symbol("instanceInC"));
141 expect("Instance(value = 11)", result);
142
143 result = c.bar().findInContext(const Symbol("y"));
144 Expect.isFalse(result is InstanceMirror);
145 Expect.equals(null, result);
146 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698