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..ef40b237bfaa791901190369ed9b63de859aeecd 100644 |
| --- a/chrome/browser/resources/chromeos/chromevox/braille/pan_strategy_test.unitjs |
| +++ b/chrome/browser/resources/chromeos/chromevox/braille/pan_strategy_test.unitjs |
| @@ -18,6 +18,15 @@ 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)); |
|
David Tseng
2016/11/30 22:11:54
Add these to testing/assert_additions.js
Also, I
ultimatedbz
2016/12/07 23:40:43
Done.
|
| + }, |
| }; |
| /** |
| @@ -35,87 +44,179 @@ function createArrayBuffer(content) { |
| } |
| 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'); |
| + var brailleToText = [0, 0, 0, 0, 0, 0,]; |
|
David Tseng
2016/11/30 22:11:55
Unused, remove.
ultimatedbz
2016/12/01 05:12:15
Done.
|
| + panner.setContent('a', translatedContent, [], 0); |
|
David Tseng
2016/11/30 22:11:54
If 'a' is unused, pass it as 'unused' to not set u
ultimatedbz
2016/12/01 05:12:15
Done.
|
| + 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); |
| + assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); |
|
David Tseng
2016/11/30 22:11:54
Assert column size is 10 to keep the spirit of the
ultimatedbz
2016/12/01 05:12:15
Done.
|
| 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); |
| + |
|
David Tseng
2016/11/30 22:11:55
nit: remove
ultimatedbz
2016/12/01 05:12:15
Done.
|
| }); |
| 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); |
| + 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); |
| assertTrue(panner.next()); |
| - assertEqualsJSON({start: 9, end: 19}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 1, lastRow: 1}, panner.viewPort); |
| assertTrue(panner.next()); |
| - assertEqualsJSON({start: 19, end: 27}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort); |
| assertTrue(panner.next()); |
| - assertEqualsJSON({start: 27, end: 30}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 3, lastRow: 3}, panner.viewPort); |
| assertFalse(panner.next()); |
| - assertEqualsJSON({start: 27, end: 30}, panner.viewPort); |
| - assertTrue(panner.previous()); |
| - assertEqualsJSON({start: 23, end: 27}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 3, lastRow: 3}, panner.viewPort); |
| assertTrue(panner.previous()); |
| - assertEqualsJSON({start: 13, end: 23}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort); |
| assertTrue(panner.previous()); |
| - assertEqualsJSON({start: 9, end: 13}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 1, lastRow: 1}, panner.viewPort); |
| assertTrue(panner.previous()); |
| - assertEqualsJSON({start: 0, end: 9}, panner.viewPort); |
| + assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); |
|
David Tseng
2016/11/30 22:21:52
I would also test the individual slices and assert
ultimatedbz
2016/12/01 05:12:15
The current function 'createArrayBuffer()' takes i
David Tseng
2016/12/07 16:46:36
Ok.
The only concern was that we're just testing
ultimatedbz
2016/12/07 23:39:25
Acknowledged.
|
| + 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); |
| - panner.setContent(content, 30); |
| - assertEqualsJSON({start: 27, end: 30}, panner.viewPort); |
| + panner.setContent('a', content, [], 30); |
| + assertEqualsJSON({firstRow: 3, lastRow: 3}, panner.viewPort); |
| - panner.setDisplaySize(8); |
| - assertEqualsJSON({start: 23, end: 30}, 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: 3}, panner.viewPort); |
| + assertFalse(panner.next()); |
| + assertEqualsJSON({firstRow: 2, lastRow: 3}, 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', 'FixedSetContent', function() { |
| + var panner = new cvox.PanStrategy(); |
| + panner.setPanStrategy(false); |
| + |
| + var textContent = "ABCDE FGHI" |
| + var translatedContent = createArrayBuffer('01234 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('01234'); |
| + 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('01234 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('012346789'); |
| + 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('01234 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('01234 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('012345 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('012345789'); |
| + this.assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_); |
| + expectedMappingValue = [0,1,2,3,4,5,7,8,9]; |
| + this.assertArraysEquals(expectedMappingValue, panner.brailleToText); |
|
David Tseng
2016/11/30 22:21:52
I would also add unit tests to exercise the new pu
ultimatedbz
2016/12/01 05:12:15
I believe that by testing for the current slices a
David Tseng
2016/12/07 16:46:36
Sgtm
For organizational purposes, one test per fu
|
| }); |