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); |
}); |
+ |