| Index: chrome/browser/resources/chromeos/chromevox/braille/expanding_braille_translator_test.unitjs
|
| diff --git a/chrome/browser/resources/chromeos/chromevox/braille/expanding_braille_translator_test.unitjs b/chrome/browser/resources/chromeos/chromevox/braille/expanding_braille_translator_test.unitjs
|
| index bd598dd6e272ea382d1df8039e19f66fc60ddfe0..8b4f313789182fd479d53a612ef94d5fc5366fb4 100644
|
| --- a/chrome/browser/resources/chromeos/chromevox/braille/expanding_braille_translator_test.unitjs
|
| +++ b/chrome/browser/resources/chromeos/chromevox/braille/expanding_braille_translator_test.unitjs
|
| @@ -116,28 +116,42 @@ var totalRunTranslationTests = 0;
|
| */
|
| function doTranslationTest(name, contracted, valueExpansion, text,
|
| expectedOutput) {
|
| - totalRunTranslationTests++;
|
| - var uncontractedTranslator = new FakeTranslator('u');
|
| - var expandingTranslator;
|
| - if (contracted) {
|
| - var contractedTranslator = new FakeTranslator('c');
|
| - expandingTranslator = new cvox.ExpandingBrailleTranslator(
|
| - contractedTranslator, uncontractedTranslator);
|
| - } else {
|
| - expandingTranslator = new cvox.ExpandingBrailleTranslator(
|
| - uncontractedTranslator);
|
| - }
|
| - var expectedMapping = [];
|
| - for (var i = 0; i < expectedOutput.length; ++i) {
|
| - expectedMapping[i] = i;
|
| + try {
|
| + totalRunTranslationTests++;
|
| + var uncontractedTranslator = new FakeTranslator('u');
|
| + var expandingTranslator;
|
| + if (contracted) {
|
| + var contractedTranslator = new FakeTranslator('c');
|
| + expandingTranslator = new cvox.ExpandingBrailleTranslator(
|
| + contractedTranslator, uncontractedTranslator);
|
| + } else {
|
| + expandingTranslator = new cvox.ExpandingBrailleTranslator(
|
| + uncontractedTranslator);
|
| + }
|
| + var extraCellsSpan = text.getSpanInstanceOf(cvox.ExtraCellsSpan);
|
| + if (extraCellsSpan)
|
| + var extraCellsSpanPos = text.getSpanStart(extraCellsSpan);
|
| + var expectedTextToBraille = [];
|
| + var expectedBrailleToText = [];
|
| + for (var i = 0, pos = 0; i < text.getLength(); ++i, ++pos) {
|
| + if (i === extraCellsSpanPos)
|
| + ++pos;
|
| + expectedTextToBraille.push(pos);
|
| + expectedBrailleToText.push(i);
|
| + }
|
| + if (extraCellsSpan)
|
| + expectedBrailleToText.splice(extraCellsSpanPos, 0, extraCellsSpanPos);
|
| +
|
| + expandingTranslator.translate(
|
| + text, valueExpansion, function(cells, textToBraille, brailleToText) {
|
| + assertArrayBufferMatches(expectedOutput, cells, name);
|
| + assertEqualsJSON(expectedTextToBraille, textToBraille, name);
|
| + assertEqualsJSON(expectedBrailleToText, brailleToText, name);
|
| + });
|
| + } catch (e) {
|
| + console.error('Subtest ' + name + ' failed.');
|
| + throw e;
|
| }
|
| -
|
| - expandingTranslator.translate(
|
| - text, valueExpansion, function(cells, textToBraille, brailleToText) {
|
| - assertArrayBufferMatches(expectedOutput, cells, name);
|
| - assertEqualsJSON(expectedMapping, textToBraille, name);
|
| - assertEqualsJSON(expectedMapping, brailleToText, name);
|
| - });
|
| };
|
|
|
| /**
|
| @@ -149,16 +163,27 @@ function doTranslationTest(name, contracted, valueExpansion, text,
|
| * and contracted translators.
|
| * @param {cvox.ExpandingBrailleTranslation.ExpansionType} valueExpansion
|
| * What kind of value expansion to apply.
|
| - * @param {cvox.Spannable} text Input text.
|
| - * @param {string=} opt_expectedContractedOutput Expected output (see
|
| - * {@code TESTDATA}).
|
| + * @param {boolean} withExtraCells Whether to insert an extra cells span
|
| + * right before the selection in the input.
|
| */
|
| -function runTranslationTestVariants(testCase, contracted, valueExpansion) {
|
| +function runTranslationTestVariants(testCase, contracted, valueExpansion,
|
| + withExtraCells) {
|
| var expType = cvox.ExpandingBrailleTranslator.ExpansionType;
|
| // Construct the full name.
|
| var fullName = contracted ? 'Contracted_' : 'Uncontracted_';
|
| fullName += 'Expansion' + valueExpansion + '_';
|
| + if (withExtraCells)
|
| + fullName += 'ExtraCells_';
|
| fullName += testCase.name;
|
| + var input = testCase.input;
|
| + if (withExtraCells) {
|
| + input = input.substring(0); // Shallow copy.
|
| + var selectionStart = input.getSpanStart(
|
| + input.getSpanInstanceOf(cvox.ValueSelectionSpan));
|
| + var extraCellsSpan = new cvox.ExtraCellsSpan();
|
| + extraCellsSpan.cells = new Uint8Array(['e'.charCodeAt(0)]).buffer;
|
| + input.setSpan(extraCellsSpan, selectionStart, selectionStart);
|
| + }
|
| // The expected output depends on the contraction mode and value expansion.
|
| var outputChar = contracted ? 'c' : 'u';
|
| var expectedOutput;
|
| @@ -170,14 +195,18 @@ function runTranslationTestVariants(testCase, contracted, valueExpansion) {
|
| expectedOutput =
|
| new Array(testCase.input.getLength() + 1).join(outputChar);
|
| }
|
| - doTranslationTest(fullName, contracted, valueExpansion, testCase.input,
|
| + if (withExtraCells) {
|
| + expectedOutput = expectedOutput.substring(0, selectionStart) + 'e' +
|
| + expectedOutput.substring(selectionStart);
|
| + }
|
| + doTranslationTest(fullName, contracted, valueExpansion, input,
|
| expectedOutput);
|
|
|
| // Run another test, with the value surrounded by some text.
|
| var surroundedText = new cvox.Spannable('Name: ');
|
| var surroundedExpectedOutput =
|
| new Array('Name: '.length + 1).join(outputChar);
|
| - surroundedText.append(testCase.input);
|
| + surroundedText.append(input);
|
| surroundedExpectedOutput += expectedOutput;
|
| if (testCase.input.getLength() > 0) {
|
| surroundedText.append(' ');
|
| @@ -186,7 +215,7 @@ function runTranslationTestVariants(testCase, contracted, valueExpansion) {
|
| surroundedText.append('edtxt');
|
| surroundedExpectedOutput +=
|
| new Array('edtxt'.length + 1).join(outputChar);
|
| - doTranslationTest(fullName + '_Surrounded', contracted, valueExpansion,
|
| + doTranslationTest(fullName + '_Surrounded', contracted, valueExpansion,
|
| surroundedText, surroundedExpectedOutput);
|
| }
|
|
|
| @@ -250,15 +279,23 @@ TEST_F('CvoxExpandingBrailleTranslatorUnitTest', 'successfulTranslations',
|
| input: createText(TEXT, 2, 9),
|
| contractedOutput: 'uuuuuucuuuuuu' }
|
| ];
|
| + var TESTDATA_WITH_SELECTION = TESTDATA.filter(function(testCase) {
|
| + return testCase.input.getSpanInstanceOf(cvox.ValueSelectionSpan);
|
| + });
|
|
|
| var expType = cvox.ExpandingBrailleTranslator.ExpansionType;
|
| for (var i = 0, testCase; testCase = TESTDATA[i]; ++i) {
|
| - runTranslationTestVariants(testCase, false, expType.SELECTION);
|
| - runTranslationTestVariants(testCase, true, expType.NONE);
|
| - runTranslationTestVariants(testCase, true, expType.SELECTION);
|
| - runTranslationTestVariants(testCase, true, expType.ALL);
|
| + runTranslationTestVariants(testCase, false, expType.SELECTION, false);
|
| + runTranslationTestVariants(testCase, true, expType.NONE, false);
|
| + runTranslationTestVariants(testCase, true, expType.SELECTION, false);
|
| + runTranslationTestVariants(testCase, true, expType.ALL, false);
|
| }
|
| + for (var i = 0, testCase; testCase = TESTDATA_WITH_SELECTION[i]; ++i)
|
| + runTranslationTestVariants(testCase, true, expType.SELECTION, true);
|
| +
|
| // Make sure that the logic above runs the tests, adjust when adding more
|
| - // tests.
|
| - assertEquals(64, totalRunTranslationTests);
|
| + // test variants.
|
| + var totalExpectedTranslationTests =
|
| + 2 * (TESTDATA.length * 4 + TESTDATA_WITH_SELECTION.length);
|
| + assertEquals(totalExpectedTranslationTests, totalRunTranslationTests);
|
| });
|
|
|