| OLD | NEW |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 /** | 5 /** |
| 6 * Test fixture for tree_walker.js. | 6 * Test fixture for tree_walker.js. |
| 7 * @constructor | 7 * @constructor |
| 8 * @extends {testing.Test} | 8 * @extends {testing.Test} |
| 9 */ | 9 */ |
| 10 function AutomationTreeWalkerUnitTest () { | 10 function AutomationTreeWalkerUnitTest () { |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 return { | 69 return { |
| 70 root: root, | 70 root: root, |
| 71 middle1: middle1, | 71 middle1: middle1, |
| 72 middle2: middle2, | 72 middle2: middle2, |
| 73 leaf1: leaf1, | 73 leaf1: leaf1, |
| 74 leaf2: leaf2, | 74 leaf2: leaf2, |
| 75 leaf3: leaf3, | 75 leaf3: leaf3, |
| 76 leaf4: leaf4, | 76 leaf4: leaf4, |
| 77 leaf5: leaf5 | 77 leaf5: leaf5 |
| 78 }; | 78 }; |
| 79 }, |
| 80 |
| 81 getDefaultRestrictions: function() { |
| 82 return { |
| 83 leaf: function(node) { |
| 84 return false; |
| 85 }, |
| 86 visit: function(node) { |
| 87 return node.state.focusable === true; |
| 88 }, |
| 89 } |
| 79 } | 90 } |
| 80 }; | 91 }; |
| 81 | 92 |
| 82 TEST_F('AutomationTreeWalkerUnitTest', 'MoveToNode', function() { | 93 TEST_F('AutomationTreeWalkerUnitTest', 'MoveToNode', function() { |
| 83 chrome.automation = { | 94 chrome.automation = { |
| 84 RoleType: {DESKTOP: 'desktop', TAB: 'tab', TAB_LIST: 'tabList'}, | 95 RoleType: {DESKTOP: 'desktop', TAB: 'tab', TAB_LIST: 'tabList'}, |
| 85 StateType: {FOCUSABLE: 'focusable', OFFSCREEN: 'offscreen'} | 96 StateType: {FOCUSABLE: 'focusable', OFFSCREEN: 'offscreen'} |
| 86 }; | 97 }; |
| 87 | 98 |
| 88 let t = this.getSampleTree(); | 99 let t = this.getSampleTree(); |
| 89 let treeWalker = new AutomationTreeWalker(); | 100 let treeWalker = |
| 101 new AutomationTreeWalker(t.root, t.root, this.getDefaultRestrictions()); |
| 90 | 102 |
| 91 let interesting = {focusable: true}; | 103 let interesting = {focusable: true}; |
| 92 t.leaf1.state = interesting; | 104 t.leaf1.state = interesting; |
| 93 t.leaf2.state = interesting; | 105 t.leaf2.state = interesting; |
| 94 t.middle2.state = interesting; | 106 t.middle2.state = interesting; |
| 95 t.leaf5.state = interesting; | 107 t.leaf5.state = interesting; |
| 96 | 108 |
| 97 // Move to next node. | 109 // Move to next node. |
| 98 assertEquals(t.leaf1, treeWalker.moveToNode(t.root, t.root, true)); | 110 assertEquals(t.leaf1, treeWalker.moveToNode(true)); |
| 99 assertEquals(t.leaf1, treeWalker.moveToNode(t.middle1, t.root, true)); | 111 assertEquals(t.leaf2, treeWalker.moveToNode(true)); |
| 100 assertEquals(t.leaf2, treeWalker.moveToNode(t.leaf1, t.root, true)); | 112 assertEquals(t.middle2, treeWalker.moveToNode(true)); |
| 101 assertEquals(t.middle2, treeWalker.moveToNode(t.leaf2, t.root, true)); | 113 assertEquals(t.leaf5, treeWalker.moveToNode(true)); |
| 102 assertEquals(t.middle2, treeWalker.moveToNode(t.leaf3, t.root, true)); | 114 assertEquals(t.leaf1, treeWalker.moveToNode(true)); |
| 103 assertEquals(t.leaf5, treeWalker.moveToNode(t.middle2, t.root, true)); | |
| 104 assertEquals(t.leaf5, treeWalker.moveToNode(t.leaf4, t.root, true)); | |
| 105 assertEquals(t.leaf1, treeWalker.moveToNode(t.leaf5, t.root, true)); | |
| 106 | 115 |
| 107 // Move to previous node. | 116 // Move to previous node. |
| 108 assertEquals(t.middle2, treeWalker.moveToNode(t.leaf5, t.root, false)); | 117 assertEquals(t.leaf5, treeWalker.moveToNode(false)); |
| 109 assertEquals(t.middle2, treeWalker.moveToNode(t.leaf4, t.root, false)); | 118 assertEquals(t.middle2, treeWalker.moveToNode(false)); |
| 110 assertEquals(t.leaf2, treeWalker.moveToNode(t.middle2, t.root, false)); | 119 assertEquals(t.leaf2, treeWalker.moveToNode(false)); |
| 111 assertEquals(t.leaf2, treeWalker.moveToNode(t.leaf3, t.root, false)); | 120 assertEquals(t.leaf1, treeWalker.moveToNode(false)); |
| 112 assertEquals(t.leaf1, treeWalker.moveToNode(t.leaf2, t.root, false)); | 121 assertEquals(t.leaf5, treeWalker.moveToNode(false)); |
| 113 assertEquals(t.leaf5, treeWalker.moveToNode(t.leaf1, t.root, false)); | |
| 114 assertEquals(t.leaf5, treeWalker.moveToNode(t.middle1, t.root, false)); | |
| 115 assertEquals(t.leaf5, treeWalker.moveToNode(t.root, t.root, false)); | |
| 116 }); | 122 }); |
| 117 | 123 |
| 118 TEST_F('AutomationTreeWalkerUnitTest', 'GetNextNode', function() { | 124 TEST_F('AutomationTreeWalkerUnitTest', 'GetNextNode', function() { |
| 119 let t = this.getSampleTree(); | 125 let t = this.getSampleTree(); |
| 120 let treeWalker = new AutomationTreeWalker(); | 126 let treeWalker = |
| 127 new AutomationTreeWalker(t.root, t.root, this.getDefaultRestrictions()); |
| 121 | 128 |
| 122 let order = | 129 let order = |
| 123 [t.root, t.middle1, t.leaf1, t.leaf2, t.leaf3, | 130 [t.root, t.middle1, t.leaf1, t.leaf2, t.leaf3, |
| 124 t.middle2, t.leaf4, t.leaf5]; | 131 t.middle2, t.leaf4, t.leaf5]; |
| 125 let node = t.root; | 132 let node = t.root; |
| 126 for (let i = 0; i < order.length; i++) { | 133 for (let i = 0; i < order.length; i++) { |
| 127 assertEquals(order[i], node); | 134 assertEquals(order[i], node); |
| 128 node = treeWalker.getNextNode_(node); | 135 node = treeWalker.getNextNode_(node); |
| 129 } | 136 } |
| 130 assertEquals(undefined, node); | 137 assertEquals(undefined, node); |
| 131 }); | 138 }); |
| 132 | 139 |
| 133 TEST_F('AutomationTreeWalkerUnitTest', 'GetPreviousNode', function() { | 140 TEST_F('AutomationTreeWalkerUnitTest', 'GetPreviousNode', function() { |
| 134 let t = this.getSampleTree(); | 141 let t = this.getSampleTree(); |
| 135 let treeWalker = new AutomationTreeWalker(); | 142 let treeWalker = |
| 143 new AutomationTreeWalker(t.root, t.root, this.getDefaultRestrictions()); |
| 136 | 144 |
| 137 let order = | 145 let order = |
| 138 [t.leaf5, t.leaf4, t.middle2, t.leaf3, t.leaf2, | 146 [t.leaf5, t.leaf4, t.middle2, t.leaf3, t.leaf2, |
| 139 t.leaf1, t.middle1, t.root]; | 147 t.leaf1, t.middle1, t.root]; |
| 140 let node = t.leaf5; | 148 let node = t.leaf5; |
| 141 for (let i = 0; i < order.length; i++) { | 149 for (let i = 0; i < order.length; i++) { |
| 142 assertEquals(order[i], node); | 150 assertEquals(order[i], node); |
| 143 node = treeWalker.getPreviousNode_(node); | 151 node = treeWalker.getPreviousNode_(node); |
| 144 } | 152 } |
| 145 assertEquals(undefined, node); | 153 assertEquals(undefined, node); |
| 146 }); | 154 }); |
| 147 | 155 |
| 148 TEST_F('AutomationTreeWalkerUnitTest', 'GetYoungestDescendant', function() { | 156 TEST_F('AutomationTreeWalkerUnitTest', 'GetYoungestDescendant', function() { |
| 149 let t = this.getSampleTree(); | 157 let t = this.getSampleTree(); |
| 150 let treeWalker = new AutomationTreeWalker(); | 158 let treeWalker = |
| 159 new AutomationTreeWalker(t.root, t.root, this.getDefaultRestrictions()); |
| 151 | 160 |
| 152 assertEquals(t.leaf5, treeWalker.getYoungestDescendant_(t.root)); | 161 assertEquals(t.leaf5, treeWalker.getYoungestDescendant_(t.root)); |
| 153 assertEquals(t.leaf3, treeWalker.getYoungestDescendant_(t.middle1)); | 162 assertEquals(t.leaf3, treeWalker.getYoungestDescendant_(t.middle1)); |
| 154 assertEquals(t.leaf5, treeWalker.getYoungestDescendant_(t.middle2)); | 163 assertEquals(t.leaf5, treeWalker.getYoungestDescendant_(t.middle2)); |
| 155 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf1)); | 164 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf1)); |
| 156 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf2)); | 165 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf2)); |
| 157 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf3)); | 166 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf3)); |
| 158 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf4)); | 167 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf4)); |
| 159 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf5)); | 168 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf5)); |
| 160 }); | 169 }); |
| 161 | |
| 162 TEST_F('AutomationTreeWalkerUnitTest', 'IsInteresting', function() { | |
| 163 chrome.automation = { | |
| 164 RoleType: {DESKTOP: 'desktop', TAB: 'tab', TAB_LIST: 'tabList'}, | |
| 165 StateType: {FOCUSABLE: 'focusable', OFFSCREEN: 'offscreen'} | |
| 166 }; | |
| 167 | |
| 168 let treeWalker = new AutomationTreeWalker(); | |
| 169 | |
| 170 // Testing focusable. | |
| 171 let loc1 = {left: 0, top: 0, width: 0, height: 0}; | |
| 172 let node1 = {location: loc1, state: {}}; | |
| 173 let node2 = {location: loc1, state: {focusable: false}}; | |
| 174 let node3 = {location: loc1, state: {focusable: true}}; | |
| 175 assertFalse(treeWalker.isInteresting_(node1)); | |
| 176 assertFalse(treeWalker.isInteresting_(node2)); | |
| 177 assertTrue(treeWalker.isInteresting_(node3)); | |
| 178 | |
| 179 // Testing onscreen. | |
| 180 let loc2 = {left: -1, top: 0, width: 0, height: 0}; | |
| 181 let loc3 = {left: 0, top: -1, width: 0, height: 0}; | |
| 182 let node4 = {location: loc2, state: {focusable: true}}; | |
| 183 let node5 = {location: loc3, state: {focusable: true}}; | |
| 184 assertFalse(treeWalker.isInteresting_(node4)); | |
| 185 assertFalse(treeWalker.isInteresting_(node5)); | |
| 186 | |
| 187 // Testing if tab. | |
| 188 let node6 = {location: loc1, role: 'desktop', state: {}}; | |
| 189 let node7 = {location: loc1, role: 'tabList', state: {}}; | |
| 190 let node8 = | |
| 191 {location: loc1, parent: node7, root: node6, role: 'tab', state: {}}; | |
| 192 assertFalse(treeWalker.isInteresting_(node6)); | |
| 193 assertFalse(treeWalker.isInteresting_(node7)); | |
| 194 assertTrue(treeWalker.isInteresting_(node8)); | |
| 195 }); | |
| OLD | NEW |