Index: chrome/browser/resources/google_now/background_test_util.js |
diff --git a/chrome/browser/resources/google_now/background_test_util.js b/chrome/browser/resources/google_now/background_test_util.js |
index f59c34ed15c2f8198e9bc28ee0d921ddce174f23..dca512e4e4cd5957e8c7ba3f6b397bc91acbfaad 100644 |
--- a/chrome/browser/resources/google_now/background_test_util.js |
+++ b/chrome/browser/resources/google_now/background_test_util.js |
@@ -22,4 +22,63 @@ chrome['runtime'] = { |
onInstalled: emptyListener, |
onStartup: emptyListener |
}; |
+ |
var storage = {}; |
+ |
+/** |
+ * 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); |
+} |