307 lines
6.3 KiB
JavaScript
307 lines
6.3 KiB
JavaScript
// 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 built-in object matchers like equalsObject,
|
|
* hasProperty, instanceOf, etc.
|
|
*/
|
|
|
|
|
|
|
|
goog.provide('goog.labs.testing.HasPropertyMatcher');
|
|
goog.provide('goog.labs.testing.InstanceOfMatcher');
|
|
goog.provide('goog.labs.testing.IsNullMatcher');
|
|
goog.provide('goog.labs.testing.IsNullOrUndefinedMatcher');
|
|
goog.provide('goog.labs.testing.IsUndefinedMatcher');
|
|
goog.provide('goog.labs.testing.ObjectEqualsMatcher');
|
|
|
|
|
|
goog.require('goog.labs.testing.Matcher');
|
|
goog.require('goog.string');
|
|
|
|
|
|
|
|
/**
|
|
* The Equals matcher.
|
|
*
|
|
* @param {!Object} expectedObject The expected object.
|
|
*
|
|
* @constructor
|
|
* @implements {goog.labs.testing.Matcher}
|
|
*/
|
|
goog.labs.testing.ObjectEqualsMatcher = function(expectedObject) {
|
|
/**
|
|
* @type {!Object}
|
|
* @private
|
|
*/
|
|
this.object_ = expectedObject;
|
|
};
|
|
|
|
|
|
/**
|
|
* Determines if two objects are the same.
|
|
*
|
|
* @override
|
|
*/
|
|
goog.labs.testing.ObjectEqualsMatcher.prototype.matches =
|
|
function(actualObject) {
|
|
return actualObject === this.object_;
|
|
};
|
|
|
|
|
|
/**
|
|
* @override
|
|
*/
|
|
goog.labs.testing.ObjectEqualsMatcher.prototype.describe =
|
|
function(actualObject) {
|
|
return 'Input object is not the same as the expected object.';
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
* The HasProperty matcher.
|
|
*
|
|
* @param {string} property Name of the property to test.
|
|
*
|
|
* @constructor
|
|
* @implements {goog.labs.testing.Matcher}
|
|
*/
|
|
goog.labs.testing.HasPropertyMatcher = function(property) {
|
|
/**
|
|
* @type {string}
|
|
* @private
|
|
*/
|
|
this.property_ = property;
|
|
};
|
|
|
|
|
|
/**
|
|
* Determines if an object has a property.
|
|
*
|
|
* @override
|
|
*/
|
|
goog.labs.testing.HasPropertyMatcher.prototype.matches =
|
|
function(actualObject) {
|
|
return this.property_ in actualObject;
|
|
};
|
|
|
|
|
|
/**
|
|
* @override
|
|
*/
|
|
goog.labs.testing.HasPropertyMatcher.prototype.describe =
|
|
function(actualObject) {
|
|
return 'Object does not have property: ' + this.property_;
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
* The InstanceOf matcher.
|
|
*
|
|
* @param {!Object} object The expected class object.
|
|
*
|
|
* @constructor
|
|
* @implements {goog.labs.testing.Matcher}
|
|
*/
|
|
goog.labs.testing.InstanceOfMatcher = function(object) {
|
|
/**
|
|
* @type {!Object}
|
|
* @private
|
|
*/
|
|
this.object_ = object;
|
|
};
|
|
|
|
|
|
/**
|
|
* Determines if an object is an instance of another object.
|
|
*
|
|
* @override
|
|
*/
|
|
goog.labs.testing.InstanceOfMatcher.prototype.matches =
|
|
function(actualObject) {
|
|
return actualObject instanceof this.object_;
|
|
};
|
|
|
|
|
|
/**
|
|
* @override
|
|
*/
|
|
goog.labs.testing.InstanceOfMatcher.prototype.describe =
|
|
function(actualObject) {
|
|
return 'Input object is not an instance of the expected object';
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
* The IsNullOrUndefined matcher.
|
|
*
|
|
* @constructor
|
|
* @implements {goog.labs.testing.Matcher}
|
|
*/
|
|
goog.labs.testing.IsNullOrUndefinedMatcher = function() {};
|
|
|
|
|
|
/**
|
|
* Determines if input value is null or undefined.
|
|
*
|
|
* @override
|
|
*/
|
|
goog.labs.testing.IsNullOrUndefinedMatcher.prototype.matches =
|
|
function(actualValue) {
|
|
return !goog.isDefAndNotNull(actualValue);
|
|
};
|
|
|
|
|
|
/**
|
|
* @override
|
|
*/
|
|
goog.labs.testing.IsNullOrUndefinedMatcher.prototype.describe =
|
|
function(actualValue) {
|
|
return actualValue + ' is not null or undefined.';
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
* The IsNull matcher.
|
|
*
|
|
* @constructor
|
|
* @implements {goog.labs.testing.Matcher}
|
|
*/
|
|
goog.labs.testing.IsNullMatcher = function() {};
|
|
|
|
|
|
/**
|
|
* Determines if input value is null.
|
|
*
|
|
* @override
|
|
*/
|
|
goog.labs.testing.IsNullMatcher.prototype.matches =
|
|
function(actualValue) {
|
|
return goog.isNull(actualValue);
|
|
};
|
|
|
|
|
|
/**
|
|
* @override
|
|
*/
|
|
goog.labs.testing.IsNullMatcher.prototype.describe =
|
|
function(actualValue) {
|
|
return actualValue + ' is not null.';
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
* The IsUndefined matcher.
|
|
*
|
|
* @constructor
|
|
* @implements {goog.labs.testing.Matcher}
|
|
*/
|
|
goog.labs.testing.IsUndefinedMatcher = function() {};
|
|
|
|
|
|
/**
|
|
* Determines if input value is undefined.
|
|
*
|
|
* @override
|
|
*/
|
|
goog.labs.testing.IsUndefinedMatcher.prototype.matches =
|
|
function(actualValue) {
|
|
return !goog.isDef(actualValue);
|
|
};
|
|
|
|
|
|
/**
|
|
* @override
|
|
*/
|
|
goog.labs.testing.IsUndefinedMatcher.prototype.describe =
|
|
function(actualValue) {
|
|
return actualValue + ' is not undefined.';
|
|
};
|
|
|
|
|
|
/**
|
|
* Returns a matcher that matches objects that are equal to the input object.
|
|
* Equality in this case means the two objects are references to the same
|
|
* object.
|
|
*
|
|
* @param {!Object} object The expected object.
|
|
*
|
|
* @return {!goog.labs.testing.ObjectEqualsMatcher} A
|
|
* ObjectEqualsMatcher.
|
|
*/
|
|
function equalsObject(object) {
|
|
return new goog.labs.testing.ObjectEqualsMatcher(object);
|
|
}
|
|
|
|
|
|
/**
|
|
* Returns a matcher that matches objects that contain the input property.
|
|
*
|
|
* @param {string} property The property name to check.
|
|
*
|
|
* @return {!goog.labs.testing.HasPropertyMatcher} A HasPropertyMatcher.
|
|
*/
|
|
function hasProperty(property) {
|
|
return new goog.labs.testing.HasPropertyMatcher(property);
|
|
}
|
|
|
|
|
|
/**
|
|
* Returns a matcher that matches instances of the input class.
|
|
*
|
|
* @param {!Object} object The class object.
|
|
*
|
|
* @return {!goog.labs.testing.InstanceOfMatcher} A
|
|
* InstanceOfMatcher.
|
|
*/
|
|
function instanceOfClass(object) {
|
|
return new goog.labs.testing.InstanceOfMatcher(object);
|
|
}
|
|
|
|
|
|
/**
|
|
* Returns a matcher that matches all null values.
|
|
*
|
|
* @return {!goog.labs.testing.IsNullMatcher} A IsNullMatcher.
|
|
*/
|
|
function isNull() {
|
|
return new goog.labs.testing.IsNullMatcher();
|
|
}
|
|
|
|
|
|
/**
|
|
* Returns a matcher that matches all null and undefined values.
|
|
*
|
|
* @return {!goog.labs.testing.IsNullOrUndefinedMatcher} A
|
|
* IsNullOrUndefinedMatcher.
|
|
*/
|
|
function isNullOrUndefined() {
|
|
return new goog.labs.testing.IsNullOrUndefinedMatcher();
|
|
}
|
|
|
|
|
|
/**
|
|
* Returns a matcher that matches undefined values.
|
|
*
|
|
* @return {!goog.labs.testing.IsUndefinedMatcher} A IsUndefinedMatcher.
|
|
*/
|
|
function isUndefined() {
|
|
return new goog.labs.testing.IsUndefinedMatcher();
|
|
}
|