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)); | |
|
David Tseng
2016/11/30 22:11:54
Add these to testing/assert_additions.js
Also, I
ultimatedbz
2016/12/07 23:40:43
Done.
| |
| 29 }, | |
| 21 }; | 30 }; |
| 22 | 31 |
| 23 /** | 32 /** |
| 24 * @param {string} content String representing the content with spaces | 33 * @param {string} content String representing the content with spaces |
| 25 * representing blank cells and any other character representing | 34 * representing blank cells and any other character representing |
| 26 * arbitrary non-blank cells. | 35 * arbitrary non-blank cells. |
| 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] != ' ' ? 1 : 0); |
| 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(); |
| 48 panner.setPanStrategy(false); | |
| 39 | 49 |
| 40 panner.setDisplaySize(0); | 50 panner.setDisplaySize(0, 0); |
| 41 panner.setContent(createArrayBuffer(''), 0); | 51 panner.setContent('', createArrayBuffer(''), [], 0); |
| 42 assertEqualsJSON({start: 0, end: 0}, panner.viewPort); | 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 var brailleToText = [0, 0, 0, 0, 0, 0,]; |
|
David Tseng
2016/11/30 22:11:55
Unused, remove.
ultimatedbz
2016/12/01 05:12:15
Done.
| |
| 49 assertEqualsJSON({start: 0, end: 0}, panner.viewPort); | 59 panner.setContent('a', translatedContent, [], 0); |
|
David Tseng
2016/11/30 22:11:54
If 'a' is unused, pass it as 'unused' to not set u
ultimatedbz
2016/12/01 05:12:15
Done.
| |
| 60 assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); | |
| 50 assertFalse(panner.next()); | 61 assertFalse(panner.next()); |
| 51 assertFalse(panner.previous()); | 62 assertFalse(panner.previous()); |
| 52 | 63 |
| 53 panner.setDisplaySize(10); | 64 panner.setDisplaySize(1, 10); |
| 54 assertEqualsJSON({start: 0, end: 10}, panner.viewPort); | 65 assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); |
|
David Tseng
2016/11/30 22:11:54
Assert column size is 10 to keep the spirit of the
ultimatedbz
2016/12/01 05:12:15
Done.
| |
| 55 assertTrue(panner.next()); | 66 assertTrue(panner.next()); |
| 56 assertEqualsJSON({start: 10, end: 20}, panner.viewPort); | 67 assertEqualsJSON({firstRow: 1, lastRow: 1}, panner.viewPort); |
| 57 assertTrue(panner.next()); | 68 assertTrue(panner.next()); |
| 58 assertEqualsJSON({start: 20, end: 25}, panner.viewPort); | 69 assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort); |
| 59 assertFalse(panner.next()); | 70 assertFalse(panner.next()); |
| 60 assertEqualsJSON({start: 20, end: 25}, panner.viewPort); | 71 assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort); |
| 61 assertTrue(panner.previous()); | 72 assertTrue(panner.previous()); |
| 62 assertEqualsJSON({start: 10, end: 20}, panner.viewPort); | 73 assertEqualsJSON({firstRow: 1, lastRow: 1}, panner.viewPort); |
| 63 assertTrue(panner.previous()); | 74 assertTrue(panner.previous()); |
| 64 assertEqualsJSON({start: 0, end: 10}, panner.viewPort); | 75 assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); |
| 65 | 76 |
| 66 panner.setContent(content, 19); | 77 panner.setContent('a', translatedContent, [], 19); |
| 67 assertEqualsJSON({start: 10, end: 20}, panner.viewPort); | 78 assertEqualsJSON({firstRow: 1, lastRow: 1}, panner.viewPort); |
| 68 | 79 |
| 69 panner.setContent(content, 20); | 80 panner.setContent('a', translatedContent, [], 20); |
| 70 assertEqualsJSON({start: 20, end: 25}, panner.viewPort); | 81 assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort); |
| 71 | 82 |
| 72 panner.setDisplaySize(8); | 83 panner.setDisplaySize(1, 8); |
| 73 assertEqualsJSON({start: 16, end: 24}, panner.viewPort); | 84 assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); |
| 74 | 85 |
| 75 panner.viewPort_ = {start: 2, end: 10}; | 86 // Test Multi-line Panning. |
| 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); | |
| 76 assertTrue(panner.previous()); | 93 assertTrue(panner.previous()); |
| 77 assertEqualsJSON({start: 0, end: 8}, panner.viewPort); | 94 assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort); |
| 95 assertFalse(panner.previous()); | |
| 96 assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort); | |
| 97 | |
|
David Tseng
2016/11/30 22:11:55
nit: remove
ultimatedbz
2016/12/01 05:12:15
Done.
| |
| 78 }); | 98 }); |
| 79 | 99 |
| 80 TEST_F('CvoxPanStrategyUnitTest', 'WrappedPanning', function() { | 100 TEST_F('CvoxPanStrategyUnitTest', 'WrappedPanning', function() { |
| 81 var panner = new cvox.WrappingPanStrategy(); | 101 var panner = new cvox.PanStrategy(); |
| 102 panner.setPanStrategy(true); | |
| 82 | 103 |
| 83 // 30 cells with blank cells at positions 8, 22 and 26. | 104 // 30 cells with blank cells at positions 8, 22 and 26. |
| 84 var content = createArrayBuffer('01234567 9012345678901 345 789'); | 105 var content = createArrayBuffer('01234567 9012345678901 345 789'); |
| 85 panner.setContent(content, 0); | 106 panner.setContent('a', content, [], 0); |
| 86 assertEqualsJSON({start: 0, end: 0}, panner.viewPort); | 107 assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); |
| 87 assertFalse(panner.next()); | 108 assertFalse(panner.next()); |
| 88 assertFalse(panner.previous()); | 109 assertFalse(panner.previous()); |
| 89 | 110 |
| 90 panner.setDisplaySize(10); | 111 panner.setDisplaySize(1, 10); |
| 91 assertEqualsJSON({start: 0, end: 9}, panner.viewPort); | 112 assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); |
| 92 assertTrue(panner.next()); | 113 assertTrue(panner.next()); |
| 93 assertEqualsJSON({start: 9, end: 19}, panner.viewPort); | 114 assertEqualsJSON({firstRow: 1, lastRow: 1}, panner.viewPort); |
| 94 assertTrue(panner.next()); | 115 assertTrue(panner.next()); |
| 95 assertEqualsJSON({start: 19, end: 27}, panner.viewPort); | 116 assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort); |
| 96 assertTrue(panner.next()); | 117 assertTrue(panner.next()); |
| 97 assertEqualsJSON({start: 27, end: 30}, panner.viewPort); | 118 assertEqualsJSON({firstRow: 3, lastRow: 3}, panner.viewPort); |
| 98 assertFalse(panner.next()); | 119 assertFalse(panner.next()); |
| 99 assertEqualsJSON({start: 27, end: 30}, panner.viewPort); | 120 assertEqualsJSON({firstRow: 3, lastRow: 3}, panner.viewPort); |
| 100 assertTrue(panner.previous()); | 121 assertTrue(panner.previous()); |
| 101 assertEqualsJSON({start: 23, end: 27}, panner.viewPort); | 122 assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort); |
| 102 assertTrue(panner.previous()); | 123 assertTrue(panner.previous()); |
| 103 assertEqualsJSON({start: 13, end: 23}, panner.viewPort); | 124 assertEqualsJSON({firstRow: 1, lastRow: 1}, panner.viewPort); |
| 104 assertTrue(panner.previous()); | 125 assertTrue(panner.previous()); |
| 105 assertEqualsJSON({start: 9, end: 13}, panner.viewPort); | 126 assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); |
|
David Tseng
2016/11/30 22:21:52
I would also test the individual slices and assert
ultimatedbz
2016/12/01 05:12:15
The current function 'createArrayBuffer()' takes i
David Tseng
2016/12/07 16:46:36
Ok.
The only concern was that we're just testing
ultimatedbz
2016/12/07 23:39:25
Acknowledged.
| |
| 127 assertFalse(panner.previous()); | |
| 128 | |
| 129 panner.setContent('a', content, [], 21); | |
| 130 assertEqualsJSON({firstRow: 2, lastRow: 2}, panner.viewPort); | |
| 131 | |
| 132 panner.setContent('a', content, [], 30); | |
| 133 assertEqualsJSON({firstRow: 3, lastRow: 3}, panner.viewPort); | |
| 134 | |
| 135 panner.setDisplaySize(1, 8); | |
| 136 assertEqualsJSON({firstRow: 0, lastRow: 0}, panner.viewPort); | |
| 137 | |
| 138 // Test Multi-line Panning. | |
| 139 panner.setDisplaySize(2, 10); | |
| 140 assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort); | |
| 141 assertTrue(panner.next()); | |
| 142 assertEqualsJSON({firstRow: 2, lastRow: 3}, panner.viewPort); | |
| 143 assertFalse(panner.next()); | |
| 144 assertEqualsJSON({firstRow: 2, lastRow: 3}, panner.viewPort); | |
| 106 assertTrue(panner.previous()); | 145 assertTrue(panner.previous()); |
| 107 assertEqualsJSON({start: 0, end: 9}, panner.viewPort); | 146 assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort); |
| 147 assertFalse(panner.previous()); | |
| 148 assertEqualsJSON({firstRow: 0, lastRow: 1}, panner.viewPort); | |
| 149 }); | |
| 108 | 150 |
| 109 panner.setContent(content, 21); | 151 TEST_F('CvoxPanStrategyUnitTest', 'FixedSetContent', function() { |
| 110 assertEqualsJSON({start: 19, end: 27}, panner.viewPort); | 152 var panner = new cvox.PanStrategy(); |
| 153 panner.setPanStrategy(false); | |
| 111 | 154 |
| 112 panner.setContent(content, 30); | 155 var textContent = "ABCDE FGHI" |
| 113 assertEqualsJSON({start: 27, end: 30}, panner.viewPort); | 156 var translatedContent = createArrayBuffer('01234 6789'); |
| 157 var mapping = [0,1,2,3,4,5,6,7,8,9]; | |
| 158 panner.setDisplaySize(1, 5); | |
| 159 panner.setContent(textContent, translatedContent, | |
| 160 mapping, 0); | |
| 161 var expectedBufferValue = translatedContent; | |
| 162 this.assertArrayBuffersEquals(expectedBufferValue, panner.fixedBuffer_); | |
| 163 var expectedMappingValue = mapping; | |
| 164 this.assertArraysEquals(expectedMappingValue, panner.brailleToText); | |
| 165 }); | |
| 114 | 166 |
| 115 panner.setDisplaySize(8); | 167 TEST_F('CvoxPanStrategyUnitTest', 'WrappedSetContent', function() { |
| 116 assertEqualsJSON({start: 23, end: 30}, panner.viewPort); | 168 var panner = new cvox.PanStrategy(); |
| 169 panner.setPanStrategy(true); | |
| 117 | 170 |
| 118 panner.viewPort_ = {start: 2, end: 10}; | 171 // When first word is bigger than column size. (Don't wrap word) |
| 119 assertTrue(panner.previous()); | 172 var textContent = "ABCDE" |
| 120 assertEqualsJSON({start: 0, end: 8}, panner.viewPort); | 173 var translatedContent = createArrayBuffer('01234'); |
| 174 var mapping = [0,1,2,3,4]; | |
| 175 panner.setDisplaySize(1, 4); | |
| 176 panner.setContent(textContent, translatedContent, | |
| 177 mapping, 0); | |
| 178 var expectedBufferValue = translatedContent; | |
| 179 this.assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_); | |
| 180 var expectedMappingValue = mapping; | |
| 181 this.assertArraysEquals(expectedMappingValue, panner.brailleToText); | |
| 182 | |
| 183 // When first word is equal to column size. | |
| 184 // (We expect space to be removed on next line) | |
| 185 textContent = "ABCDE FGHI" | |
| 186 translatedContent = createArrayBuffer('01234 6789'); | |
| 187 var mapping = [0,1,2,3,4,5,6,7,8,9]; | |
| 188 panner.setDisplaySize(1, 5); | |
| 189 panner.setContent(textContent, translatedContent, | |
| 190 mapping, 0); | |
| 191 expectedBufferValue = createArrayBuffer('012346789'); | |
| 192 this.assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_); | |
| 193 expectedMappingValue = [0,1,2,3,4,6,7,8,9]; | |
| 194 this.assertArraysEquals(expectedMappingValue, panner.brailleToText); | |
| 195 | |
| 196 // When first word is equal to column size + 1. (Space stays) | |
| 197 panner.setDisplaySize(1, 6); | |
| 198 expectedBufferValue = createArrayBuffer('01234 6789'); | |
| 199 this.assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_); | |
| 200 expectedMappingValue = mapping; | |
| 201 this.assertArraysEquals(expectedMappingValue, panner.brailleToText); | |
| 202 | |
| 203 // When first word is smaller than column size but second word is too big | |
| 204 // to fit the same line. (Pad that line, move second word to next line) | |
| 205 panner.setDisplaySize(1, 7); | |
| 206 expectedBufferValue = createArrayBuffer('01234 6789'); | |
| 207 this.assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_); | |
| 208 expectedMappingValue = [0,1,2,3,4,5,5,6,7,8,9]; | |
| 209 this.assertArraysEquals(expectedMappingValue, panner.brailleToText); | |
| 210 | |
| 211 // Test all excess spaces are removed. | |
| 212 panner.setDisplaySize(1, 6); | |
| 213 textContent = "ABCDEF GHI" | |
| 214 translatedContent = createArrayBuffer('012345 789'); | |
| 215 mapping = [0,1,2,3,4,5,6,7,7,7,7,7,8,9,10]; | |
| 216 panner.setContent(textContent, translatedContent, | |
| 217 mapping, 0); | |
| 218 expectedBufferValue = createArrayBuffer('012345789'); | |
| 219 this.assertArrayBuffersEquals(expectedBufferValue, panner.wrappedBuffer_); | |
| 220 expectedMappingValue = [0,1,2,3,4,5,7,8,9]; | |
| 221 this.assertArraysEquals(expectedMappingValue, panner.brailleToText); | |
|
David Tseng
2016/11/30 22:21:52
I would also add unit tests to exercise the new pu
ultimatedbz
2016/12/01 05:12:15
I believe that by testing for the current slices a
David Tseng
2016/12/07 16:46:36
Sgtm
For organizational purposes, one test per fu
| |
| 121 }); | 222 }); |
| OLD | NEW |