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 |