Index: chrome/test/data/webui/test_api.js |
diff --git a/chrome/test/data/webui/test_api.js b/chrome/test/data/webui/test_api.js |
index 721f8d27d9fc1149fd363a9e49b87baf0e326d81..fcf79d15141336a26703e2f8fcb52d77ce83fbb4 100644 |
--- a/chrome/test/data/webui/test_api.js |
+++ b/chrome/test/data/webui/test_api.js |
@@ -1585,6 +1585,64 @@ var testing = {}; |
Array.prototype.slice.call(arguments, 1)); |
} |
+ /** |
+ * Syntactic sugar for use with will() on a Mock4JS.Mock. |
+ * Creates an action for will() that invokes a callback that the tested code |
+ * passes to a mocked function. |
+ * @param {SaveMockArguments} savedArgs Arguments that will contain the |
+ * callback once the mocked function is called. |
+ * @param {number} callbackParameter Index of the callback parameter in |
+ * |savedArgs|. |
+ * @param {...Object} var_args Arguments to pass to the callback. |
+ * @return {CallFunctionAction} Action for use in will(). |
+ */ |
+ function invokeCallback(savedArgs, callbackParameter, var_args) { |
+ var callbackArguments = Array.prototype.slice.call(arguments, 2); |
+ return callFunction(function() { |
+ savedArgs.arguments[callbackParameter].apply(null, callbackArguments); |
+ }); |
+ } |
+ |
+ /** |
+ * Mock4JS matcher object that matches the actual agrument and the expected |
+ * value iff their JSON represenations are same. |
+ * @param {Object} expectedValue Expected value. |
+ * @constructor |
+ */ |
+ function MatchJSON(expectedValue) { |
+ this.expectedValue_ = expectedValue; |
+ } |
+ |
+ MatchJSON.prototype = { |
+ /** |
+ * Checks that JSON represenation of the actual and expected arguments are |
+ * same. |
+ * @param {Object} actualArgument The argument to match. |
+ * @return {boolean} Result of the comparison. |
+ */ |
+ argumentMatches: function(actualArgument) { |
+ return JSON.stringify(this.expectedValue_) === |
+ JSON.stringify(actualArgument); |
+ }, |
+ |
+ /** |
+ * Describes the matcher. |
+ * @return {string} Description of this Mock4JS matcher. |
+ */ |
+ describe: function() { |
+ return 'eqJSON(' + JSON.stringify(this.expectedValue_) + ')'; |
+ }, |
+ }; |
+ |
+ /** |
+ * Builds a MatchJSON agrument matcher for a given expected value. |
+ * @param {Object} expectedValue Expected value. |
+ * @return {MatchJSON} Resulting Mock4JS matcher. |
+ */ |
+ function eqJSON(expectedValue) { |
+ return new MatchJSON(expectedValue); |
+ } |
+ |
// Exports. |
testing.Test = Test; |
exports.testDone = testDone; |
@@ -1601,6 +1659,7 @@ var testing = {}; |
exports.callFunction = callFunction; |
exports.callFunctionWithSavedArgs = callFunctionWithSavedArgs; |
exports.callGlobalWithSavedArgs = callGlobalWithSavedArgs; |
+ exports.eqJSON = eqJSON; |
exports.expectTrue = createExpect(assertTrue); |
exports.expectFalse = createExpect(assertFalse); |
exports.expectGE = createExpect(assertGE); |
@@ -1611,6 +1670,7 @@ var testing = {}; |
exports.expectNotEquals = createExpect(assertNotEquals); |
exports.expectNotReached = createExpect(assertNotReached); |
exports.expectAccessibilityOk = createExpect(assertAccessibilityOk); |
+ exports.invokeCallback = invokeCallback; |
exports.preloadJavascriptLibraries = preloadJavascriptLibraries; |
exports.registerMessageCallback = registerMessageCallback; |
exports.registerMockGlobals = registerMockGlobals; |