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