Index: pkg/matcher/lib/mirror_matchers.dart |
diff --git a/pkg/matcher/lib/mirror_matchers.dart b/pkg/matcher/lib/mirror_matchers.dart |
deleted file mode 100644 |
index f397128fc2b74c3cfc97e39c75a7082800ec51cb..0000000000000000000000000000000000000000 |
--- a/pkg/matcher/lib/mirror_matchers.dart |
+++ /dev/null |
@@ -1,76 +0,0 @@ |
-// 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. |
- |
-/// The mirror matchers library provides some additional matchers that |
-/// make use of `dart:mirrors`. |
-library matcher.mirror_matchers; |
- |
-import 'dart:mirrors'; |
- |
-import 'matcher.dart'; |
- |
-/// Returns a matcher that checks if a class instance has a property |
-/// with name [name], and optionally, if that property in turn satisfies |
-/// a [matcher]. |
-Matcher hasProperty(String name, [matcher]) => |
- new _HasProperty(name, matcher == null ? null : wrapMatcher(matcher)); |
- |
-class _HasProperty extends Matcher { |
- final String _name; |
- final Matcher _matcher; |
- |
- const _HasProperty(this._name, [this._matcher]); |
- |
- bool matches(item, Map matchState) { |
- var mirror = reflect(item); |
- var classMirror = mirror.type; |
- var symbol = new Symbol(_name); |
- var candidate = classMirror.declarations[symbol]; |
- if (candidate == null) { |
- addStateInfo(matchState, {'reason': 'has no property named "$_name"'}); |
- return false; |
- } |
- bool isInstanceField = candidate is VariableMirror && !candidate.isStatic; |
- bool isInstanceGetter = |
- candidate is MethodMirror && candidate.isGetter && !candidate.isStatic; |
- if (!(isInstanceField || isInstanceGetter)) { |
- addStateInfo(matchState, {'reason': |
- 'has a member named "$_name", but it is not an instance property'}); |
- return false; |
- } |
- if (_matcher == null) return true; |
- var result = mirror.getField(symbol); |
- var resultMatches = _matcher.matches(result.reflectee, matchState); |
- if (!resultMatches) { |
- addStateInfo(matchState, {'value': result.reflectee}); |
- } |
- return resultMatches; |
- } |
- |
- Description describe(Description description) { |
- description.add('has property "$_name"'); |
- if (_matcher != null) { |
- description.add(' which matches ').addDescriptionOf(_matcher); |
- } |
- return description; |
- } |
- |
- Description describeMismatch(item, Description mismatchDescription, |
- Map matchState, bool verbose) { |
- var reason = matchState == null ? null : matchState['reason']; |
- if (reason != null) { |
- mismatchDescription.add(reason); |
- } else { |
- mismatchDescription.add('has property "$_name" with value '). |
- addDescriptionOf(matchState['value']); |
- var innerDescription = new StringDescription(); |
- _matcher.describeMismatch(matchState['value'], innerDescription, |
- matchState['state'], verbose); |
- if (innerDescription.length > 0) { |
- mismatchDescription.add(' which ').add(innerDescription.toString()); |
- } |
- } |
- return mismatchDescription; |
- } |
-} |