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

Unified Diff: chrome/browser/resources/chromeos/chromevox/braille/pan_strategy_test.unitjs

Issue 2496823002: Implement word wrapping and panning in multiline Braille. (Closed)
Patch Set: Wrote tests, fixed bugs :) Created 4 years, 1 month 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/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
});

Powered by Google App Engine
This is Rietveld 408576698