| OLD | NEW |
| 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 }); |
| OLD | NEW |