Chromium Code Reviews| Index: tests/lib/mirrors/instance_members_with_override_test.dart |
| diff --git a/tests/lib/mirrors/instance_members_with_override_test.dart b/tests/lib/mirrors/instance_members_with_override_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..599c5760dec558ae2ed12527f71c3fa6a57b8b06 |
| --- /dev/null |
| +++ b/tests/lib/mirrors/instance_members_with_override_test.dart |
| @@ -0,0 +1,83 @@ |
| +// Copyright (c) 2013, 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.declarations_test; |
| + |
| +import 'dart:mirrors'; |
| +import 'package:expect/expect.dart'; |
| + |
| +class S { |
| + var field; |
| + final finalField; |
| + method() {} |
| + get getter {} |
| + set setter(x) {} |
| + notOverridden() {} |
| +} |
| +class C extends S { |
| + var field; |
| + final finalField; |
| + method() {} |
| + get getter {} |
| + set setter(x) {} |
| + abstract notOverridden(); |
| +} |
| + |
| +selectKeys(map, predicate) { |
| + return map.keys.where((key) => predicate(map[key])); |
| +} |
| + |
| +main() { |
| + ClassMirror sMirror = reflectClass(S); |
| + ClassMirror cMirror = reflectClass(C); |
| + |
| + Expect.setEquals( |
| + [#field, |
| + const Symbol('field='), |
| + #finalField, |
| + #method, |
| + #getter, |
| + const Symbol('setter='), |
| + #notOverridden, |
| + #hashCode, |
| + #runtimeType, |
| + #==, |
| + #noSuchMethod, |
| + #toString], |
| + selectKeys(sMirror.instanceMembers, (dm) => !dm.isPrivate)); |
| + // Filter out private to avoid implementation-specific members of Object. |
| + |
| + Expect.equals(sMirror, sMirror.instanceMembers[#field].owner); |
| + Expect.equals(sMirror, sMirror.instanceMembers[const Symbol('field=')].owner); |
| + Expect.equals(sMirror, sMirror.instanceMembers[#finalField].owner); |
| + Expect.equals(sMirror, sMirror.instanceMembers[#method].owner); |
| + Expect.equals(sMirror, sMirror.instanceMembers[#getter].owner); |
| + Expect.equals(sMirror, sMirror.instanceMembers[const Symbol('setter=')].owner); |
|
ahe
2013/10/29 10:14:38
Long line.
|
| + |
| + Expect.setEquals( |
| + [#field, |
| + const Symbol('field='), |
| + #finalField, |
| + #method, |
| + #getter, |
| + const Symbol('setter='), |
| + #notOverridden, |
| + #hashCode, |
| + #runtimeType, |
| + #==, |
| + #noSuchMethod, |
| + #toString], |
| + selectKeys(cMirror.instanceMembers, (dm) => !dm.isPrivate)); |
| + // Filter out private to avoid implementation-specific members of Object. |
| + |
| + Expect.equals(cMirror, cMirror.instanceMembers[#field].owner); |
| + Expect.equals(cMirror, cMirror.instanceMembers[const Symbol('field=')].owner); |
| + Expect.equals(cMirror, cMirror.instanceMembers[#finalField].owner); |
| + Expect.equals(cMirror, cMirror.instanceMembers[#method].owner); |
| + Expect.equals(cMirror, cMirror.instanceMembers[#getter].owner); |
| + Expect.equals(cMirror, cMirror.instanceMembers[const Symbol('setter=')].owner); |
|
ahe
2013/10/29 10:14:38
Long line.
|
| + |
| + Expect.equals(sMirror, sMirror.instanceMembers[#notOverridden].owner); |
| + Expect.equals(sMirror, cMirror.instanceMembers[#notOverridden].owner); |
|
rmacnak
2013/10/25 21:58:36
?
gbracha
2013/10/26 18:37:48
Hmm. So the theory is that the actual method that
|
| +} |