Chromium Code Reviews| Index: chrome/browser/resources/chromeos/chromevox/cvox2/background/cursors_test.extjs |
| diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/cursors_test.extjs b/chrome/browser/resources/chromeos/chromevox/cvox2/background/cursors_test.extjs |
| index bc66b563a48f02c31e1dd5fe2b38b530b310a43b..54312182c8addef3ac27f398e4b29e45ea91c018 100644 |
| --- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/cursors_test.extjs |
| +++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/cursors_test.extjs |
| @@ -15,6 +15,12 @@ function CursorsTest() {} |
| CursorsTest.prototype = { |
| __proto__: ChromeVoxNextE2ETest.prototype, |
| + /** Test cursors.Cursor. @const {string} */ |
| + CURSOR: 'cursor', |
| + |
| +/** Test cursors.Range. @const {string} */ |
|
dmazzoni
2014/10/24 16:13:30
nit: indent
|
| + RANGE: 'range', |
| + |
| /** @override */ |
| setUp: function() { |
| // Various aliases. |
| @@ -38,107 +44,227 @@ CursorsTest.prototype = { |
| * moves An array of arrays. Each inner array contains 4 items: unit, |
| * movement, direction, and assertions object. See example below. |
| */ |
| - moveAndAssert: function(cursor, moves) { |
| + cursorMoveAndAssert: function(cursor, moves) { |
| var move = null; |
| while (move = moves.shift()) { |
| - cursor.move(move[0], move[1], move[2]); |
| + cursor = cursor.move(move[0], move[1], move[2]); |
| var expected = move[3]; |
| - if (expected.index) |
| - assertEquals(expected.index, cursor.index); |
| - if (expected.value) |
| - assertEquals(expected.value, cursor.node.attributes.value); |
| + this.makeCursorAssertion(expected, cursor); |
| } |
| - } |
| -}; |
| + }, |
| -/** Tests basic text movement. */ |
| -TEST_F('CursorsTest', 'BasicMovement', function() { |
| - this.runWithDocument(function() {/*! |
| + /** |
| + * Performs a series of operations on a range and asserts the result. |
| + * @param {cursors.Range} range The starting range. |
| + * @param {!Array.<Array.< |
| + * cursors.Unit| |
|
dmazzoni
2014/10/24 16:13:30
funny indentation?
|
| + * cursors.Movement| |
| + * automationUtil.Dir| |
| + * Object>>} |
| + * moves An array of arrays. Each inner array contains 4 items: unit, |
| + * direction, start and end assertions objects. See example below. |
| + */ |
| + rangeMoveAndAssert: function(range, moves) { |
| + var move = null; |
| + while (move = moves.shift()) { |
| + range = range.move(move[0], move[1]); |
| + var expectedStart = move[2]; |
| + var expectedEnd = move[3]; |
| + this.makeCursorAssertion(expectedStart, range.getStart()); |
| + this.makeCursorAssertion(expectedEnd, range.getEnd()); |
| + } |
| + }, |
| + |
| + /** |
| + * Makes assertions about the given |cursor|. |
| + * @param {Object} expected |
| + * @param {Cursor} cursor |
| + */ |
| + makeCursorAssertion: function(expected, cursor) { |
| + if (goog.isDef(expected.index)) |
| + assertEquals(expected.index, cursor.getIndex()); |
| + if (goog.isDef(expected.value)) |
| + assertEquals(expected.value, cursor.getNode().attributes.value); |
| + }, |
| + |
| + /** |
| + * Runs the specified moves on the |doc| and asserts expectations. |
| + * @param {function} doc |
| + * @param {string=} opt_testType Either CURSOR or RANGE. |
| + */ |
| + runCursorMovesOnDocument: function(doc, moves, opt_testType) { |
| + this.runWithDocument(doc, |
| + function() { |
| + chrome.automation.getTree(function(root) { |
| + var start = null; |
| + |
| + // This occurs as a result of a load complete. |
| + var start = AutomationUtil.findNodePost(root, |
| + FORWARD, |
| + AutomationPredicate.leaf); |
| + |
| + var cursor = new cursors.Cursor(start, 0); |
| + if (!opt_testType || opt_testType == this.CURSOR) { |
| + var cursor = new cursors.Cursor(start, 0); |
| + this.cursorMoveAndAssert(cursor, moves); |
| + testDone(); |
| + } else if (opt_testType == this.RANGE) { |
| + var range = new cursors.Range(cursor, cursor); |
| + this.rangeMoveAndAssert(range, moves); |
| + testDone(); |
| + } |
| + }.bind(this)); |
| + }.bind(this)); |
| + }, |
| + |
| +simpleDoc: function() {/*! |
| <p>start <span>same line</span> |
| <p>end |
| - */}, |
| - function() { |
| - chrome.automation.getTree(function(root) { |
| - // This occurs as a result of a load complete. |
| - var leftmost = AutomationUtil.findNodePost(root, |
| - FORWARD, |
| - AutomationPredicate.leaf); |
| - assertEquals('start ', leftmost.attributes.value); |
| - |
| - // Construct a cursor and make all possible movements. |
| - var cursor = new cursors.Cursor(leftmost, 0); |
| - |
| - this.moveAndAssert(cursor, [ |
| - // Line (BOUND). |
| - [LINE, BOUND, FORWARD, {value: 'same line'}], |
| - [LINE, BOUND, FORWARD, {value: 'same line'}], |
| - [LINE, BOUND, BACKWARD, {value: 'start '}], |
| - [LINE, BOUND, BACKWARD, {value: 'start '}], |
| - |
| - // Line (DIRECTIONAL). |
| - [LINE, DIRECTIONAL, FORWARD, {value: 'end'}], |
| - [LINE, DIRECTIONAL, FORWARD, {value: 'end'}], |
| - [LINE, DIRECTIONAL, BACKWARD, {value: 'start '}], |
| - [LINE, DIRECTIONAL, BACKWARD, {value: 'start '}], |
| - [LINE, BOUND, FORWARD, {value: 'same line'}], |
| - [LINE, DIRECTIONAL, FORWARD, {value: 'end'}], |
| - |
| - // Character. |
| - [CHARACTER, DIRECTIONAL, FORWARD, {index: 1}], |
| - [CHARACTER, DIRECTIONAL, FORWARD, {index: 2}], |
| - [CHARACTER, DIRECTIONAL, FORWARD, {index: 2}], |
| - [CHARACTER, DIRECTIONAL, BACKWARD, {index: 1}], |
| - [CHARACTER, DIRECTIONAL, BACKWARD, {index: 0}], |
| - |
| - [CHARACTER, DIRECTIONAL, BACKWARD, {index: 8, value: 'same line'}], |
| - [CHARACTER, DIRECTIONAL, FORWARD, {index: 0, value: 'end'}], |
| - [CHARACTER, DIRECTIONAL, BACKWARD, {index: 8, value: 'same line'}], |
| - |
| - [CHARACTER, DIRECTIONAL, BACKWARD, {index: 7, value: 'same line'}], |
| - [CHARACTER, DIRECTIONAL, BACKWARD, {index: 6, value: 'same line'}], |
| - [CHARACTER, DIRECTIONAL, BACKWARD, {index: 5, value: 'same line'}], |
| - [CHARACTER, DIRECTIONAL, BACKWARD, {index: 4, value: 'same line'}], |
| - [CHARACTER, DIRECTIONAL, BACKWARD, {index: 3, value: 'same line'}], |
| - [CHARACTER, DIRECTIONAL, BACKWARD, {index: 2, value: 'same line'}], |
| - [CHARACTER, DIRECTIONAL, BACKWARD, {index: 0, value: 'same line'}], |
| - [CHARACTER, DIRECTIONAL, BACKWARD, {index: 0, value: 'same line'}], |
| - [CHARACTER, DIRECTIONAL, BACKWARD, {index: 5, value: 'start '}], |
| - |
| - // Word (BOUND). |
| - [WORD, BOUND, BACKWARD, {index: 0, value: 'start '}], |
| - [WORD, BOUND, BACKWARD, {index: 0, value: 'start '}], |
| - [WORD, BOUND, FORWARD, {index: 5, value: 'start '}], |
| - [WORD, BOUND, FORWARD, {index: 5, value: 'start '}], |
| - |
| - // Word (DIRECTIONAL). |
| - [WORD, DIRECTIONAL, FORWARD, {index: 0, value: 'same line'}], |
| - [WORD, DIRECTIONAL, FORWARD, {index: 5, value: 'same line'}], |
| - |
| - [WORD, DIRECTIONAL, FORWARD, {index: 0, value: 'end'}], |
| - [WORD, DIRECTIONAL, FORWARD, {index: 0, value: 'end'}], |
| - |
| - [WORD, DIRECTIONAL, BACKWARD, {index: 5, value: 'same line'}], |
| - [WORD, DIRECTIONAL, BACKWARD, {index: 0, value: 'same line'}], |
| - |
| - [WORD, DIRECTIONAL, BACKWARD, {index: 0, value: 'start '}], |
| - [WORD, DIRECTIONAL, BACKWARD, {index: 0, value: 'start '}], |
| - |
| - // Characters and words. |
| - [CHARACTER, DIRECTIONAL, FORWARD, {index: 1, value: 'start '}], |
| - |
| - [WORD, DIRECTIONAL, FORWARD, {index: 0, value: 'same line'}], |
| - [CHARACTER, DIRECTIONAL, FORWARD, {index: 1, value: 'same line'}], |
| - [WORD, DIRECTIONAL, FORWARD, {index: 5, value: 'same line'}], |
| - [CHARACTER, DIRECTIONAL, BACKWARD, {index: 4, value: 'same line'}], |
| - [WORD, DIRECTIONAL, FORWARD, {index: 5, value: 'same line'}], |
| - [CHARACTER, DIRECTIONAL, FORWARD, {index: 6, value: 'same line'}], |
| - [WORD, DIRECTIONAL, BACKWARD, {index: 0, value: 'same line'}], |
| - [CHARACTER, DIRECTIONAL, BACKWARD, {index: 5, value: 'start '}], |
| - [CHARACTER, DIRECTIONAL, BACKWARD, {index: 4, value: 'start '}], |
| - [WORD, DIRECTIONAL, BACKWARD, {index: 0, value: 'start '}], |
| -]); |
| - |
| - testDone(); |
| - }.bind(this)); |
| - }.bind(this)); |
| + */} |
| +}; |
| + |
| +TEST_F('CursorsTest', 'CharacterCursor', function() { |
| + this.runCursorMovesOnDocument(this.simpleDoc, [ |
| + [CHARACTER, DIRECTIONAL, FORWARD, {index: 1, value: 'start '}], |
| + [CHARACTER, DIRECTIONAL, BACKWARD, {index: 0, value: 'start '}], |
| + [CHARACTER, DIRECTIONAL, BACKWARD, {index: 0, value: 'start '}], |
| + |
| + [CHARACTER, DIRECTIONAL, FORWARD, {index: 1, value: 'start '}], |
| + [CHARACTER, DIRECTIONAL, FORWARD, {index: 2, value: 'start '}], |
| + [CHARACTER, DIRECTIONAL, FORWARD, {index: 3, value: 'start '}], |
| + [CHARACTER, DIRECTIONAL, FORWARD, {index: 4, value: 'start '}], |
| + [CHARACTER, DIRECTIONAL, FORWARD, {index: 5, value: 'start '}], |
| + |
| + [CHARACTER, DIRECTIONAL, FORWARD, {index: 0, value: 'same line'}], |
| + [CHARACTER, DIRECTIONAL, FORWARD, {index: 1, value: 'same line'}], |
| + [CHARACTER, DIRECTIONAL, BACKWARD, {index: 0, value: 'same line'}], |
| + |
| + [CHARACTER, DIRECTIONAL, BACKWARD, {index: 5, value: 'start '}],]); |
| +}); |
| + |
| +TEST_F('CursorsTest', 'WordCursor', function() { |
| + this.runCursorMovesOnDocument(this.simpleDoc, [ |
| + // Word (BOUND). |
| + [WORD, BOUND, BACKWARD, {index: 0, value: 'start '}], |
| + [WORD, BOUND, BACKWARD, {index: 0, value: 'start '}], |
| + [WORD, BOUND, FORWARD, {index: 5, value: 'start '}], |
| + [WORD, BOUND, FORWARD, {index: 5, value: 'start '}], |
| + |
| + // Word (DIRECTIONAL). |
| + [WORD, DIRECTIONAL, FORWARD, {index: 0, value: 'same line'}], |
| + [WORD, DIRECTIONAL, FORWARD, {index: 5, value: 'same line'}], |
| + |
| + [WORD, DIRECTIONAL, FORWARD, {index: 0, value: 'end'}], |
| + [WORD, DIRECTIONAL, FORWARD, {index: 0, value: 'end'}], |
| + |
| + [WORD, DIRECTIONAL, BACKWARD, {index: 5, value: 'same line'}], |
| + [WORD, DIRECTIONAL, BACKWARD, {index: 0, value: 'same line'}], |
| + |
| + [WORD, DIRECTIONAL, BACKWARD, {index: 0, value: 'start '}], |
| + [WORD, DIRECTIONAL, BACKWARD, {index: 0, value: 'start '}]]); |
| +}); |
| + |
| +TEST_F('CursorsTest', 'CharacterWordCursor', function() { |
| + this.runCursorMovesOnDocument(this.simpleDoc, [ |
| + [CHARACTER, DIRECTIONAL, FORWARD, {index: 1, value: 'start '}], |
| + |
| + [WORD, DIRECTIONAL, FORWARD, {index: 0, value: 'same line'}], |
| + [CHARACTER, DIRECTIONAL, FORWARD, {index: 1, value: 'same line'}], |
| + [WORD, DIRECTIONAL, FORWARD, {index: 5, value: 'same line'}], |
| + [CHARACTER, DIRECTIONAL, BACKWARD, {index: 4, value: 'same line'}], |
| + [WORD, DIRECTIONAL, FORWARD, {index: 5, value: 'same line'}], |
| + [CHARACTER, DIRECTIONAL, FORWARD, {index: 6, value: 'same line'}], |
| + [WORD, DIRECTIONAL, BACKWARD, {index: 0, value: 'same line'}], |
| + [CHARACTER, DIRECTIONAL, BACKWARD, {index: 5, value: 'start '}], |
| + [CHARACTER, DIRECTIONAL, BACKWARD, {index: 4, value: 'start '}], |
| + [WORD, DIRECTIONAL, BACKWARD, {index: 0, value: 'start '}]]); |
| +}); |
| + |
| +TEST_F('CursorsTest', 'LineCursor', function() { |
| + this.runCursorMovesOnDocument(this.simpleDoc, [ |
| + // Line (BOUND). |
| + [LINE, BOUND, FORWARD, {value: 'same line'}], |
| + [LINE, BOUND, FORWARD, {value: 'same line'}], |
| + [LINE, BOUND, BACKWARD, {value: 'start '}], |
| + [LINE, BOUND, BACKWARD, {value: 'start '}], |
| + |
| + // Line (DIRECTIONAL). |
| + [LINE, DIRECTIONAL, FORWARD, {value: 'end'}], |
| + [LINE, DIRECTIONAL, FORWARD, {value: 'end'}], |
| + [LINE, DIRECTIONAL, BACKWARD, {value: 'start '}], |
| + [LINE, DIRECTIONAL, BACKWARD, {value: 'start '}], |
| + [LINE, BOUND, FORWARD, {value: 'same line'}], |
| + [LINE, DIRECTIONAL, FORWARD, {value: 'end'}]]); |
| +}); |
| + |
| +TEST_F('CursorsTest', 'CharacterRange', function() { |
| + this.runCursorMovesOnDocument(this.simpleDoc, [ |
| + [CHARACTER, FORWARD, |
| + {value: 'start ', index: 1}, {value: 'start ', index: 2}], |
| + [CHARACTER, FORWARD, |
| + {value: 'start ', index: 2}, {value: 'start ', index: 3}], |
| + [CHARACTER, FORWARD, |
| + {value: 'start ', index: 3}, {value: 'start ', index: 4}], |
| + [CHARACTER, FORWARD, |
| + {value: 'start ', index: 4}, {value: 'start ', index: 5}], |
| + [CHARACTER, FORWARD, |
| + {value: 'start ', index: 5}, {value: 'start ', index: 5}], |
| + |
| + [CHARACTER, FORWARD, |
| + {value: 'same line', index: 0}, {value: 'same line', index: 1}], |
| + |
| + [CHARACTER, BACKWARD, |
| + {value: 'start ', index: 5}, {value: 'start ', index: 5}], |
| + [CHARACTER, BACKWARD, |
| + {value: 'start ', index: 4}, {value: 'start ', index: 5}], |
| + [CHARACTER, BACKWARD, |
| + {value: 'start ', index: 3}, {value: 'start ', index: 4}], |
| + [CHARACTER, BACKWARD, |
| + {value: 'start ', index: 2}, {value: 'start ', index: 3}], |
| + [CHARACTER, BACKWARD, |
| + {value: 'start ', index: 1}, {value: 'start ', index: 2}], |
| + [CHARACTER, BACKWARD, |
| + {value: 'start ', index: 0}, {value: 'start ', index: 1}], |
| + [CHARACTER, BACKWARD, |
| + {value: 'start ', index: 0}, {value: 'start ', index: 1}], |
| + ], this.RANGE); |
| +}); |
| + |
| +TEST_F('CursorsTest', 'WordRange', function() { |
| + this.runCursorMovesOnDocument(this.simpleDoc, [ |
| + [WORD, FORWARD, |
| + {value: 'same line', index: 0}, {value: 'same line', index: 4}], |
| + [WORD, FORWARD, |
| + {value: 'same line', index: 5}, {value: 'same line', index: 9}], |
| + |
| + [WORD, FORWARD, |
| + {value: 'end', index: 0}, {value: 'end', index: 3}], |
| + [WORD, FORWARD, |
| + {value: 'end', index: 0}, {value: 'end', index: 3}], |
| + |
| + [WORD, BACKWARD, |
| + {value: 'same line', index: 5}, {value: 'same line', index: 9}], |
| + [WORD, BACKWARD, |
| + {value: 'same line', index: 0}, {value: 'same line', index: 4}], |
| + |
| + [WORD, BACKWARD, |
| + {value: 'start ', index: 0}, {value: 'start ', index: 5}], |
| + [WORD, BACKWARD, |
| + {value: 'start ', index: 0}, {value: 'start ', index: 5}], |
| + ], this.RANGE); |
| +}); |
| + |
| + |
| +TEST_F('CursorsTest', 'LineRange', function() { |
| + this.runCursorMovesOnDocument(this.simpleDoc, [ |
| + [LINE, FORWARD, {value: 'end', index: 0}, {value: 'end', index: 2}], |
| + [LINE, FORWARD, {value: 'end', index: 0}, {value: 'end', index: 2}], |
| + |
| + [LINE, BACKWARD, |
| + {value: 'start ', index: 0}, {value: 'same line', index: 8}], |
| + |
| + [LINE, BACKWARD, |
| + {value: 'start ', index: 0}, {value: 'same line', index: 8}], |
| + ], this.RANGE); |
| }); |
| + |