Index: pkg/unittest/lib/mirror_matchers.dart |
diff --git a/pkg/unittest/lib/mirror_matchers.dart b/pkg/unittest/lib/mirror_matchers.dart |
index ad0dfd414e193773a1548b61527f77633a7ed15c..d144554e0339331ac381bc7b2f925a2258907ed3 100644 |
--- a/pkg/unittest/lib/mirror_matchers.dart |
+++ b/pkg/unittest/lib/mirror_matchers.dart |
@@ -1,99 +1,12 @@ |
// 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. |
-/** |
- * The mirror matchers library provides some additional matchers that |
- * make use of dart:mirrors. |
- * |
- * ## Installing ## |
- * |
- * Use [pub][] to install this package. Add the following to your `pubspec.yaml` |
- * file. |
- * |
- * dependencies: |
- * unittest: any |
- * |
- * Then run `pub install`. |
- * |
- * Import this into your Dart code with: |
- * |
- * import 'package:unittest/mirror_matchers.dart'; |
- * |
- * For more information, see the [unittest package on pub.dartlang.org]. |
- * (http://pub.dartlang.org/packages/unittest). |
- * |
- * [pub]: http://pub.dartlang.org |
- * [pkg]: http://pub.dartlang.org/packages/mirror_matchers |
- */ |
-library unittest.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; |
- } |
+/// `unittest.mirror_matchers` has been moved to the `matcher` package. |
+/// |
+/// Add `matcher` to your `pubspec.yaml` file and import it via |
+/// `import 'package:matcher/mirror_matchers.dart';` |
+@deprecated |
+library unittest.mirror_matchers; |
- 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; |
- } |
-} |
+export 'package:matcher/mirror_matchers.dart'; |