Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(784)

Unified Diff: chrome/browser/resources/chromeos/chromevox/common/editable_text_test.js

Issue 541403002: Rename ChromeVox tests and utilities for consistency. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkcr
Patch Set: Clarify comment in .gypi file. Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/chromeos/chromevox/common/editable_text_test.js
diff --git a/chrome/browser/resources/chromeos/chromevox/common/editable_text_test.js b/chrome/browser/resources/chromeos/chromevox/common/editable_text_test.js
deleted file mode 100644
index 6da825d316376ee216fd494a1e0c42d099a95348..0000000000000000000000000000000000000000
--- a/chrome/browser/resources/chromeos/chromevox/common/editable_text_test.js
+++ /dev/null
@@ -1,670 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Include test fixture.
-GEN_INCLUDE(['../testing/chromevox_unittest_base.js']);
-
-/**
- * A TTS class implementing speak and stop methods intended only for testing.
- * @constructor
- * @implements cvox.TtsInterface
- */
-function TestTts() {
- this.strings = [];
-}
-
-/**
- * The strings that were spoken since the last call to get().
- * @type {Array.<string>}
- */
-TestTts.prototype.strings;
-
-/**
- * Returns the list of strings spoken since the last time this method was
- * called, and then clears the list.
- * @return {Array.<string>} The list of strings.
- */
-TestTts.prototype.get = function() {
- var result = this.strings;
- this.strings = [];
- return result;
-};
-
-/** @override */
-TestTts.prototype.speak = function(text, queueMode, properties) {
- this.strings.push(text);
-};
-
-/** @override */
-TestTts.prototype.isSpeaking = function() {
- return false;
-};
-
-/** @override */
-TestTts.prototype.stop = function() {
- // Do nothing.
-};
-
-/** @override */
-TestTts.prototype.increaseOrDecreaseProperty =
- function(propertyName, increase) {
- // Do nothing.
-};
-
-/**
- * Stores the last braille content.
- * @constructor
- * @implements cvox.BrailleInterface
- */
-function TestBraille() {
- this.content = null;
-}
-
-/** @override */
-TestBraille.prototype.write = function(params) {
- this.content = params;
-};
-
-/**
- * Asserts the current braille content.
- *
- * @param {string} text Braille text.
- * @param {number=} opt_start Selection start.
- * @param {number=} opt_end Selection end.
- */
-TestBraille.assertContent = function(text, opt_start, opt_end) {
- var c = cvox.ChromeVox.braille.content;
- assertTrue(c != null);
- opt_start = opt_start !== undefined ? opt_start : -1;
- opt_end = opt_end !== undefined ? opt_end : opt_start;
- assertEquals(text, c.text.toString());
- assertEquals(opt_start, c.startIndex);
- assertEquals(opt_end, c.endIndex);
-};
-
-/**
- * Test fixture.
- * @constructor
- * @extends {ChromeVoxUnitTestBase}
- */
-function CvoxEditableTextUnitTest() {}
-
-CvoxEditableTextUnitTest.prototype = {
- __proto__: ChromeVoxUnitTestBase.prototype,
-
- /** @override */
- closureModuleDeps: [
- 'cvox.ChromeVoxEditableHTMLInput',
- 'cvox.ChromeVoxEditableTextBase',
- 'cvox.ChromeVoxEventWatcher',
- 'cvox.TextChangeEvent',
- 'cvox.TtsInterface',
- 'cvox.TypingEcho',
- ],
-
- /** @override */
- setUp: function() {
- // TODO: These tests are all assuming we used the IBeam cursor.
- // We need to add coverage for block cursor.
- cvox.ChromeVoxEditableTextBase.useIBeamCursor = true;
- cvox.ChromeVox.typingEcho = cvox.TypingEcho.CHARACTER_AND_WORD;
- cvox.ChromeVoxEditableTextBase.eventTypingEcho = false;
- cvox.ChromeVox.braille = new TestBraille();
-
- /** Simple mock. */
- cvox.ChromeVox.msgs = {};
-
- /**
- * Simply return the message id.
- * @param {string} msg Message id.
- * @return {string} Message id.
- */
- cvox.ChromeVox.msgs.getMsg = function(msg) {
- return msg;
- };
- },
-
- /**
- * Sets up for a cursor movement test.
- * @param {string} tagName Desired tag name, "input" or "textarea".
- * @return {Object} object containing the editable element, and functions
- * to prepare, run the test, and tear down.
- * @private
- */
- setUpForCursorTest_: function(tagName) {
- var element, editable;
- switch (tagName) {
- case 'input':
- element = document.createElement('input');
- editable = new cvox.ChromeVoxEditableHTMLInput(element, new TestTts());
- break;
- case 'textarea':
- element = document.createElement('textarea');
- editable = new cvox.ChromeVoxEditableTextArea(element, new TestTts());
- break;
- default:
- throw 'invalid tagName in setUpForCursorTest_';
- }
- document.body.appendChild(element);
- element.focus();
-
- var expect = function(str) {
- assertEquals(element.selectionStart, element.selectionEnd);
- assertEquals(str, element.value.substring(0, element.selectionStart) +
- '|' + element.value.substring(element.selectionEnd));
- };
- return {
- editable: editable,
- expect: expect,
- prepare: function(str) {
- var position = str.indexOf('|');
- var value = str.substring(0, position) + str.substring(position + 1);
- element.value = value;
- element.selectionStart = element.selectionEnd = position;
- editable.update(true /* triggeredByUser */);
- expect(str);
- },
- tearDown: function() {
- document.body.removeChild(element);
- }
- };
- }
-};
-
-TEST_F('CvoxEditableTextUnitTest', 'CursorNavigation', function() {
- var tts = new TestTts();
- var obj = new cvox.ChromeVoxEditableTextBase('Hello', 0, 0, false, tts);
-
- obj.changed(new cvox.TextChangeEvent('Hello', 1, 1));
- obj.changed(new cvox.TextChangeEvent('Hello', 2, 2));
- obj.changed(new cvox.TextChangeEvent('Hello', 3, 3));
- obj.changed(new cvox.TextChangeEvent('Hello', 4, 4));
- obj.changed(new cvox.TextChangeEvent('Hello', 5, 5));
- obj.changed(new cvox.TextChangeEvent('Hello', 4, 4));
- obj.changed(new cvox.TextChangeEvent('Hello', 3, 3));
- assertEqualStringArrays(['H', 'e', 'l', 'l', 'o',
- 'o', 'l'], tts.get());
- obj.changed(new cvox.TextChangeEvent('Hello', 0, 0));
- obj.changed(new cvox.TextChangeEvent('Hello', 5, 5));
- assertEqualStringArrays(['Hel', 'Hello'], tts.get());
-});
-
-/** Test typing words. */
-TEST_F('CvoxEditableTextUnitTest', 'TypingWords', function() {
- var tts = new TestTts();
- var obj = new cvox.ChromeVoxEditableTextBase('', 0, 0, false, tts);
- obj.changed(new cvox.TextChangeEvent('H', 1, 1));
- obj.changed(new cvox.TextChangeEvent('He', 2, 2));
- obj.changed(new cvox.TextChangeEvent('Hel', 3, 3));
- obj.changed(new cvox.TextChangeEvent('Hell', 4, 4));
- obj.changed(new cvox.TextChangeEvent('Hello', 5, 5));
- obj.changed(new cvox.TextChangeEvent('Hello,', 6, 6));
- obj.changed(new cvox.TextChangeEvent('Hello, ', 7, 7));
- obj.changed(new cvox.TextChangeEvent('Hello, W', 8, 8));
- obj.changed(new cvox.TextChangeEvent('Hello, Wo', 9, 9));
- obj.changed(new cvox.TextChangeEvent('Hello, Wor', 10, 10));
- obj.changed(new cvox.TextChangeEvent('Hello, Worl', 11, 11));
- obj.changed(new cvox.TextChangeEvent('Hello, World', 12, 12));
- obj.changed(new cvox.TextChangeEvent('Hello, World.', 13, 13));
- assertEqualStringArrays(['H', 'e', 'l', 'l', 'o', 'Hello,',
- ' ',
- 'W', 'o', 'r', 'l', 'd', 'World.'],
- tts.get());
-
- // Backspace
- obj.changed(new cvox.TextChangeEvent('Hello, World', 12, 12));
- obj.changed(new cvox.TextChangeEvent('Hello, Worl', 11, 11));
- obj.changed(new cvox.TextChangeEvent('Hello, Wor', 10, 10));
- assertEqualStringArrays(['.', 'd', 'l'], tts.get());
-
- // Forward-delete
- obj.changed(new cvox.TextChangeEvent('Hello, Wor', 9, 9));
- obj.changed(new cvox.TextChangeEvent('Hello, Wor', 8, 8));
- obj.changed(new cvox.TextChangeEvent('Hello, Wor', 7, 7));
- obj.changed(new cvox.TextChangeEvent('Hello, or', 7, 7));
- obj.changed(new cvox.TextChangeEvent('Hello, r', 7, 7));
- obj.changed(new cvox.TextChangeEvent('Hello, ', 7, 7));
- assertEqualStringArrays(['r', 'o', 'W', 'W', 'o', 'r'], tts.get());
-
- // Clear all
- obj.changed(new cvox.TextChangeEvent('', 0, 0));
- assertEqualStringArrays(['Hello, , deleted'], tts.get());
-
- // Paste / insert a whole word
- obj.changed(new cvox.TextChangeEvent('Hello', 5, 5));
- assertEqualStringArrays(['Hello'], tts.get());
- obj.changed(new cvox.TextChangeEvent('Hello, World', 12, 12));
- assertEqualStringArrays([', World'], tts.get());
-});
-
-/** Test selection. */
-TEST_F('CvoxEditableTextUnitTest', 'Selection', function() {
- var tts = new TestTts();
- var obj =
- new cvox.ChromeVoxEditableTextBase('Hello, world.', 0, 0, false, tts);
- obj.changed(new cvox.TextChangeEvent('Hello, world.', 0, 1));
- obj.changed(new cvox.TextChangeEvent('Hello, world.', 0, 2));
- obj.changed(new cvox.TextChangeEvent('Hello, world.', 0, 3));
- obj.changed(new cvox.TextChangeEvent('Hello, world.', 0, 4));
- obj.changed(new cvox.TextChangeEvent('Hello, world.', 0, 5));
- obj.changed(new cvox.TextChangeEvent('Hello, world.', 0, 6));
- assertEqualStringArrays(['H', 'selected',
- 'e', 'added_to_selection',
- 'l', 'added_to_selection',
- 'l', 'added_to_selection',
- 'o', 'added_to_selection',
- ',', 'added_to_selection'],
- tts.get());
- obj.changed(new cvox.TextChangeEvent('Hello, world.', 0, 12));
- assertEqualStringArrays([' world', 'added_to_selection'],
- tts.get());
- obj.changed(new cvox.TextChangeEvent('Hello, world.', 1, 12));
- assertEqualStringArrays(['H', 'removed_from_selection'],
- tts.get());
- obj.changed(new cvox.TextChangeEvent('Hello, world.', 2, 5));
- assertEqualStringArrays(['llo', 'selected'],
- tts.get());
- obj.changed(new cvox.TextChangeEvent('Hello, world.', 2, 2));
- assertEqualStringArrays(['Unselected'],
- tts.get());
-});
-
-
-/** Test multi-line text. */
-TEST_F('CvoxEditableTextUnitTest', 'MultiLineText', function() {
- var str = 'This string\nspans\nfive lines.\n \n';
- var tts = new TestTts();
- var obj = new cvox.ChromeVoxEditableTextBase(str, 0, 0, false, tts);
- obj.multiline = true;
- obj.getLineIndex = function(index) {
- if (index >= 33) {
- return 4;
- } else if (index >= 30) {
- return 3;
- } else if (index >= 18) {
- return 2;
- } else if (index >= 12) {
- return 1;
- } else {
- return 0;
- }
- };
- obj.getLineStart = function(index) {
- return [0, 12, 18, 30, 33][index];
- };
- obj.getLineEnd = function(index) {
- return [11, 17, 29, 32, 33][index];
- };
- assertEquals('This string', obj.getLine(0));
- obj.changed(new cvox.TextChangeEvent(str, 12, 12));
- assertEqualStringArrays(['spans'], tts.get());
- TestBraille.assertContent('spans', 0);
- obj.changed(new cvox.TextChangeEvent(str, 18, 18));
- assertEqualStringArrays(['five lines.'], tts.get());
- TestBraille.assertContent('five lines.', 0);
- obj.changed(new cvox.TextChangeEvent(str, 30, 30));
- assertEqualStringArrays(['text_box_whitespace'], tts.get());
- TestBraille.assertContent(' ', 0);
- obj.changed(new cvox.TextChangeEvent(str, 33, 33));
- assertEqualStringArrays(['text_box_blank'], tts.get());
- TestBraille.assertContent('', 0);
- obj.changed(new cvox.TextChangeEvent(str, 0, 1));
- assertEqualStringArrays(['T', 'selected'], tts.get());
- TestBraille.assertContent('This string', 0, 1);
- obj.changed(new cvox.TextChangeEvent(str, 0, 12));
- assertEqualStringArrays(['his string\n', 'added_to_selection'],
- tts.get());
- // Newline stripped, thus 11, not 12.
- TestBraille.assertContent('This string', 0, 11);
- obj.changed(new cvox.TextChangeEvent(str, 0, str.length));
- assertEqualStringArrays([str.substr(12), 'added_to_selection'],
- tts.get());
- TestBraille.assertContent('This string', 0, 11);
- obj.changed(new cvox.TextChangeEvent(str, 12, 19));
- assertEqualStringArrays(['spans\nf', 'selected'], tts.get());
- TestBraille.assertContent('spans', 0, 5);
-});
-
-
-/**
- * Test autocomplete; suppose a user is typing "google.com/firefox" into an
- * address bar, and it's being autocompleted. Sometimes it's autocompleted
- * as they type, sometimes there's a short delay.
- */
-TEST_F('CvoxEditableTextUnitTest', 'Autocomplete', function() {
- var tts = new TestTts();
- var obj = new cvox.ChromeVoxEditableTextBase('', 0, 0, false, tts);
-
- // User types 'g'
- obj.changed(new cvox.TextChangeEvent('g', 1, 1));
- assertEqualStringArrays(['g'], tts.get());
-
- // The rest of 'google.com' is autocompleted and automatically selected.
- obj.changed(new cvox.TextChangeEvent('google.com', 1, 10));
- assertEqualStringArrays(['oogle.com, oogle.com'], tts.get());
-
- // The user doesn't realize it and types a few more characters of 'google.com'
- // and this changes the selection (unselecting) as the user types them.
- obj.changed(new cvox.TextChangeEvent('google.com', 2, 10));
- assertEqualStringArrays(['o', 'ogle.com'], tts.get());
- obj.changed(new cvox.TextChangeEvent('google.com', 3, 10));
- assertEqualStringArrays(['o', 'gle.com'], tts.get());
- obj.changed(new cvox.TextChangeEvent('google.com', 4, 10));
- assertEqualStringArrays(['g', 'le.com'], tts.get());
-
- // The user presses right-arrow, which fully unselects the remaining text.
- obj.changed(new cvox.TextChangeEvent('google.com', 10, 10));
- assertEqualStringArrays(['Unselected'], tts.get());
-
- // The user types '/'
- obj.changed(new cvox.TextChangeEvent('google.com/', 11, 11));
- assertEqualStringArrays(['com/'], tts.get());
-
- // The user types 'f', and 'finance' is autocompleted
- obj.changed(new cvox.TextChangeEvent('google.com/finance', 12, 18));
- assertEqualStringArrays(['finance, inance'], tts.get());
-
- // The user types 'i'
- obj.changed(new cvox.TextChangeEvent('google.com/finance', 13, 18));
- assertEqualStringArrays(['i', 'nance'], tts.get());
-
- // The user types 'r', now 'firefox' is autocompleted
- obj.changed(new cvox.TextChangeEvent('google.com/firefox', 14, 18));
- assertEqualStringArrays(['refox, efox'], tts.get());
-
- // The user presses right-arrow to accept the completion.
- obj.changed(new cvox.TextChangeEvent('google.com/firefox', 18, 18));
- assertEqualStringArrays(['Unselected'], tts.get());
-});
-
-
-/**
- * Test a few common scenarios where text is replaced.
- */
-TEST_F('CvoxEditableTextUnitTest', 'ReplacingText', function() {
- // Initial value is Alabama.
- var tts = new TestTts();
- var obj = new cvox.ChromeVoxEditableTextBase('Alabama', 0, 0, false, tts);
-
- // Entire text replaced with Alaska.
- obj.changed(new cvox.TextChangeEvent('Alaska', 0, 0));
- assertEqualStringArrays(['Alaska'], tts.get());
-
- // Entire text selected.
- obj.changed(new cvox.TextChangeEvent('Alaska', 0, 6));
- assertEqualStringArrays(['Alaska', 'selected'], tts.get());
-
- // Entire text replaced with Arizona.
- obj.changed(new cvox.TextChangeEvent('Arizona', 7, 7));
- assertEqualStringArrays(['Arizona'], tts.get());
-
- // Entire text selected.
- obj.changed(new cvox.TextChangeEvent('Arizona', 0, 7));
- assertEqualStringArrays(['Arizona', 'selected'], tts.get());
-
- // Click between 'r' and 'i'.
- obj.changed(new cvox.TextChangeEvent('Arizona', 2, 2));
- assertEqualStringArrays(['Unselected'], tts.get());
-
- // Next character removed from selection.
- obj.changed(new cvox.TextChangeEvent('Arizona', 2, 7));
- assertEqualStringArrays(['izona', 'selected'], tts.get());
-
- // Selection replaced with "kansas" to make Arkansas. This time it
- // says "kansas" because the deleted text was selected.
- obj.changed(new cvox.TextChangeEvent('Arkansas', 8, 8));
- assertEqualStringArrays(['kansas'], tts.get());
-});
-
-
-/**
- * Test feedback when text changes in a long sentence.
- */
-TEST_F('CvoxEditableTextUnitTest', 'ReplacingLongText', function() {
- var tts = new TestTts();
- var obj = new cvox.ChromeVoxEditableTextBase(
- 'I love deadlines. I like the whooshing sound they make as they fly by.',
- 0, 0, false, tts);
-
- // Change the whole sentence without moving the cursor. It should speak
- // only the part that changed, but it should speak whole words.
- obj.changed(new cvox.TextChangeEvent(
- 'I love deadlines. I love the whooshing sounds they make as they fly by.',
- 0, 0));
- assertEqualStringArrays(['love the whooshing sounds'], tts.get());
-});
-
-/** Tests character echo. */
-TEST_F('CvoxEditableTextUnitTest', 'CharacterEcho', function() {
- cvox.ChromeVox.typingEcho = cvox.TypingEcho.CHARACTER;
- var tts = new TestTts();
- var obj = new cvox.ChromeVoxEditableTextBase('', 0, 0, false, tts);
- obj.changed(new cvox.TextChangeEvent('H', 1, 1));
- obj.changed(new cvox.TextChangeEvent('He', 2, 2));
- obj.changed(new cvox.TextChangeEvent('Hel', 3, 3));
- obj.changed(new cvox.TextChangeEvent('Hell', 4, 4));
- obj.changed(new cvox.TextChangeEvent('Hello', 5, 5));
- obj.changed(new cvox.TextChangeEvent('Hello,', 6, 6));
- obj.changed(new cvox.TextChangeEvent('Hello, ', 7, 7));
- obj.changed(new cvox.TextChangeEvent('Hello, W', 8, 8));
- obj.changed(new cvox.TextChangeEvent('Hello, Wo', 9, 9));
- obj.changed(new cvox.TextChangeEvent('Hello, Wor', 10, 10));
- obj.changed(new cvox.TextChangeEvent('Hello, Worl', 11, 11));
- obj.changed(new cvox.TextChangeEvent('Hello, World', 12, 12));
- obj.changed(new cvox.TextChangeEvent('Hello, World.', 13, 13));
- assertEqualStringArrays(
- ['H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '.'],
- tts.get());
-});
-
-
-/** Tests word echo. */
-TEST_F('CvoxEditableTextUnitTest', 'WordEcho', function() {
- cvox.ChromeVox.typingEcho = cvox.TypingEcho.WORD;
- var tts = new TestTts();
- var obj = new cvox.ChromeVoxEditableTextBase('', 0, 0, false, tts);
- obj.changed(new cvox.TextChangeEvent('H', 1, 1));
- obj.changed(new cvox.TextChangeEvent('He', 2, 2));
- obj.changed(new cvox.TextChangeEvent('Hel', 3, 3));
- obj.changed(new cvox.TextChangeEvent('Hell', 4, 4));
- obj.changed(new cvox.TextChangeEvent('Hello', 5, 5));
- obj.changed(new cvox.TextChangeEvent('Hello,', 6, 6));
- obj.changed(new cvox.TextChangeEvent('Hello, ', 7, 7));
- obj.changed(new cvox.TextChangeEvent('Hello, W', 8, 8));
- obj.changed(new cvox.TextChangeEvent('Hello, Wo', 9, 9));
- obj.changed(new cvox.TextChangeEvent('Hello, Wor', 10, 10));
- obj.changed(new cvox.TextChangeEvent('Hello, Worl', 11, 11));
- obj.changed(new cvox.TextChangeEvent('Hello, World', 12, 12));
- obj.changed(new cvox.TextChangeEvent('Hello, World.', 13, 13));
- assertEqualStringArrays(
- ['Hello,', 'World.'],
- tts.get());
-});
-
-
-/** Tests no echo. */
-TEST_F('CvoxEditableTextUnitTest', 'NoEcho', function() {
- cvox.ChromeVox.typingEcho = cvox.TypingEcho.NONE;
- var tts = new TestTts();
- var obj = new cvox.ChromeVoxEditableTextBase('', 0, 0, false, tts);
- obj.changed(new cvox.TextChangeEvent('H', 1, 1));
- obj.changed(new cvox.TextChangeEvent('He', 2, 2));
- obj.changed(new cvox.TextChangeEvent('Hel', 3, 3));
- obj.changed(new cvox.TextChangeEvent('Hell', 4, 4));
- obj.changed(new cvox.TextChangeEvent('Hello', 5, 5));
- obj.changed(new cvox.TextChangeEvent('Hello,', 6, 6));
- obj.changed(new cvox.TextChangeEvent('Hello, ', 7, 7));
- obj.changed(new cvox.TextChangeEvent('Hello, W', 8, 8));
- obj.changed(new cvox.TextChangeEvent('Hello, Wo', 9, 9));
- obj.changed(new cvox.TextChangeEvent('Hello, Wor', 10, 10));
- obj.changed(new cvox.TextChangeEvent('Hello, Worl', 11, 11));
- obj.changed(new cvox.TextChangeEvent('Hello, World', 12, 12));
- obj.changed(new cvox.TextChangeEvent('Hello, World.', 13, 13));
- assertEqualStringArrays(
- [],
- tts.get());
-});
-
-/** Tests cursor movement in an input field by character. */
-TEST_F('CvoxEditableTextUnitTest', 'CursorMovementByCharacter', function() {
- var test = this.setUpForCursorTest_('input');
- var editable = test.editable, prepare = test.prepare, expect = test.expect;
- try {
- // Moving near the beginning of the text.
- prepare('|"Hello," says Sally.');
- editable.moveCursorToPreviousCharacter();
- expect('|"Hello," says Sally.');
- editable.moveCursorToNextCharacter();
- expect('"|Hello," says Sally.');
- editable.moveCursorToNextCharacter();
- expect('"H|ello," says Sally.');
-
- // Moving near the end of the text.
- prepare('"Hello," says Sally|.');
- editable.moveCursorToPreviousCharacter();
- expect('"Hello," says Sall|y.');
- editable.moveCursorToNextCharacter();
- expect('"Hello," says Sally|.');
- editable.moveCursorToNextCharacter();
- expect('"Hello," says Sally.|');
- editable.moveCursorToNextCharacter();
- expect('"Hello," says Sally.|');
- } finally {
- test.tearDown();
- }
-});
-
-/** Tests cursor movement in an input field by word. */
-TEST_F('CvoxEditableTextUnitTest', 'CursorMovementByWord', function() {
- var test = this.setUpForCursorTest_('input');
- var editable = test.editable, prepare = test.prepare, expect = test.expect;
- try {
- // Moving forward.
- prepare('"He|llo," says Sally.');
- editable.moveCursorToNextWord();
- expect('"Hello|," says Sally.');
- editable.moveCursorToNextWord();
- expect('"Hello," says| Sally.');
- editable.moveCursorToNextWord();
- expect('"Hello," says Sally|.');
- editable.moveCursorToNextWord();
- expect('"Hello," says Sally.|');
- editable.moveCursorToNextWord();
- expect('"Hello," says Sally.|');
-
- // Moving backward.
- prepare('"Hello," says S|ally.');
- editable.moveCursorToPreviousWord();
- expect('"Hello," says |Sally.');
- editable.moveCursorToPreviousWord();
- expect('"Hello," |says Sally.');
- editable.moveCursorToPreviousWord();
- expect('"|Hello," says Sally.');
- editable.moveCursorToPreviousWord();
- expect('|"Hello," says Sally.');
- editable.moveCursorToPreviousWord();
- expect('|"Hello," says Sally.');
- } finally {
- test.tearDown();
- }
-});
-
-/** Tests that character and word movement still work in <textarea>. */
-TEST_F('CvoxEditableTextUnitTest', 'CursorMovementTextArea', function() {
- var test = this.setUpForCursorTest_('textarea');
- var editable = test.editable, prepare = test.prepare, expect = test.expect;
- try {
- prepare('|Hello, Larry.\nHello, Sergey.');
- editable.moveCursorToNextCharacter();
- expect('H|ello, Larry.\nHello, Sergey.');
- editable.moveCursorToNextWord();
- expect('Hello|, Larry.\nHello, Sergey.');
- editable.moveCursorToNextWord();
- expect('Hello, Larry|.\nHello, Sergey.');
- editable.moveCursorToNextWord();
- expect('Hello, Larry.\nHello|, Sergey.');
- editable.moveCursorToNextCharacter();
- expect('Hello, Larry.\nHello,| Sergey.');
- editable.moveCursorToPreviousWord();
- expect('Hello, Larry.\n|Hello, Sergey.');
- editable.moveCursorToPreviousCharacter();
- expect('Hello, Larry.|\nHello, Sergey.');
- } finally {
- test.tearDown();
- }
-});
-
-/** Tests that line navigation works. */
-TEST_F('CvoxEditableTextUnitTest', 'CursorMovementByLine', function() {
- var test = this.setUpForCursorTest_('textarea');
- var editable = test.editable, prepare = test.prepare, expect = test.expect;
- try {
- prepare('123\n1234\n1234|5\n\nHi');
- editable.moveCursorToPreviousLine();
- expect('123\n1234|\n12345\n\nHi');
- editable.moveCursorToPreviousLine();
- expect('123|\n1234\n12345\n\nHi');
- editable.moveCursorToNextLine();
- expect('123\n123|4\n12345\n\nHi');
- editable.moveCursorToNextLine();
- expect('123\n1234\n123|45\n\nHi');
- editable.moveCursorToNextLine();
- expect('123\n1234\n12345\n|\nHi');
- editable.moveCursorToNextLine();
- expect('123\n1234\n12345\n\n|Hi');
- editable.moveCursorToNextLine();
- expect('123\n1234\n12345\n\nHi|');
-
- prepare('foo|bar');
- editable.moveCursorToPreviousLine();
- expect('|foobar');
- editable.moveCursorToPreviousLine();
- expect('|foobar');
- editable.moveCursorToNextLine();
- expect('foobar|');
- editable.moveCursorToNextLine();
- expect('foobar|');
- } finally {
- test.tearDown();
- }
-});
-
-/** Tests that paragraph navigation works. */
-TEST_F('CvoxEditableTextUnitTest', 'CursorMovementByParagraph', function() {
- var test = this.setUpForCursorTest_('textarea');
- var editable = test.editable, prepare = test.prepare, expect = test.expect;
- try {
- prepare('Para|graph 1\nParagraph 2\nParagraph 3');
- editable.moveCursorToNextParagraph();
- expect('Paragraph 1\n|Paragraph 2\nParagraph 3');
- editable.moveCursorToNextParagraph();
- expect('Paragraph 1\nParagraph 2\n|Paragraph 3');
- editable.moveCursorToNextParagraph();
- expect('Paragraph 1\nParagraph 2\nParagraph 3|');
- editable.moveCursorToPreviousParagraph();
- expect('Paragraph 1\nParagraph 2\n|Paragraph 3');
- editable.moveCursorToPreviousParagraph();
- expect('Paragraph 1\n|Paragraph 2\nParagraph 3');
- editable.moveCursorToPreviousParagraph();
- expect('|Paragraph 1\nParagraph 2\nParagraph 3');
- } finally {
- test.tearDown();
- }
-});
-
-/** Tests normalization of TextChangeEvent's */
-TEST_F('CvoxEditableTextUnitTest', 'TextChangeEvent', function() {
- var event1 = new cvox.TextChangeEvent('foo', 0, 1, true);
- var event2 = new cvox.TextChangeEvent('foo', 1, 0, true);
- var event3 = new cvox.TextChangeEvent('foo', 1, 1, true);
-
- assertEquals(0, event1.start);
- assertEquals(1, event1.end);
-
- assertEquals(0, event2.start);
- assertEquals(1, event2.end);
-
- assertEquals(1, event3.start);
- assertEquals(1, event3.end);
-});

Powered by Google App Engine
This is Rietveld 408576698