| 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..7c0b3ac5eb746a5f0693046663fafabf22fcf53e 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,72 @@ 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.
|
| + * @return {boolean} True if it throws the exception.
|
| + */
|
| +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');
|
| +}
|
| +
|
| +/**
|
| + * Asserts that two arrays of strings are equal.
|
| + * @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));
|
| + }
|
| +}
|
| +
|
| +/**
|
| + * Asserts that two objects have the same JSON serialization.
|
| + * @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,20 +96,39 @@ 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.
|
| + * @param {string} html The html to load as a string.
|
| + */
|
| + 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>
|
| * * /});
|
| + *
|
| + * @param {Function} commentEncodedHtml The html to load, embedded as a
|
| + * comment inside an anonymous function - see example, above.
|
| */
|
| loadDoc: function(commentEncodedHtml) {
|
| var html = commentEncodedHtml.toString().
|
| replace(/^[^\/]+\/\*!?/, '').
|
| replace(/\*\/[^\/]+$/, '');
|
| - document.open();
|
| - document.write(html);
|
| - document.close();
|
| + this.loadHtml(html);
|
| }
|
| };
|
|
|