Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(802)

Side by Side Diff: chrome/browser/resources/chromeos/switch_access/tree_walker_unittest.gtestjs

Issue 2866123002: Added unit tests for tree_walker and automation_predicate. (Closed)
Patch Set: Combined getSampleTree functions into one Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/resources/chromeos/switch_access/test_support.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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() {
11 testing.Test.call(this); 11 testing.Test.call(this);
12 }; 12 };
13 13
14 AutomationTreeWalkerUnitTest.prototype = { 14 AutomationTreeWalkerUnitTest.prototype = {
15 __proto__: testing.Test.prototype, 15 __proto__: testing.Test.prototype,
16 16
17 /** @override */ 17 /** @override */
18 extraLibraries: [ 18 extraLibraries: [
19 'test_support.js',
19 'tree_walker.js', 20 'tree_walker.js',
20 ], 21 ],
21 22
22 /** @override */ 23 /** @override */
23 browsePreload: DUMMY_URL, 24 browsePreload: DUMMY_URL,
24 25
25 getSampleTree: function() { 26 getSampleTree: function() {
26 let loc = {left: 0, top: 0, width: 0, height: 0}; 27 let loc = {left: 0, top: 0, width: 0, height: 0};
27 // root 28 // root
28 // middle1 29 // upper1
29 // leaf1 30 // middle1
30 // leaf2 31 // lower1
31 // leaf3 32 // leaf1
32 // middle2 33 // leaf2
33 // leaf4 34 // leaf3
34 // leaf5 35 // lower2
36 // leaf4
37 // leaf5
38 // middle2
39 // lower3
40 // leaf6
41 // leaf7
42 // upper2
43 // leaf8
35 let root = {location: loc, state: {}}; 44 let root = {location: loc, state: {}};
45 let upper1 = {location: loc, state: {}};
46 let upper2 = {location: loc, state: {}};
36 let middle1 = {location: loc, state: {}}; 47 let middle1 = {location: loc, state: {}};
37 let middle2 = {location: loc, state: {}}; 48 let middle2 = {location: loc, state: {}};
49 let lower1 = {location: loc, state: {}};
50 let lower2 = {location: loc, state: {}};
51 let lower3 = {location: loc, state: {}};
38 let leaf1 = {location: loc, state: {}}; 52 let leaf1 = {location: loc, state: {}};
39 let leaf2 = {location: loc, state: {}}; 53 let leaf2 = {location: loc, state: {}};
40 let leaf3 = {location: loc, state: {}}; 54 let leaf3 = {location: loc, state: {}};
41 let leaf4 = {location: loc, state: {}}; 55 let leaf4 = {location: loc, state: {}};
42 let leaf5 = {location: loc, state: {}}; 56 let leaf5 = {location: loc, state: {}};
57 let leaf6 = {location: loc, state: {}};
58 let leaf7 = {location: loc, state: {}};
59 let leaf8 = {location: loc, state: {}};
43 60
44 root.firstChild = middle1; 61 let ts = new TestSupport();
45 root.lastChild = middle2; 62 ts.setChildren(root, [upper1, upper2]);
46 63 ts.setChildren(upper1, [middle1, middle2]);
47 middle1.parent = root; 64 ts.setChildren(upper2, [leaf8]);
48 middle2.parent = root; 65 ts.setChildren(middle1, [lower1, lower2]);
49 middle1.nextSibling = middle2; 66 ts.setChildren(middle2, [lower3]);
50 middle2.previousSibling = middle1; 67 ts.setChildren(lower1, [leaf1, leaf2, leaf3]);
51 middle1.firstChild = leaf1; 68 ts.setChildren(lower2, [leaf4, leaf5]);
52 middle1.lastChild = leaf3; 69 ts.setChildren(lower3, [leaf6, leaf7]);
53 middle2.firstChild = leaf4;
54 middle2.lastChild = leaf5;
55
56 leaf1.parent = middle1;
57 leaf2.parent = middle1;
58 leaf3.parent = middle1;
59 leaf1.nextSibling = leaf2;
60 leaf2.previousSibling = leaf1;
61 leaf2.nextSibling = leaf3;
62 leaf3.previousSibling = leaf2;
63
64 leaf4.parent = middle2;
65 leaf5.parent = middle2;
66 leaf4.nextSibling = leaf5;
67 leaf5.previousSibling = leaf4;
68 70
69 return { 71 return {
70 root: root, 72 root: root,
73 upper1: upper1,
74 upper2: upper2,
71 middle1: middle1, 75 middle1: middle1,
72 middle2: middle2, 76 middle2: middle2,
77 lower1: lower1,
78 lower2: lower2,
79 lower3: lower3,
73 leaf1: leaf1, 80 leaf1: leaf1,
74 leaf2: leaf2, 81 leaf2: leaf2,
75 leaf3: leaf3, 82 leaf3: leaf3,
76 leaf4: leaf4, 83 leaf4: leaf4,
77 leaf5: leaf5 84 leaf5: leaf5,
85 leaf6: leaf6,
86 leaf7: leaf7,
87 leaf8: leaf8
78 }; 88 };
79 }, 89 },
80 90
81 getDefaultRestrictions: function() { 91 getDefaultRestrictions: function() {
82 return { 92 return {
83 leaf: function(node) { 93 leaf: function(node) {
84 return false; 94 return false;
85 }, 95 },
86 visit: function(node) { 96 visit: function(node) {
87 return node.state.focusable === true; 97 return node.state.focusable === true;
88 }, 98 },
89 } 99 }
100 },
101
102 getSubtreeRestrictions: function() {
103 return {
104 leaf: function(node) {
105 return node.state.leaf === true;
106 },
107 visit: function(node) {
108 return node.state.focusable === true;
109 },
110 }
90 } 111 }
91 }; 112 };
92 113
93 TEST_F('AutomationTreeWalkerUnitTest', 'MoveToNode', function() { 114 TEST_F('AutomationTreeWalkerUnitTest', 'MoveToNodeWholeTree', function() {
94 chrome.automation = { 115 let t = this.getSampleTree();
95 RoleType: {DESKTOP: 'desktop', TAB: 'tab', TAB_LIST: 'tabList'}, 116 let treeWalker = new AutomationTreeWalker(
96 StateType: {FOCUSABLE: 'focusable', OFFSCREEN: 'offscreen'} 117 t.root, t.root, this.getDefaultRestrictions());
97 };
98 118
99 let t = this.getSampleTree(); 119 t.root.state['focusable'] = true;
100 let treeWalker = 120 t.middle1.state['focusable'] = true;
101 new AutomationTreeWalker(t.root, t.root, this.getDefaultRestrictions()); 121 t.leaf1.state['focusable'] = true;
102 122 t.leaf2.state['focusable'] = true;
103 let interesting = {focusable: true}; 123 t.leaf5.state['focusable'] = true;
104 t.leaf1.state = interesting; 124 t.lower3.state['focusable'] = true;
105 t.leaf2.state = interesting; 125 t.leaf6.state['focusable'] = true;
106 t.middle2.state = interesting; 126 t.upper2.state['focusable'] = true;
107 t.leaf5.state = interesting; 127 t.leaf8.state['focusable'] = true;
108 128
109 // Move to next node. 129 // Move to next node.
130 assertEquals(t.middle1, treeWalker.moveToNode(true));
110 assertEquals(t.leaf1, treeWalker.moveToNode(true)); 131 assertEquals(t.leaf1, treeWalker.moveToNode(true));
111 assertEquals(t.leaf2, treeWalker.moveToNode(true)); 132 assertEquals(t.leaf2, treeWalker.moveToNode(true));
112 assertEquals(t.middle2, treeWalker.moveToNode(true));
113 assertEquals(t.leaf5, treeWalker.moveToNode(true)); 133 assertEquals(t.leaf5, treeWalker.moveToNode(true));
114 assertEquals(t.leaf1, treeWalker.moveToNode(true)); 134 assertEquals(t.lower3, treeWalker.moveToNode(true));
135 assertEquals(t.leaf6, treeWalker.moveToNode(true));
136 assertEquals(t.upper2, treeWalker.moveToNode(true));
137 assertEquals(t.leaf8, treeWalker.moveToNode(true));
138 assertEquals(t.root, treeWalker.moveToNode(true));
139 assertEquals(t.middle1, treeWalker.moveToNode(true));
115 140
116 // Move to previous node. 141 // Move to previous node.
142 assertEquals(t.root, treeWalker.moveToNode(false));
143 assertEquals(t.leaf8, treeWalker.moveToNode(false));
144 assertEquals(t.upper2, treeWalker.moveToNode(false));
145 assertEquals(t.leaf6, treeWalker.moveToNode(false));
146 assertEquals(t.lower3, treeWalker.moveToNode(false));
117 assertEquals(t.leaf5, treeWalker.moveToNode(false)); 147 assertEquals(t.leaf5, treeWalker.moveToNode(false));
118 assertEquals(t.middle2, treeWalker.moveToNode(false));
119 assertEquals(t.leaf2, treeWalker.moveToNode(false)); 148 assertEquals(t.leaf2, treeWalker.moveToNode(false));
120 assertEquals(t.leaf1, treeWalker.moveToNode(false)); 149 assertEquals(t.leaf1, treeWalker.moveToNode(false));
121 assertEquals(t.leaf5, treeWalker.moveToNode(false)); 150 assertEquals(t.middle1, treeWalker.moveToNode(false));
151 });
152
153 TEST_F('AutomationTreeWalkerUnitTest', 'MoveToNodeInSubtree', function() {
154 let t = this.getSampleTree();
155 let treeWalker = new AutomationTreeWalker(
156 t.upper1, t.upper1, this.getSubtreeRestrictions());
157
158 t.lower2.state['leaf'] = true;
159 t.lower3.state['leaf'] = true;
160
161 t.root.state['focusable'] = true;
162 t.middle1.state['focusable'] = true;
163 t.leaf1.state['focusable'] = true;
164 t.leaf2.state['focusable'] = true;
165 t.leaf5.state['focusable'] = true;
166 t.lower3.state['focusable'] = true;
167 t.leaf6.state['focusable'] = true;
168 t.upper2.state['focusable'] = true;
169 t.leaf8.state['focusable'] = true;
170
171 // Move to next node.
172 assertEquals(t.middle1, treeWalker.moveToNode(true));
173 assertEquals(t.leaf1, treeWalker.moveToNode(true));
174 assertEquals(t.leaf2, treeWalker.moveToNode(true));
175 assertEquals(t.lower3, treeWalker.moveToNode(true));
176 assertEquals(t.middle1, treeWalker.moveToNode(true));
177
178 // Move to previous node.
179 assertEquals(t.lower3, treeWalker.moveToNode(false));
180 assertEquals(t.leaf2, treeWalker.moveToNode(false));
181 assertEquals(t.leaf1, treeWalker.moveToNode(false));
182 assertEquals(t.middle1, treeWalker.moveToNode(false));
183 assertEquals(t.lower3, treeWalker.moveToNode(false));
122 }); 184 });
123 185
124 TEST_F('AutomationTreeWalkerUnitTest', 'GetNextNode', function() { 186 TEST_F('AutomationTreeWalkerUnitTest', 'GetNextNode', function() {
125 let t = this.getSampleTree(); 187 let t = this.getSampleTree();
126 let treeWalker = 188 let treeWalker = new AutomationTreeWalker(
127 new AutomationTreeWalker(t.root, t.root, this.getDefaultRestrictions()); 189 t.middle1, t.middle1, this.getDefaultRestrictions());
128 190
129 let order = 191 let order =
130 [t.root, t.middle1, t.leaf1, t.leaf2, t.leaf3, 192 [t.middle1, t.lower1, t.leaf1, t.leaf2, t.leaf3,
131 t.middle2, t.leaf4, t.leaf5]; 193 t.lower2, t.leaf4, t.leaf5];
132 let node = t.root; 194 let node = t.middle1;
133 for (let i = 0; i < order.length; i++) { 195 for (let i = 0; i < order.length; i++) {
134 assertEquals(order[i], node); 196 assertEquals(order[i], node);
135 node = treeWalker.getNextNode_(node); 197 node = treeWalker.getNextNode_(node);
136 } 198 }
137 assertEquals(undefined, node); 199 assertEquals(undefined, node);
138 }); 200 });
139 201
140 TEST_F('AutomationTreeWalkerUnitTest', 'GetPreviousNode', function() { 202 TEST_F('AutomationTreeWalkerUnitTest', 'GetPreviousNode', function() {
141 let t = this.getSampleTree(); 203 let t = this.getSampleTree();
142 let treeWalker = 204 let treeWalker = new AutomationTreeWalker(
143 new AutomationTreeWalker(t.root, t.root, this.getDefaultRestrictions()); 205 t.leaf5, t.middle1, this.getDefaultRestrictions());
144 206
145 let order = 207 let order =
146 [t.leaf5, t.leaf4, t.middle2, t.leaf3, t.leaf2, 208 [t.leaf5, t.leaf4, t.lower2, t.leaf3, t.leaf2,
147 t.leaf1, t.middle1, t.root]; 209 t.leaf1, t.lower1, t.middle1];
148 let node = t.leaf5; 210 let node = t.leaf5;
149 for (let i = 0; i < order.length; i++) { 211 for (let i = 0; i < order.length; i++) {
150 assertEquals(order[i], node); 212 assertEquals(order[i], node);
151 node = treeWalker.getPreviousNode_(node); 213 node = treeWalker.getPreviousNode_(node);
152 } 214 }
153 assertEquals(undefined, node); 215 assertEquals(undefined, node);
154 }); 216 });
155 217
156 TEST_F('AutomationTreeWalkerUnitTest', 'GetYoungestDescendant', function() { 218 TEST_F('AutomationTreeWalkerUnitTest', 'GetYoungestDescendant', function() {
157 let t = this.getSampleTree(); 219 let t = this.getSampleTree();
158 let treeWalker = 220 let treeWalker = new AutomationTreeWalker(
159 new AutomationTreeWalker(t.root, t.root, this.getDefaultRestrictions()); 221 t.root, t.root, this.getDefaultRestrictions());
160 222
161 assertEquals(t.leaf5, treeWalker.getYoungestDescendant_(t.root)); 223 assertEquals(t.leaf8, treeWalker.getYoungestDescendant_(t.root));
162 assertEquals(t.leaf3, treeWalker.getYoungestDescendant_(t.middle1)); 224 assertEquals(t.leaf7, treeWalker.getYoungestDescendant_(t.upper1));
163 assertEquals(t.leaf5, treeWalker.getYoungestDescendant_(t.middle2)); 225 assertEquals(t.leaf8, treeWalker.getYoungestDescendant_(t.upper2));
226 assertEquals(t.leaf5, treeWalker.getYoungestDescendant_(t.middle1));
227 assertEquals(t.leaf7, treeWalker.getYoungestDescendant_(t.middle2));
228 assertEquals(t.leaf3, treeWalker.getYoungestDescendant_(t.lower1));
229 assertEquals(t.leaf5, treeWalker.getYoungestDescendant_(t.lower2));
230 assertEquals(t.leaf7, treeWalker.getYoungestDescendant_(t.lower3));
164 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf1)); 231 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf1));
165 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf2)); 232 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf2));
166 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf3)); 233 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf3));
167 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf4)); 234 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf4));
168 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf5)); 235 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf5));
236 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf6));
237 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf7));
238 assertEquals(undefined, treeWalker.getYoungestDescendant_(t.leaf8));
169 }); 239 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/chromeos/switch_access/test_support.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698