Chromium Code Reviews| 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..f38bdbed35ccbaa091a7f79183e266199282aa1a |
| --- /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++) { |
|
hausner
2014/02/12 23:35:45
Our style guide wants spaces around operators. Her
rmacnak
2014/02/12 23:44:12
Fixed.
|
| + 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(); |
| +} |