blob: f8dd211231bfe1f32edb86a1384c6a005dc5b650 [file] [log] [blame]
// Copyright 2012 The Closure Library Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS-IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
/**
* @fileoverview Provides the base Matcher interface. User code should use the
* matchers through assertThat statements and not directly.
*/
goog.provide('goog.labs.testing.Matcher');
/**
* A matcher object to be used in assertThat statements.
* @interface
*/
goog.labs.testing.Matcher = function() {};
/**
* Determines whether a value matches the constraints of the match.
*
* @param {*} value The object to match.
* @return {boolean} Whether the input value matches this matcher.
*/
goog.labs.testing.Matcher.prototype.matches = function(value) {};
/**
* Describes why the matcher failed.
*
* @param {*} value The value that didn't match.
* @param {string=} opt_description A partial description to which the reason
* will be appended.
*
* @return {string} Description of why the matcher failed.
*/
goog.labs.testing.Matcher.prototype.describe =
function(value, opt_description) {};
/**
* Generates a Matcher from the ‘matches’ and ‘describe’ functions passed in.
*
* @param {!Function} matchesFunction The ‘matches’ function.
* @param {Function=} opt_describeFunction The ‘describe’ function.
* @return {!Function} The custom matcher.
*/
goog.labs.testing.Matcher.makeMatcher =
function(matchesFunction, opt_describeFunction) {
/**
* @constructor
* @implements {goog.labs.testing.Matcher}
* @final
*/
var matcherConstructor = function() {};
/** @override */
matcherConstructor.prototype.matches = matchesFunction;
if (opt_describeFunction) {
/** @override */
matcherConstructor.prototype.describe = opt_describeFunction;
}
return matcherConstructor;
};