| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 * Base class for walker test fixtures. | 8 * Base class for walker test fixtures. |
| 9 * @constructor | 9 * @constructor |
| 10 * @extends {ChromeVoxUnitTestBase} | 10 * @extends {ChromeVoxUnitTestBase} |
| 11 */ | 11 */ |
| 12 function CvoxWalkerUnitTestBase() {} | 12 function CvoxWalkerUnitTestBase() {} |
| 13 | 13 |
| 14 CvoxWalkerUnitTestBase.prototype = { | 14 CvoxWalkerUnitTestBase.prototype = { |
| 15 __proto__: ChromeVoxUnitTestBase.prototype, | 15 __proto__: ChromeVoxUnitTestBase.prototype, |
| 16 | 16 |
| 17 /** @override */ | 17 /** @override */ |
| 18 closureModuleDeps: [ | 18 closureModuleDeps: ['TestMsgs', 'cvox.CursorSelection'], |
| 19 'TestMsgs', | |
| 20 'cvox.CursorSelection' | |
| 21 ], | |
| 22 | 19 |
| 23 /** | 20 /** |
| 24 * Common set up for all walker test cases. | 21 * Common set up for all walker test cases. |
| 25 */ | 22 */ |
| 26 setUp: function() { | 23 setUp: function() { |
| 27 // Needed for getDescription and getGranularityMsg. | 24 // Needed for getDescription and getGranularityMsg. |
| 28 Msgs = TestMsgs; | 25 Msgs = TestMsgs; |
| 29 | 26 |
| 30 // Delete all nodes in the body. | 27 // Delete all nodes in the body. |
| 31 while (document.body.hasChildNodes()) { | 28 while (document.body.hasChildNodes()) { |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 * @type {Array.string} | 152 * @type {Array.string} |
| 156 * @const | 153 * @const |
| 157 */ | 154 */ |
| 158 CvoxWalkerUnitTestBase.CMD_WHITELIST = ['next', 'sync', 'nextRow', 'nextCol']; | 155 CvoxWalkerUnitTestBase.CMD_WHITELIST = ['next', 'sync', 'nextRow', 'nextCol']; |
| 159 | 156 |
| 160 /** | 157 /** |
| 161 * Whitelist for the properties that can be asserted with go(). | 158 * Whitelist for the properties that can be asserted with go(). |
| 162 * @type {Array.string} | 159 * @type {Array.string} |
| 163 * @const | 160 * @const |
| 164 */ | 161 */ |
| 165 CvoxWalkerUnitTestBase.DESC_WHITELIST = ['selText', 'selNodeId', | 162 CvoxWalkerUnitTestBase.DESC_WHITELIST = [ |
| 166 'selParentNodeId', 'selStartIndex', 'selEndIndex', 'selReversed', 'descText', | 163 'selText', 'selNodeId', 'selParentNodeId', 'selStartIndex', 'selEndIndex', |
| 167 'descContext', 'descAnnotation', 'descUserValue', 'descPersonality']; | 164 'selReversed', 'descText', 'descContext', 'descAnnotation', 'descUserValue', |
| 165 'descPersonality' |
| 166 ]; |
| 168 | 167 |
| 169 /** | 168 /** |
| 170 * Adds common walker tests | 169 * Adds common walker tests |
| 171 * @param {string} testFixture Name of the test fixture class. | 170 * @param {string} testFixture Name of the test fixture class. |
| 172 */ | 171 */ |
| 173 CvoxWalkerUnitTestBase.addCommonTests = function(testFixture) { | 172 CvoxWalkerUnitTestBase.addCommonTests = function(testFixture) { |
| 174 /** | 173 /** |
| 175 * Ensures that syncing to the beginning and ends of the page return | 174 * Ensures that syncing to the beginning and ends of the page return |
| 176 * not null. | 175 * not null. |
| 177 */ | 176 */ |
| 178 TEST_F(testFixture, 'testSyncToPage', function() { | 177 TEST_F(testFixture, 'testSyncToPage', function() { |
| 179 this.loadDoc(function() {/*! | 178 this.loadDoc(function() { /*! |
| 180 <div><p id="a">a</p></div> | 179 <div><p id="a">a</p></div> |
| 181 */}); | 180 */ }); |
| 182 var ret = this.walker.begin(); | 181 var ret = this.walker.begin(); |
| 183 assertNotEquals(null, ret); | 182 assertNotEquals(null, ret); |
| 184 ret = this.walker.begin({reversed: true}); | 183 ret = this.walker.begin({reversed: true}); |
| 185 assertNotEquals(null, ret); | 184 assertNotEquals(null, ret); |
| 186 }); | 185 }); |
| 187 | 186 |
| 188 /** | 187 /** |
| 189 * Ensures that sync(sync(sel)) = sync(sel) | 188 * Ensures that sync(sync(sel)) = sync(sel) |
| 190 * TODO (stoarca): The interfaces are not frozen yet. In particular, | 189 * TODO (stoarca): The interfaces are not frozen yet. In particular, |
| 191 * for TableWalker, sync can return null. Override if it doesn't work yet. | 190 * for TableWalker, sync can return null. Override if it doesn't work yet. |
| 192 */ | 191 */ |
| 193 TEST_F(testFixture, 'testSyncInvariant', function() { | 192 TEST_F(testFixture, 'testSyncInvariant', function() { |
| 194 this.loadDoc(function() {/*! | 193 this.loadDoc(function() { /*! |
| 195 <div id="outer"> | 194 <div id="outer"> |
| 196 <p id="a">a</p> | 195 <p id="a">a</p> |
| 197 <p id="b">b</p> | 196 <p id="b">b</p> |
| 198 <p id="c">c</p> | 197 <p id="c">c</p> |
| 199 <p id="d">d</p> | 198 <p id="d">d</p> |
| 200 <h1 id="A">h1</h1> | 199 <h1 id="A">h1</h1> |
| 201 <p id="e">e</p> | 200 <p id="e">e</p> |
| 202 <h1 id="B">h1</h1> | 201 <h1 id="B">h1</h1> |
| 203 </div> | 202 </div> |
| 204 */}); | 203 */ }); |
| 205 var sel = cvox.CursorSelection.fromNode( | 204 var sel = cvox.CursorSelection.fromNode($('outer').firstChild); |
| 206 $('outer').firstChild); | |
| 207 var sync = this.walker.sync(sel); | 205 var sync = this.walker.sync(sel); |
| 208 var syncsync = this.walker.sync(sync); | 206 var syncsync = this.walker.sync(sync); |
| 209 assertEquals(true, sync.equals(syncsync)); | 207 assertEquals(true, sync.equals(syncsync)); |
| 210 | 208 |
| 211 sel = cvox.CursorSelection.fromNode($('a')); | 209 sel = cvox.CursorSelection.fromNode($('a')); |
| 212 sync = this.walker.sync(sel); | 210 sync = this.walker.sync(sel); |
| 213 syncsync = this.walker.sync(sync); | 211 syncsync = this.walker.sync(sync); |
| 214 assertEquals(true, sync.equals(syncsync)); | 212 assertEquals(true, sync.equals(syncsync)); |
| 215 | 213 |
| 216 sel = cvox.CursorSelection.fromNode($('e')); | 214 sel = cvox.CursorSelection.fromNode($('e')); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 229 */ | 227 */ |
| 230 TEST_F(testFixture, 'testEmptyBody', function() { | 228 TEST_F(testFixture, 'testEmptyBody', function() { |
| 231 var sel = cvox.CursorSelection.fromBody(); | 229 var sel = cvox.CursorSelection.fromBody(); |
| 232 | 230 |
| 233 // Testing for infinite loop. If one exists, this test will fail by timing | 231 // Testing for infinite loop. If one exists, this test will fail by timing |
| 234 // out. | 232 // out. |
| 235 var sync = this.walker.sync(sel); | 233 var sync = this.walker.sync(sel); |
| 236 var next = this.walker.next(sel); | 234 var next = this.walker.next(sel); |
| 237 }); | 235 }); |
| 238 }; | 236 }; |
| OLD | NEW |