Chromium Code Reviews| Index: chrome/browser/resources/chromeos/chromevox/testing/chromevox_unittest_base.js |
| diff --git a/chrome/browser/resources/chromeos/chromevox/testing/chromevox_unittest_base.js b/chrome/browser/resources/chromeos/chromevox/testing/chromevox_unittest_base.js |
| index 7030b1969578c7c836a256645258d5d4e5288fca..d2cb82a937563ebe2573ad17cc3a4b885901cc14 100644 |
| --- a/chrome/browser/resources/chromeos/chromevox/testing/chromevox_unittest_base.js |
| +++ b/chrome/browser/resources/chromeos/chromevox/testing/chromevox_unittest_base.js |
| @@ -12,6 +12,71 @@ function $(id) { |
| } |
| /** |
| + * Asserts that a given argument's value is undefined. |
| + * @param {object} a The argument to check. |
| + */ |
| +function assertUndefined(a) { |
| + if (a !== undefined) { |
| + throw new Error('Assertion failed: expected undefined'); |
| + } |
| +} |
| + |
| +/** |
| + * Asserts that a given function call raises an exception. |
| + * @param {string} error The name of the exception we expect to throw. |
| + * @param {Function} fn The function to call. |
| + */ |
| +function assertException(error, fn) { |
| + try { |
| + fn(); |
| + } catch (e) { |
| + if (error && e.name != error) { |
| + throw new Error('Expected to throw ' + error + ' but threw ' + e.name); |
| + } |
| + |
| + return true; |
| + } |
| + |
| + throw new Error('Expected to throw exception'); |
| +} |
| + |
| +/** |
| + * Assert that two arrays of strings are equal. |
|
Peter Lundblad
2014/06/06 17:33:02
s/Assert/Asserts/
dmazzoni
2014/06/06 18:05:11
Done.
|
| + * @param {Array.<string>} array1 The expected array. |
| + * @param {Array.<string>} array2 The test array. |
| + */ |
| +function assertEqualStringArrays(array1, array2) { |
| + var same = true; |
| + if (array1.length != array2.length) { |
| + same = false; |
| + } |
| + for (var i = 0; i < Math.min(array1.length, array2.length); i++) { |
| + if (array1[i].trim() != array2[i].trim()) { |
| + same = false; |
| + } |
| + } |
| + if (!same) { |
| + throw new Error('Expected ' + JSON.stringify(array1) + |
| + ', got ' + JSON.stringify(array2)); |
| + } |
| +} |
| + |
| +/** |
| + * Assert that two objects have the same JSON serialization. |
|
Peter Lundblad
2014/06/06 17:33:03
s/Assert/Asserts/
dmazzoni
2014/06/06 18:05:11
Done.
|
| + * @param {Object} obj1 The expected object. |
| + * @param {Object} obj2 The actual object. |
| + */ |
| +function assertEqualsJSON(obj1, obj2) { |
| + if (!eqJSON(obj1, obj2)) { |
| + throw new Error('Expected ' + JSON.stringify(obj1) + |
| + ', got ' + JSON.stringify(obj2)); |
| + } |
| +} |
| + |
| +assertSame = assertEquals; |
| +assertNotSame = assertNotEquals; |
| + |
| +/** |
| * Base test fixture for ChromeVox unit tests. |
| * |
| * Note that while conceptually these are unit tests, these tests need |
| @@ -30,9 +95,26 @@ ChromeVoxUnitTestBase.prototype = { |
| browsePreload: DUMMY_URL, |
| /** |
| + * @override |
| + * It doesn't make sense to run the accessibility audit on these tests, |
| + * since many of them are deliberately testing inaccessible html. |
| + */ |
| + runAccessibilityChecks: false, |
| + |
| + /** |
| * Loads some inlined html into the current document, replacing |
| - * whatever was there previously. To use it, call it with the html |
| - * inside an inline comment, like this: |
| + * whatever was there previously. |
|
Peter Lundblad
2014/06/06 17:33:03
Document the argument.
dmazzoni
2014/06/06 18:05:11
Done.
|
| + */ |
| + loadHtml: function(html) { |
| + document.open(); |
| + document.write(html); |
| + document.close(); |
| + }, |
| + |
| + /** |
| + * Loads some inlined html into the current document, replacing |
| + * whatever was there previously. This version takes the html |
| + * encoded as a comment inside a function, so you can use it like this: |
| * |
| * this.loadDoc(function() {/*! |
| * <p>Html goes here</p> |
| @@ -42,8 +124,6 @@ ChromeVoxUnitTestBase.prototype = { |
| var html = commentEncodedHtml.toString(). |
| replace(/^[^\/]+\/\*!?/, ''). |
| replace(/\*\/[^\/]+$/, ''); |
| - document.open(); |
| - document.write(html); |
| - document.close(); |
| + this.loadHtml(html); |
| } |
| }; |