Chromium Code Reviews| Index: chrome/browser/resources/chromeos/chromevox/braille/pan_strategy_test.unitjs |
| diff --git a/chrome/browser/resources/chromeos/chromevox/braille/pan_strategy_test.unitjs b/chrome/browser/resources/chromeos/chromevox/braille/pan_strategy_test.unitjs |
| index 3c7464888eaf524ec0be0f0a618a6d2b4fd71341..81aa4da809cd4fc2a6fcfe7cae78b1c18b8118fa 100644 |
| --- a/chrome/browser/resources/chromeos/chromevox/braille/pan_strategy_test.unitjs |
| +++ b/chrome/browser/resources/chromeos/chromevox/braille/pan_strategy_test.unitjs |
| @@ -18,104 +18,252 @@ CvoxPanStrategyUnitTest.prototype = { |
| closureModuleDeps: [ |
| 'cvox.PanStrategy', |
| ], |
| + |
| + assertArrayBuffersEquals(arrayBufA, arrayBufB) { |
| + var view1 = new Uint8Array(arrayBufA); |
| + var view2 = new Uint8Array(arrayBufB); |
| + assertEquals(JSON.stringify(view1), JSON.stringify(view2)); |
| + }, |
| + assertArraysEquals(arrayA, arrayB) { |
| + assertEquals(JSON.stringify(arrayA), JSON.stringify(arrayB)); |
| + }, |
| }; |
| /** |
| - * @param {string} content String representing the content with spaces |
| - * representing blank cells and any other character representing |
| - * arbitrary non-blank cells. |
| + * Creates an array buffer based off of the passed in content. |
| + * Note: Input should be a string of numbers, spaces will turn to 0's. |
| + * @param {string} content String representing the content. |
| */ |
| function createArrayBuffer(content) { |
| var result = new ArrayBuffer(content.length); |
| var view = new Uint8Array(result); |
| for (var i = 0; i < content.length; ++i) { |
| - view[i] = (content[i] != ' ' ? 1 : 0); |
| + view[i] = content[i]; |
| } |
| return result; |
| } |
| TEST_F('CvoxPanStrategyUnitTest', 'FixedPanning', function() { |
| - var panner = new cvox.FixedPanStrategy(); |
| + var panner = new cvox.PanStrategy(); |
| + panner.setPanStrategy(false); |
| - panner.setDisplaySize(0); |
| - panner.setContent(createArrayBuffer(''), 0); |
| - assertEqualsJSON({start: 0, end: 0}, panner.viewPort); |
| + panner.setDisplaySize(0, 0); |
| + panner.setContent('', createArrayBuffer(''), [], 0); |
| + assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); |
| assertFalse(panner.previous()); |
| assertFalse(panner.next()); |
| // 25 cells with a blank cell in the first 10 characters. |
| - var content = createArrayBuffer('01234567 9012345678901234'); |
| - panner.setContent(content, 0); |
| - assertEqualsJSON({start: 0, end: 0}, panner.viewPort); |
| + var translatedContent = createArrayBuffer('01234567 9012345678901234'); |
| + panner.setContent('unused', translatedContent, [], 0); |
| + assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); |
| assertFalse(panner.next()); |
| assertFalse(panner.previous()); |
| - panner.setDisplaySize(10); |
| - assertEqualsJSON({start: 0, end: 10}, panner.viewPort); |
| + panner.setDisplaySize(1, 10); |
| + assertEquals(panner.displaySize.columns, 10); |
| + assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); |
| assertTrue(panner.next()); |
| - assertEqualsJSON({start: 10, end: 20}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 1, lastRow: 1}, panner.viewPort); |
| assertTrue(panner.next()); |
| - assertEqualsJSON({start: 20, end: 25}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort); |
| assertFalse(panner.next()); |
| - assertEqualsJSON({start: 20, end: 25}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort); |
| assertTrue(panner.previous()); |
| - assertEqualsJSON({start: 10, end: 20}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 1, lastRow: 1}, panner.viewPort); |
| assertTrue(panner.previous()); |
| - assertEqualsJSON({start: 0, end: 10}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); |
| - panner.setContent(content, 19); |
| - assertEqualsJSON({start: 10, end: 20}, panner.viewPort); |
| + panner.setContent('a', translatedContent, [], 19); |
| + assertEqualsJSON({firstRow: 1, lastRow: 1}, panner.viewPort); |
| - panner.setContent(content, 20); |
| - assertEqualsJSON({start: 20, end: 25}, panner.viewPort); |
| + panner.setContent('a', translatedContent, [], 20); |
| + assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort); |
| - panner.setDisplaySize(8); |
| - assertEqualsJSON({start: 16, end: 24}, panner.viewPort); |
| + panner.setDisplaySize(1, 8); |
| + assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); |
| - panner.viewPort_ = {start: 2, end: 10}; |
| + // Test Multi-line Panning. |
| + panner.setDisplaySize(2, 10); |
| + assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort); |
| + assertTrue(panner.next()); |
| + assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort); |
| + assertFalse(panner.next()); |
| + assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort); |
| assertTrue(panner.previous()); |
| - assertEqualsJSON({start: 0, end: 8}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort); |
| + assertFalse(panner.previous()); |
| + assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort); |
| }); |
| TEST_F('CvoxPanStrategyUnitTest', 'WrappedPanning', function() { |
| - var panner = new cvox.WrappingPanStrategy(); |
| + var panner = new cvox.PanStrategy(); |
| + panner.setPanStrategy(true); |
| // 30 cells with blank cells at positions 8, 22 and 26. |
| - var content = createArrayBuffer('01234567 9012345678901 345 789'); |
| - panner.setContent(content, 0); |
| - assertEqualsJSON({start: 0, end: 0}, panner.viewPort); |
| + var content = createArrayBuffer('11234567 9112345678911 345 789'); |
| + panner.setContent('a', content, [], 0); |
| + assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); |
| assertFalse(panner.next()); |
| assertFalse(panner.previous()); |
| - panner.setDisplaySize(10); |
| - assertEqualsJSON({start: 0, end: 9}, panner.viewPort); |
| + panner.setDisplaySize(1, 10); |
| + assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); |
| + this.assertArrayBuffersEquals(createArrayBuffer('11234567 '), |
| + panner.getCurrentBrailleViewportContents()); |
| assertTrue(panner.next()); |
| - assertEqualsJSON({start: 9, end: 19}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 1, lastRow: 1}, panner.viewPort); |
| + this.assertArrayBuffersEquals(createArrayBuffer('9112345678'), |
| + panner.getCurrentBrailleViewportContents()); |
| assertTrue(panner.next()); |
| - assertEqualsJSON({start: 19, end: 27}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort); |
| + this.assertArrayBuffersEquals(createArrayBuffer('911 345 '), |
| + panner.getCurrentBrailleViewportContents()); |
| assertTrue(panner.next()); |
| - assertEqualsJSON({start: 27, end: 30}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 3, lastRow: 3}, panner.viewPort); |
| + this.assertArrayBuffersEquals(createArrayBuffer('789'), |
| + panner.getCurrentBrailleViewportContents()); |
| assertFalse(panner.next()); |
| - assertEqualsJSON({start: 27, end: 30}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 3, lastRow: 3}, panner.viewPort); |
| assertTrue(panner.previous()); |
| - assertEqualsJSON({start: 23, end: 27}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort); |
| assertTrue(panner.previous()); |
| - assertEqualsJSON({start: 13, end: 23}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 1, lastRow: 1}, panner.viewPort); |
| assertTrue(panner.previous()); |
| - assertEqualsJSON({start: 9, end: 13}, panner.viewPort); |
| - assertTrue(panner.previous()); |
| - assertEqualsJSON({start: 0, end: 9}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); |
| + assertFalse(panner.previous()); |
| - panner.setContent(content, 21); |
| - assertEqualsJSON({start: 19, end: 27}, panner.viewPort); |
| + panner.setContent('a', content, [], 21); |
| + assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort); |
| + this.assertArrayBuffersEquals(createArrayBuffer('911 345 '), |
| + panner.getCurrentBrailleViewportContents()); |
|
dmazzoni
2016/12/07 06:48:56
same, more tabs
ultimatedbz
2016/12/07 23:39:25
Done.
|
| - panner.setContent(content, 30); |
| - assertEqualsJSON({start: 27, end: 30}, panner.viewPort); |
| + panner.setContent('a', content, [], 30); |
| + assertEqualsJSON({firstRow: 3, lastRow: 3}, panner.viewPort); |
| + this.assertArrayBuffersEquals(createArrayBuffer('789'), |
| + panner.getCurrentBrailleViewportContents()); |
| - panner.setDisplaySize(8); |
| - assertEqualsJSON({start: 23, end: 30}, panner.viewPort); |
| + panner.setDisplaySize(1, 8); |
| + assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); |
| + this.assertArrayBuffersEquals(createArrayBuffer('11234567'), |
| + panner.getCurrentBrailleViewportContents()); |
| - panner.viewPort_ = {start: 2, end: 10}; |
| + // Test Multi-line Panning. |
|
dmazzoni
2016/12/07 06:48:56
Not a big deal, but I'd start a new test here rath
ultimatedbz
2016/12/07 23:39:25
Done.
|
| + panner.setDisplaySize(2, 10); |
| + assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort); |
| + this.assertArrayBuffersEquals(createArrayBuffer('11234567 9112345678'), |
| + panner.getCurrentBrailleViewportContents()); |
| + assertTrue(panner.next()); |
| + assertEqualsJSON({firstRow: 2, lastRow: 3}, panner.viewPort); |
| + this.assertArrayBuffersEquals(createArrayBuffer('911 345 789'), |
| + panner.getCurrentBrailleViewportContents()); |
| + assertFalse(panner.next()); |
| + assertEqualsJSON({firstRow: 2, lastRow: 3}, panner.viewPort); |
| + this.assertArrayBuffersEquals(createArrayBuffer('911 345 789'), |
| + panner.getCurrentBrailleViewportContents()); |
| assertTrue(panner.previous()); |
| - assertEqualsJSON({start: 0, end: 8}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort); |
| + this.assertArrayBuffersEquals(createArrayBuffer('11234567 9112345678'), |
| + panner.getCurrentBrailleViewportContents()); |
| + assertFalse(panner.previous()); |
| + assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort); |
| + this.assertArrayBuffersEquals(createArrayBuffer('11234567 9112345678'), |
| + panner.getCurrentBrailleViewportContents()); |
| +}); |
| + |
| +TEST_F('CvoxPanStrategyUnitTest', 'FixedSetContent', function() { |
| + var panner = new cvox.PanStrategy(); |
| + panner.setPanStrategy(false); |
| + |
| + var textContent = "ABCDE FGHI" |
| + var translatedContent = createArrayBuffer('11234 6789'); |
| + var mapping = [0,1,2,3,4,5,6,7,8,9]; |
| + panner.setDisplaySize(1, 5); |
| + panner.setContent(textContent, translatedContent, |
| + mapping, 0); |
| + var expectedBufferValue = translatedContent; |
| + this.assertArrayBuffersEquals(expectedBufferValue, panner.fixedBuffer_); |
| + var expectedMappingValue = mapping; |
| + this.assertArraysEquals(expectedMappingValue, panner.brailleToText); |
| +}); |
| + |
| +TEST_F('CvoxPanStrategyUnitTest', 'WrappedSetContent', function() { |
| + var panner = new cvox.PanStrategy(); |
| + panner.setPanStrategy(true); |
| + |
| + // When first word is bigger than column size. (Don't wrap word) |
| + var textContent = "ABCDE" |
| + var translatedContent = createArrayBuffer('11234'); |
| + var mapping = [0,1,2,3,4]; |
| + panner.setDisplaySize(1, 4); |
| + panner.setContent(textContent, translatedContent, |
| + mapping, 0); |
| + var expectedBufferValue = translatedContent; |
| + this.assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_); |
| + var expectedMappingValue = mapping; |
| + this.assertArraysEquals(expectedMappingValue, panner.brailleToText); |
| + |
| + // When first word is equal to column size. |
| + // (We expect space to be removed on next line) |
| + textContent = "ABCDE FGHI" |
| + translatedContent = createArrayBuffer('11234 6789'); |
| + var mapping = [0,1,2,3,4,5,6,7,8,9]; |
| + panner.setDisplaySize(1, 5); |
| + panner.setContent(textContent, translatedContent, |
| + mapping, 0); |
| + expectedBufferValue = createArrayBuffer('112346789'); |
| + this.assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_); |
| + expectedMappingValue = [0,1,2,3,4,6,7,8,9]; |
| + this.assertArraysEquals(expectedMappingValue, panner.brailleToText); |
| + |
| + // When first word is equal to column size + 1. (Space stays) |
| + panner.setDisplaySize(1, 6); |
| + expectedBufferValue = createArrayBuffer('11234 6789'); |
| + this.assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_); |
| + expectedMappingValue = mapping; |
| + this.assertArraysEquals(expectedMappingValue, panner.brailleToText); |
| + |
| + // When first word is smaller than column size but second word is too big |
| + // to fit the same line. (Pad that line, move second word to next line) |
| + panner.setDisplaySize(1, 7); |
| + expectedBufferValue = createArrayBuffer('11234 6789'); |
| + this.assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_); |
| + expectedMappingValue = [0,1,2,3,4,5,5,6,7,8,9]; |
| + this.assertArraysEquals(expectedMappingValue, panner.brailleToText); |
| + |
| + // Test all excess spaces are removed. |
| + panner.setDisplaySize(1, 6); |
| + textContent = "ABCDEF GHI" |
| + translatedContent = createArrayBuffer('112345 789'); |
| + mapping = [0,1,2,3,4,5,6,7,7,7,7,7,8,9,10]; |
| + panner.setContent(textContent, translatedContent, |
| + mapping, 0); |
| + expectedBufferValue = createArrayBuffer('112345789'); |
| + this.assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_); |
| + expectedMappingValue = [0,1,2,3,4,5,7,8,9]; |
| + this.assertArraysEquals(expectedMappingValue, panner.brailleToText); |
| +}); |
| + |
| +TEST_F('CvoxPanStrategyUnitTest', 'getCurrentTextViewportContents', function() { |
| + var panner = new cvox.PanStrategy(); |
| + panner.setPanStrategy(true); |
| + |
| + // 30 cells with blank cells at positions 8, 22 and 26. |
| + var content = createArrayBuffer('11234567 9112345678911 345 789'); |
| + var mapping = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20, |
| + 21,22,23,24,25,26,27,28,29]; |
| + panner.setContent('11234567 9112345678911 345 789', content, mapping, 0); |
| + assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); |
| + assertFalse(panner.next()); |
| + assertFalse(panner.previous()); |
| + |
| + panner.setDisplaySize(1, 10); |
| + assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); |
| + assertEquals('11234567 ', panner.getCurrentTextViewportContents()); |
| + panner.next(); |
| + assertEquals('9112345678', panner.getCurrentTextViewportContents()); |
| + panner.next(); |
| + assertEquals('911 345 ', panner.getCurrentTextViewportContents()); |
| + panner.next(); |
| + assertEquals('789', panner.getCurrentTextViewportContents()); |
| }); |