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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 GEN_INCLUDE(['../testing/chromevox_unittest_base.js']); 5 GEN_INCLUDE(['../testing/chromevox_unittest_base.js']);
6 6
7 /** 7 /**
8 * Test fixture. 8 * Test fixture.
9 * @constructor 9 * @constructor
10 * @extends {ChromeVoxUnitTestBase} 10 * @extends {ChromeVoxUnitTestBase}
11 */ 11 */
12 function CvoxPanStrategyUnitTest() {} 12 function CvoxPanStrategyUnitTest() {}
13 13
14 CvoxPanStrategyUnitTest.prototype = { 14 CvoxPanStrategyUnitTest.prototype = {
15 __proto__: ChromeVoxUnitTestBase.prototype, 15 __proto__: ChromeVoxUnitTestBase.prototype,
16 16
17 /** @override */ 17 /** @override */
18 closureModuleDeps: [ 18 closureModuleDeps: [
19 'cvox.PanStrategy', 19 'cvox.PanStrategy',
20 ], 20 ],
21
22
21 }; 23 };
22 24
23 /** 25 /**
24 * @param {string} content String representing the content with spaces 26 * Creates an array buffer based off of the passed in content.
25 * representing blank cells and any other character representing 27 * Note: Input should be a string of numbers, spaces will turn to 0's.
26 * arbitrary non-blank cells. 28 * @param {string} content String representing the content.
27 */ 29 */
28 function createArrayBuffer(content) { 30 function createArrayBuffer(content) {
29 var result = new ArrayBuffer(content.length); 31 var result = new ArrayBuffer(content.length);
30 var view = new Uint8Array(result); 32 var view = new Uint8Array(result);
31 for (var i = 0; i < content.length; ++i) { 33 for (var i = 0; i < content.length; ++i) {
32 view[i] = (content[i] != ' ' ? 1 : 0); 34 view[i] = content[i];
33 } 35 }
34 return result; 36 return result;
35 } 37 }
36 38
37 TEST_F('CvoxPanStrategyUnitTest', 'FixedPanning', function() { 39 TEST_F('CvoxPanStrategyUnitTest', 'FixedPanning', function() {
38 var panner = new cvox.FixedPanStrategy(); 40 var panner = new cvox.PanStrategy();
39 41 panner.setPanStrategy(false);
40 panner.setDisplaySize(0); 42
41 panner.setContent(createArrayBuffer(''), 0); 43 panner.setDisplaySize(0, 0);
42 assertEqualsJSON({start: 0, end: 0}, panner.viewPort); 44 panner.setContent('', createArrayBuffer(''), [], 0);
45 assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort);
43 assertFalse(panner.previous()); 46 assertFalse(panner.previous());
44 assertFalse(panner.next()); 47 assertFalse(panner.next());
45 48
46 // 25 cells with a blank cell in the first 10 characters. 49 // 25 cells with a blank cell in the first 10 characters.
47 var content = createArrayBuffer('01234567 9012345678901234'); 50 var translatedContent = createArrayBuffer('01234567 9012345678901234');
48 panner.setContent(content, 0); 51 panner.setContent('unused', translatedContent, [], 0);
49 assertEqualsJSON({start: 0, end: 0}, panner.viewPort); 52 assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort);
50 assertFalse(panner.next()); 53 assertFalse(panner.next());
51 assertFalse(panner.previous()); 54 assertFalse(panner.previous());
52 55
53 panner.setDisplaySize(10); 56 panner.setDisplaySize(1, 10);
54 assertEqualsJSON({start: 0, end: 10}, panner.viewPort); 57 assertEquals(panner.displaySize.columns, 10);
55 assertTrue(panner.next()); 58 assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort);
56 assertEqualsJSON({start: 10, end: 20}, panner.viewPort); 59 assertTrue(panner.next());
57 assertTrue(panner.next()); 60 assertEqualsJSON({firstRow: 1, lastRow: 1}, panner.viewPort);
58 assertEqualsJSON({start: 20, end: 25}, panner.viewPort); 61 assertTrue(panner.next());
59 assertFalse(panner.next()); 62 assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort);
60 assertEqualsJSON({start: 20, end: 25}, panner.viewPort); 63 assertFalse(panner.next());
61 assertTrue(panner.previous()); 64 assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort);
62 assertEqualsJSON({start: 10, end: 20}, panner.viewPort); 65 assertTrue(panner.previous());
63 assertTrue(panner.previous()); 66 assertEqualsJSON({firstRow: 1, lastRow: 1}, panner.viewPort);
64 assertEqualsJSON({start: 0, end: 10}, panner.viewPort); 67 assertTrue(panner.previous());
65 68 assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort);
66 panner.setContent(content, 19); 69
67 assertEqualsJSON({start: 10, end: 20}, panner.viewPort); 70 panner.setContent('a', translatedContent, [], 19);
68 71 assertEqualsJSON({firstRow: 1, lastRow: 1}, panner.viewPort);
69 panner.setContent(content, 20); 72
70 assertEqualsJSON({start: 20, end: 25}, panner.viewPort); 73 panner.setContent('a', translatedContent, [], 20);
71 74 assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort);
72 panner.setDisplaySize(8); 75
73 assertEqualsJSON({start: 16, end: 24}, panner.viewPort); 76 panner.setDisplaySize(1, 8);
74 77 assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort);
75 panner.viewPort_ = {start: 2, end: 10}; 78
76 assertTrue(panner.previous()); 79 // Test Multi-line Panning.
77 assertEqualsJSON({start: 0, end: 8}, panner.viewPort); 80 panner.setDisplaySize(2, 10);
78 }); 81 assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort);
79 82 assertTrue(panner.next());
80 TEST_F('CvoxPanStrategyUnitTest', 'WrappedPanning', function() { 83 assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort);
81 var panner = new cvox.WrappingPanStrategy(); 84 assertFalse(panner.next());
85 assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort);
86 assertTrue(panner.previous());
87 assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort);
88 assertFalse(panner.previous());
89 assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort);
90 });
91
92 TEST_F('CvoxPanStrategyUnitTest', 'WrappedPanningSingleLine', function() {
93 var panner = new cvox.PanStrategy();
94 panner.setPanStrategy(true);
82 95
83 // 30 cells with blank cells at positions 8, 22 and 26. 96 // 30 cells with blank cells at positions 8, 22 and 26.
84 var content = createArrayBuffer('01234567 9012345678901 345 789'); 97 var content = createArrayBuffer('11234567 9112345678911 345 789');
85 panner.setContent(content, 0); 98 panner.setContent('a', content, [], 0);
86 assertEqualsJSON({start: 0, end: 0}, panner.viewPort); 99 assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort);
87 assertFalse(panner.next()); 100 assertFalse(panner.next());
88 assertFalse(panner.previous()); 101 assertFalse(panner.previous());
89 102
90 panner.setDisplaySize(10); 103 panner.setDisplaySize(1, 10);
91 assertEqualsJSON({start: 0, end: 9}, panner.viewPort); 104 assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort);
92 assertTrue(panner.next()); 105 assertArrayBuffersEquals(createArrayBuffer('11234567 '),
93 assertEqualsJSON({start: 9, end: 19}, panner.viewPort); 106 panner.getCurrentBrailleViewportContents());
94 assertTrue(panner.next()); 107 assertTrue(panner.next());
95 assertEqualsJSON({start: 19, end: 27}, panner.viewPort); 108 assertEqualsJSON({firstRow: 1, lastRow: 1}, panner.viewPort);
96 assertTrue(panner.next()); 109 assertArrayBuffersEquals(createArrayBuffer('9112345678'),
97 assertEqualsJSON({start: 27, end: 30}, panner.viewPort); 110 panner.getCurrentBrailleViewportContents());
98 assertFalse(panner.next()); 111 assertTrue(panner.next());
99 assertEqualsJSON({start: 27, end: 30}, panner.viewPort); 112 assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort);
100 assertTrue(panner.previous()); 113 assertArrayBuffersEquals(createArrayBuffer('911 345 '),
101 assertEqualsJSON({start: 23, end: 27}, panner.viewPort); 114 panner.getCurrentBrailleViewportContents());
102 assertTrue(panner.previous()); 115 assertTrue(panner.next());
103 assertEqualsJSON({start: 13, end: 23}, panner.viewPort); 116 assertEqualsJSON({firstRow: 3, lastRow: 3}, panner.viewPort);
104 assertTrue(panner.previous()); 117 assertArrayBuffersEquals(createArrayBuffer('789'),
105 assertEqualsJSON({start: 9, end: 13}, panner.viewPort); 118 panner.getCurrentBrailleViewportContents());
106 assertTrue(panner.previous()); 119 assertFalse(panner.next());
107 assertEqualsJSON({start: 0, end: 9}, panner.viewPort); 120 assertEqualsJSON({firstRow: 3, lastRow: 3}, panner.viewPort);
108 121 assertTrue(panner.previous());
109 panner.setContent(content, 21); 122 assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort);
110 assertEqualsJSON({start: 19, end: 27}, panner.viewPort); 123 assertTrue(panner.previous());
111 124 assertEqualsJSON({firstRow: 1, lastRow: 1}, panner.viewPort);
112 panner.setContent(content, 30); 125 assertTrue(panner.previous());
113 assertEqualsJSON({start: 27, end: 30}, panner.viewPort); 126 assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort);
114 127 assertFalse(panner.previous());
115 panner.setDisplaySize(8); 128
116 assertEqualsJSON({start: 23, end: 30}, panner.viewPort); 129 panner.setContent('a', content, [], 21);
117 130 assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort);
118 panner.viewPort_ = {start: 2, end: 10}; 131 assertArrayBuffersEquals(createArrayBuffer('911 345 '),
119 assertTrue(panner.previous()); 132 panner.getCurrentBrailleViewportContents());
120 assertEqualsJSON({start: 0, end: 8}, panner.viewPort); 133
121 }); 134 panner.setContent('a', content, [], 30);
135 assertEqualsJSON({firstRow: 3, lastRow: 3}, panner.viewPort);
136 assertArrayBuffersEquals(createArrayBuffer('789'),
137 panner.getCurrentBrailleViewportContents());
138
139 panner.setDisplaySize(1, 8);
140 assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort);
141 assertArrayBuffersEquals(createArrayBuffer('11234567'),
142 panner.getCurrentBrailleViewportContents());
143 });
144
145 TEST_F('CvoxPanStrategyUnitTest', 'WrappedPanningMultiline', function() {
146 var panner = new cvox.PanStrategy();
147 panner.setPanStrategy(true);
148
149 // 30 cells with blank cells at positions 8, 22 and 26.
150 var content = createArrayBuffer('11234567 9112345678911 345 789');
151 panner.setContent('a', content, [], 0);
152
153 panner.setDisplaySize(2, 10);
154 assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort);
155 assertArrayBuffersEquals(createArrayBuffer('11234567 9112345678'),
156 panner.getCurrentBrailleViewportContents());
157 assertTrue(panner.next());
158 assertEqualsJSON({firstRow: 2, lastRow: 3}, panner.viewPort);
159 assertArrayBuffersEquals(createArrayBuffer('911 345 789'),
160 panner.getCurrentBrailleViewportContents());
161 assertFalse(panner.next());
162 assertEqualsJSON({firstRow: 2, lastRow: 3}, panner.viewPort);
163 assertArrayBuffersEquals(createArrayBuffer('911 345 789'),
164 panner.getCurrentBrailleViewportContents());
165 assertTrue(panner.previous());
166 assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort);
167 assertArrayBuffersEquals(createArrayBuffer('11234567 9112345678'),
168 panner.getCurrentBrailleViewportContents());
169 assertFalse(panner.previous());
170 assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort);
171 assertArrayBuffersEquals(createArrayBuffer('11234567 9112345678'),
172 panner.getCurrentBrailleViewportContents());
173 });
174
175 TEST_F('CvoxPanStrategyUnitTest', 'FixedSetContent', function() {
176 var panner = new cvox.PanStrategy();
177 panner.setPanStrategy(false);
178
179 var textContent = "ABCDE FGHI"
180 var translatedContent = createArrayBuffer('11234 6789');
181 var mapping = [0,1,2,3,4,5,6,7,8,9];
182 panner.setDisplaySize(1, 5);
183 panner.setContent(textContent, translatedContent,
184 mapping, 0);
185 var expectedBufferValue = translatedContent;
186 assertArrayBuffersEquals(expectedBufferValue, panner.fixedBuffer_);
187 var expectedMappingValue = mapping;
188 assertArraysEquals(expectedMappingValue, panner.brailleToText);
189 });
190
191 TEST_F('CvoxPanStrategyUnitTest', 'WrappedSetContent', function() {
192 var panner = new cvox.PanStrategy();
193 panner.setPanStrategy(true);
194
195 // When first word is bigger than column size. (Don't wrap word)
196 var textContent = "ABCDE"
197 var translatedContent = createArrayBuffer('11234');
198 var mapping = [0,1,2,3,4];
199 panner.setDisplaySize(1, 4);
200 panner.setContent(textContent, translatedContent,
201 mapping, 0);
202 var expectedBufferValue = translatedContent;
203 assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_);
204 var expectedMappingValue = mapping;
205 assertArraysEquals(expectedMappingValue, panner.brailleToText);
206
207 // When first word is equal to column size.
208 // (We expect space to be removed on next line)
209 textContent = "ABCDE FGHI"
210 translatedContent = createArrayBuffer('11234 6789');
211 var mapping = [0,1,2,3,4,5,6,7,8,9];
212 panner.setDisplaySize(1, 5);
213 panner.setContent(textContent, translatedContent,
214 mapping, 0);
215 expectedBufferValue = createArrayBuffer('112346789');
216 assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_);
217 expectedMappingValue = [0,1,2,3,4,6,7,8,9];
218 assertArraysEquals(expectedMappingValue, panner.brailleToText);
219
220 // When first word is equal to column size + 1. (Space stays)
221 panner.setDisplaySize(1, 6);
222 expectedBufferValue = createArrayBuffer('11234 6789');
223 assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_);
224 expectedMappingValue = mapping;
225 assertArraysEquals(expectedMappingValue, panner.brailleToText);
226
227 // When first word is smaller than column size but second word is too big
228 // to fit the same line. (Pad that line, move second word to next line)
229 panner.setDisplaySize(1, 7);
230 expectedBufferValue = createArrayBuffer('11234 6789');
231 assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_);
232 expectedMappingValue = [0,1,2,3,4,5,5,6,7,8,9];
233 assertArraysEquals(expectedMappingValue, panner.brailleToText);
234
235 // Test all excess spaces are removed.
236 panner.setDisplaySize(1, 6);
237 textContent = "ABCDEF GHI"
238 translatedContent = createArrayBuffer('112345 789');
239 mapping = [0,1,2,3,4,5,6,7,7,7,7,7,8,9,10];
240 panner.setContent(textContent, translatedContent,
241 mapping, 0);
242 expectedBufferValue = createArrayBuffer('112345789');
243 assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_);
244 expectedMappingValue = [0,1,2,3,4,5,7,8,9];
245 assertArraysEquals(expectedMappingValue, panner.brailleToText);
246 });
247
248 TEST_F('CvoxPanStrategyUnitTest', 'getCurrentTextViewportContents', function() {
249 var panner = new cvox.PanStrategy();
250 panner.setPanStrategy(true);
251
252 // 30 cells with blank cells at positions 8, 22 and 26.
253 var content = createArrayBuffer('11234567 9112345678911 345 789');
254 var mapping = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
255 21,22,23,24,25,26,27,28,29];
256 panner.setContent('11234567 9112345678911 345 789', content, mapping, 0);
257 assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort);
258 assertFalse(panner.next());
259 assertFalse(panner.previous());
260
261 panner.setDisplaySize(1, 10);
262 assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort);
263 assertEquals('11234567 ', panner.getCurrentTextViewportContents());
264 panner.next();
265 assertEquals('9112345678', panner.getCurrentTextViewportContents());
266 panner.next();
267 assertEquals('911 345 ', panner.getCurrentTextViewportContents());
268 panner.next();
269 assertEquals('789', panner.getCurrentTextViewportContents());
270 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698