Index: tests/lib/mirrors/hot_get_field_test.dart |
diff --git a/tests/lib/mirrors/hot_get_field_test.dart b/tests/lib/mirrors/hot_get_field_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ca798d377addca8cc8cfd693843a53d7825dad2e |
--- /dev/null |
+++ b/tests/lib/mirrors/hot_get_field_test.dart |
@@ -0,0 +1,51 @@ |
+// Copyright (c) 2014, 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 test.hot_get_field; |
+ |
+import 'dart:mirrors'; |
+import 'package:expect/expect.dart'; |
+ |
+class C { |
+ var field; |
+ var _field; |
+} |
+ |
+const int optimizationThreshold = 20; |
+ |
+testPublic() { |
+ var c = new C(); |
+ var im = reflect(c); |
+ |
+ for (int i = 0; i < (2 * optimizationThreshold); i++) { |
+ c.field = i; |
+ Expect.equals(i, im.getField(#field).reflectee); |
+ } |
+} |
+ |
+testPrivate() { |
+ var c = new C(); |
+ var im = reflect(c); |
+ |
+ for (int i = 0; i < (2 * optimizationThreshold); i++) { |
+ c._field = i; |
+ Expect.equals(i, im.getField(#_field).reflectee); |
+ } |
+} |
+ |
+testPrivateWrongLibrary() { |
+ var c = new C(); |
+ var im = reflect(c); |
+ var selector = MirrorSystem.getSymbol('_field', reflectClass(Mirror).owner); |
+ |
+ for (int i = 0; i < (2 * optimizationThreshold); i++) { |
+ Expect.throws(() => im.getField(selector), (e) => e is NoSuchMethodError); |
+ } |
+} |
+ |
+main() { |
+ testPublic(); |
+ testPrivate(); |
+ testPrivateWrongLibrary(); |
+} |