| Index: pkg/matcher/lib/src/operator_matchers.dart
|
| diff --git a/pkg/matcher/lib/src/operator_matchers.dart b/pkg/matcher/lib/src/operator_matchers.dart
|
| index fa17aba3ef74b94a34c1a83e614bf36c42a1e13e..fb79e8fd2586474814893b8e0760103885a15e2a 100644
|
| --- a/pkg/matcher/lib/src/operator_matchers.dart
|
| +++ b/pkg/matcher/lib/src/operator_matchers.dart
|
| @@ -2,11 +2,13 @@
|
| // 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.
|
|
|
| -part of matcher;
|
| +library matcher.operator_matchers;
|
|
|
| -/**
|
| - * This returns a matcher that inverts [matcher] to its logical negation.
|
| - */
|
| +import 'core_matchers.dart';
|
| +import 'expect.dart';
|
| +import 'interfaces.dart';
|
| +
|
| +/// This returns a matcher that inverts [matcher] to its logical negation.
|
| Matcher isNot(matcher) => new _IsNot(wrapMatcher(matcher));
|
|
|
| class _IsNot extends Matcher {
|
| @@ -20,13 +22,11 @@ class _IsNot extends Matcher {
|
| description.add('not ').addDescriptionOf(_matcher);
|
| }
|
|
|
| -/**
|
| - * This returns a matcher that matches if all of the matchers passed as
|
| - * arguments (up to 7) match. Instead of passing the matchers separately
|
| - * they can be passed as a single List argument.
|
| - * Any argument that is not a matcher is implicitly wrapped in a
|
| - * Matcher to check for equality.
|
| -*/
|
| +/// This returns a matcher that matches if all of the matchers passed as
|
| +/// arguments (up to 7) match. Instead of passing the matchers separately
|
| +/// they can be passed as a single List argument.
|
| +/// Any argument that is not a matcher is implicitly wrapped in a
|
| +/// Matcher to check for equality.
|
| Matcher allOf(arg0,
|
| [arg1 = null,
|
| arg2 = null,
|
| @@ -34,46 +34,11 @@ Matcher allOf(arg0,
|
| arg4 = null,
|
| arg5 = null,
|
| arg6 = null]) {
|
| - if (arg0 is List) {
|
| - expect(arg1, isNull);
|
| - expect(arg2, isNull);
|
| - expect(arg3, isNull);
|
| - expect(arg4, isNull);
|
| - expect(arg5, isNull);
|
| - expect(arg6, isNull);
|
| - for (int i = 0; i < arg0.length; i++) {
|
| - arg0[i] = wrapMatcher(arg0[i]);
|
| - }
|
| - return new _AllOf(arg0);
|
| - } else {
|
| - List matchers = new List();
|
| - if (arg0 != null) {
|
| - matchers.add(wrapMatcher(arg0));
|
| - }
|
| - if (arg1 != null) {
|
| - matchers.add(wrapMatcher(arg1));
|
| - }
|
| - if (arg2 != null) {
|
| - matchers.add(wrapMatcher(arg2));
|
| - }
|
| - if (arg3 != null) {
|
| - matchers.add(wrapMatcher(arg3));
|
| - }
|
| - if (arg4 != null) {
|
| - matchers.add(wrapMatcher(arg4));
|
| - }
|
| - if (arg5 != null) {
|
| - matchers.add(wrapMatcher(arg5));
|
| - }
|
| - if (arg6 != null) {
|
| - matchers.add(wrapMatcher(arg6));
|
| - }
|
| - return new _AllOf(matchers);
|
| - }
|
| + return new _AllOf(_wrapArgs(arg0, arg1, arg2, arg3, arg4, arg5, arg6));
|
| }
|
|
|
| class _AllOf extends Matcher {
|
| - final Iterable<Matcher> _matchers;
|
| + final List<Matcher> _matchers;
|
|
|
| const _AllOf(this._matchers);
|
|
|
| @@ -99,17 +64,15 @@ class _AllOf extends Matcher {
|
| description.addAll('(', ' and ', ')', _matchers);
|
| }
|
|
|
| -/**
|
| - * Matches if any of the given matchers evaluate to true. The
|
| - * arguments can be a set of matchers as separate parameters
|
| - * (up to 7), or a List of matchers.
|
| - *
|
| - * The matchers are evaluated from left to right using short-circuit
|
| - * evaluation, so evaluation stops as soon as a matcher returns true.
|
| - *
|
| - * Any argument that is not a matcher is implicitly wrapped in a
|
| - * Matcher to check for equality.
|
| -*/
|
| +/// Matches if any of the given matchers evaluate to true. The
|
| +/// arguments can be a set of matchers as separate parameters
|
| +/// (up to 7), or a List of matchers.
|
| +///
|
| +/// The matchers are evaluated from left to right using short-circuit
|
| +/// evaluation, so evaluation stops as soon as a matcher returns true.
|
| +///
|
| +/// Any argument that is not a matcher is implicitly wrapped in a
|
| +/// Matcher to check for equality.
|
|
|
| Matcher anyOf(arg0,
|
| [arg1 = null,
|
| @@ -118,59 +81,62 @@ Matcher anyOf(arg0,
|
| arg4 = null,
|
| arg5 = null,
|
| arg6 = null]) {
|
| - if (arg0 is List) {
|
| - expect(arg1, isNull);
|
| - expect(arg2, isNull);
|
| - expect(arg3, isNull);
|
| - expect(arg4, isNull);
|
| - expect(arg5, isNull);
|
| - expect(arg6, isNull);
|
| - for (int i = 0; i < arg0.length; i++) {
|
| - arg0[i] = wrapMatcher(arg0[i]);
|
| - }
|
| - return new _AnyOf(arg0);
|
| - } else {
|
| - List matchers = new List();
|
| - if (arg0 != null) {
|
| - matchers.add(wrapMatcher(arg0));
|
| - }
|
| - if (arg1 != null) {
|
| - matchers.add(wrapMatcher(arg1));
|
| - }
|
| - if (arg2 != null) {
|
| - matchers.add(wrapMatcher(arg2));
|
| - }
|
| - if (arg3 != null) {
|
| - matchers.add(wrapMatcher(arg3));
|
| - }
|
| - if (arg4 != null) {
|
| - matchers.add(wrapMatcher(arg4));
|
| - }
|
| - if (arg5 != null) {
|
| - matchers.add(wrapMatcher(arg5));
|
| - }
|
| - if (arg6 != null) {
|
| - matchers.add(wrapMatcher(arg6));
|
| - }
|
| - return new _AnyOf(matchers);
|
| - }
|
| + return new _AnyOf(_wrapArgs(arg0, arg1, arg2, arg3, arg4, arg5, arg6));
|
| }
|
|
|
| class _AnyOf extends Matcher {
|
| - final Iterable<Matcher> _matchers;
|
| + final List<Matcher> _matchers;
|
|
|
| const _AnyOf(this._matchers);
|
|
|
| bool matches(item, Map matchState) {
|
| - for (var matcher in _matchers) {
|
| - if (matcher.matches(item, matchState)) {
|
| - return true;
|
| - }
|
| - }
|
| - return false;
|
| + for (var matcher in _matchers) {
|
| + if (matcher.matches(item, matchState)) {
|
| + return true;
|
| + }
|
| + }
|
| + return false;
|
| }
|
|
|
| Description describe(Description description) =>
|
| description.addAll('(', ' or ', ')', _matchers);
|
| }
|
|
|
| +List<Matcher> _wrapArgs(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
|
| + if (arg0 is List) {
|
| + // TODO(kevmoo) throw a more helpful error here if any of these args is
|
| + // not null
|
| + expect(arg1, isNull);
|
| + expect(arg2, isNull);
|
| + expect(arg3, isNull);
|
| + expect(arg4, isNull);
|
| + expect(arg5, isNull);
|
| + expect(arg6, isNull);
|
| +
|
| + return arg0.map((a) => wrapMatcher(a)).toList();
|
| + }
|
| +
|
| + List matchers = new List();
|
| + if (arg0 != null) {
|
| + matchers.add(wrapMatcher(arg0));
|
| + }
|
| + if (arg1 != null) {
|
| + matchers.add(wrapMatcher(arg1));
|
| + }
|
| + if (arg2 != null) {
|
| + matchers.add(wrapMatcher(arg2));
|
| + }
|
| + if (arg3 != null) {
|
| + matchers.add(wrapMatcher(arg3));
|
| + }
|
| + if (arg4 != null) {
|
| + matchers.add(wrapMatcher(arg4));
|
| + }
|
| + if (arg5 != null) {
|
| + matchers.add(wrapMatcher(arg5));
|
| + }
|
| + if (arg6 != null) {
|
| + matchers.add(wrapMatcher(arg6));
|
| + }
|
| + return matchers;
|
| +}
|
|
|