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

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

Powered by Google App Engine
This is Rietveld 408576698