blob: 099494d56f18c8246cbea2640e84aa66dcc94a65 [file] [log] [blame]
// Copyright (c) 2012, 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.
part of matcher;
/**
* BaseMatcher is the base class for all matchers. To implement a new
* matcher, either add a class that implements Matcher or a class that
* extends BaseMatcher. Extending BaseMatcher has the benefit that a
* default implementation of describeMismatch will be provided.
*/
abstract class BaseMatcher implements Matcher {
const BaseMatcher();
/**
* Tests the matcher against a given [item]
* and return true if the match succeeds; false otherwise.
* [matchState] may be used to return additional info for
* the use of [describeMismatch].
*/
bool matches(item, Map matchState);
/**
* Creates a textual description of a matcher,
* by appending to [mismatchDescription].
*/
Description describe(Description mismatchDescription);
/**
* Generates a description of the matcher failed for a particular
* [item], by appending the description to [mismatchDescription].
* It does not check whether the [item] fails the match, as it is
* only called after a failed match. There may be additional info
* about the mismatch in [matchState].
* The base matcher does not add anything as the actual value is
* typically sufficient, but matchers that can add valuable info
* should override this.
*/
Description describeMismatch(item, Description mismatchDescription,
Map matchState, bool verbose) =>
mismatchDescription;
}