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

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: Addressed David's comments Created 4 years 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..765e8a25a150c98147507e731c31b471773bdce3 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,253 @@ CvoxPanStrategyUnitTest.prototype = {
closureModuleDeps: [
'cvox.PanStrategy',
],
+
+
};
/**
- * @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();
+TEST_F('CvoxPanStrategyUnitTest', 'WrappedPanningSingleLine', function() {
+ 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);
+ assertArrayBuffersEquals(createArrayBuffer('11234567 '),
+ panner.getCurrentBrailleViewportContents());
assertTrue(panner.next());
- assertEqualsJSON({start: 9, end: 19}, panner.viewPort);
+ assertEqualsJSON({firstRow: 1, lastRow: 1}, panner.viewPort);
+ assertArrayBuffersEquals(createArrayBuffer('9112345678'),
+ panner.getCurrentBrailleViewportContents());
assertTrue(panner.next());
- assertEqualsJSON({start: 19, end: 27}, panner.viewPort);
+ assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort);
+ assertArrayBuffersEquals(createArrayBuffer('911 345 '),
+ panner.getCurrentBrailleViewportContents());
assertTrue(panner.next());
- assertEqualsJSON({start: 27, end: 30}, panner.viewPort);
+ assertEqualsJSON({firstRow: 3, lastRow: 3}, panner.viewPort);
+ assertArrayBuffersEquals(createArrayBuffer('789'),
+ panner.getCurrentBrailleViewportContents());
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);
+ assertFalse(panner.previous());
+
+ panner.setContent('a', content, [], 21);
+ assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort);
+ assertArrayBuffersEquals(createArrayBuffer('911 345 '),
+ panner.getCurrentBrailleViewportContents());
- panner.setContent(content, 21);
- assertEqualsJSON({start: 19, end: 27}, panner.viewPort);
+ panner.setContent('a', content, [], 30);
+ assertEqualsJSON({firstRow: 3, lastRow: 3}, panner.viewPort);
+ assertArrayBuffersEquals(createArrayBuffer('789'),
+ panner.getCurrentBrailleViewportContents());
- panner.setContent(content, 30);
- assertEqualsJSON({start: 27, end: 30}, panner.viewPort);
+ panner.setDisplaySize(1, 8);
+ assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort);
+ assertArrayBuffersEquals(createArrayBuffer('11234567'),
+ panner.getCurrentBrailleViewportContents());
+});
+
+TEST_F('CvoxPanStrategyUnitTest', 'WrappedPanningMultiline', function() {
+ var panner = new cvox.PanStrategy();
+ panner.setPanStrategy(true);
- panner.setDisplaySize(8);
- assertEqualsJSON({start: 23, end: 30}, panner.viewPort);
+ // 30 cells with blank cells at positions 8, 22 and 26.
+ var content = createArrayBuffer('11234567 9112345678911 345 789');
+ panner.setContent('a', content, [], 0);
- panner.viewPort_ = {start: 2, end: 10};
+ panner.setDisplaySize(2, 10);
+ assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort);
+ assertArrayBuffersEquals(createArrayBuffer('11234567 9112345678'),
+ panner.getCurrentBrailleViewportContents());
+ assertTrue(panner.next());
+ assertEqualsJSON({firstRow: 2, lastRow: 3}, panner.viewPort);
+ assertArrayBuffersEquals(createArrayBuffer('911 345 789'),
+ panner.getCurrentBrailleViewportContents());
+ assertFalse(panner.next());
+ assertEqualsJSON({firstRow: 2, lastRow: 3}, panner.viewPort);
+ assertArrayBuffersEquals(createArrayBuffer('911 345 789'),
+ panner.getCurrentBrailleViewportContents());
assertTrue(panner.previous());
- assertEqualsJSON({start: 0, end: 8}, panner.viewPort);
+ assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort);
+ assertArrayBuffersEquals(createArrayBuffer('11234567 9112345678'),
+ panner.getCurrentBrailleViewportContents());
+ assertFalse(panner.previous());
+ assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort);
+ 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;
+ assertArrayBuffersEquals(expectedBufferValue, panner.fixedBuffer_);
+ var expectedMappingValue = mapping;
+ 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;
+ assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_);
+ var expectedMappingValue = mapping;
+ 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');
+ assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_);
+ expectedMappingValue = [0,1,2,3,4,6,7,8,9];
+ assertArraysEquals(expectedMappingValue, panner.brailleToText);
+
+ // When first word is equal to column size + 1. (Space stays)
+ panner.setDisplaySize(1, 6);
+ expectedBufferValue = createArrayBuffer('11234 6789');
+ assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_);
+ expectedMappingValue = mapping;
+ 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');
+ assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_);
+ expectedMappingValue = [0,1,2,3,4,5,5,6,7,8,9];
+ 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');
+ assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_);
+ expectedMappingValue = [0,1,2,3,4,5,7,8,9];
+ 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());
});

Powered by Google App Engine
This is Rietveld 408576698