OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 // Test for iterators on for [SubclassNode]. | 5 // Test for iterators on for [SubclassNode]. |
6 | 6 |
7 library world_test; | 7 library world_test; |
8 | 8 |
9 import 'package:expect/expect.dart'; | 9 import 'package:expect/expect.dart'; |
10 import 'package:async_helper/async_helper.dart'; | 10 import 'package:async_helper/async_helper.dart'; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 ClassElement B = env.getElement("B"); | 48 ClassElement B = env.getElement("B"); |
49 ClassElement C = env.getElement("C"); | 49 ClassElement C = env.getElement("C"); |
50 ClassElement D = env.getElement("D"); | 50 ClassElement D = env.getElement("D"); |
51 ClassElement E = env.getElement("E"); | 51 ClassElement E = env.getElement("E"); |
52 ClassElement F = env.getElement("F"); | 52 ClassElement F = env.getElement("F"); |
53 ClassElement G = env.getElement("G"); | 53 ClassElement G = env.getElement("G"); |
54 | 54 |
55 void checkClass(ClassElement cls, | 55 void checkClass(ClassElement cls, |
56 {bool directlyInstantiated: false, | 56 {bool directlyInstantiated: false, |
57 bool indirectlyInstantiated: false}) { | 57 bool indirectlyInstantiated: false}) { |
58 ClassHierarchyNode node = world.classHierarchyNode(cls); | 58 ClassHierarchyNode node = world.getClassHierarchyNode(cls); |
59 Expect.isNotNull(node, "Expected ClassHierarchyNode for $cls."); | 59 Expect.isNotNull(node, "Expected ClassHierarchyNode for $cls."); |
60 Expect.equals( | 60 Expect.equals( |
61 directlyInstantiated || indirectlyInstantiated, | 61 directlyInstantiated || indirectlyInstantiated, |
62 node.isInstantiated, | 62 node.isInstantiated, |
63 "Unexpected `isInstantiated` on ClassHierarchyNode for $cls."); | 63 "Unexpected `isInstantiated` on ClassHierarchyNode for $cls."); |
64 Expect.equals( | 64 Expect.equals( |
65 directlyInstantiated, | 65 directlyInstantiated, |
66 node.isDirectlyInstantiated, | 66 node.isDirectlyInstantiated, |
67 "Unexpected `isDirectlyInstantiated` on ClassHierarchyNode for " | 67 "Unexpected `isDirectlyInstantiated` on ClassHierarchyNode for " |
68 "$cls."); | 68 "$cls."); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
124 } else { | 124 } else { |
125 Expect.isNotNull(foundStack, | 125 Expect.isNotNull(foundStack, |
126 "Expected non-null stack ${stack} in $sb."); | 126 "Expected non-null stack ${stack} in $sb."); |
127 Expect.listEquals(stack, foundStack, | 127 Expect.listEquals(stack, foundStack, |
128 "Expected stack ${stack}, " | 128 "Expected stack ${stack}, " |
129 "found ${foundStack} in $sb."); | 129 "found ${foundStack} in $sb."); |
130 } | 130 } |
131 } | 131 } |
132 | 132 |
133 iterator = new ClassHierarchyNodeIterable( | 133 iterator = new ClassHierarchyNodeIterable( |
134 world.classHierarchyNode(G)).iterator; | 134 world.getClassHierarchyNode(G)).iterator; |
135 checkState(G, currentNode: null, stack: null); | 135 checkState(G, currentNode: null, stack: null); |
136 Expect.isNull(iterator.current); | 136 Expect.isNull(iterator.current); |
137 Expect.isTrue(iterator.moveNext()); | 137 Expect.isTrue(iterator.moveNext()); |
138 checkState(G, currentNode: G, stack: []); | 138 checkState(G, currentNode: G, stack: []); |
139 Expect.equals(G, iterator.current); | 139 Expect.equals(G, iterator.current); |
140 Expect.isFalse(iterator.moveNext()); | 140 Expect.isFalse(iterator.moveNext()); |
141 checkState(G, currentNode: null, stack: []); | 141 checkState(G, currentNode: null, stack: []); |
142 Expect.isNull(iterator.current); | 142 Expect.isNull(iterator.current); |
143 | 143 |
144 iterator = new ClassHierarchyNodeIterable( | 144 iterator = new ClassHierarchyNodeIterable( |
145 world.classHierarchyNode(G), includeRoot: false).iterator; | 145 world.getClassHierarchyNode(G), |
| 146 includeRoot: false).iterator; |
146 checkState(G, currentNode: null, stack: null); | 147 checkState(G, currentNode: null, stack: null); |
147 Expect.isNull(iterator.current); | 148 Expect.isNull(iterator.current); |
148 Expect.isFalse(iterator.moveNext()); | 149 Expect.isFalse(iterator.moveNext()); |
149 checkState(G, currentNode: null, stack: []); | 150 checkState(G, currentNode: null, stack: []); |
150 Expect.isNull(iterator.current); | 151 Expect.isNull(iterator.current); |
151 | 152 |
152 iterator = new ClassHierarchyNodeIterable( | 153 iterator = new ClassHierarchyNodeIterable( |
153 world.classHierarchyNode(C)).iterator; | 154 world.getClassHierarchyNode(C)).iterator; |
154 checkState(C, currentNode: null, stack: null); | 155 checkState(C, currentNode: null, stack: null); |
155 Expect.isNull(iterator.current); | 156 Expect.isNull(iterator.current); |
156 Expect.isTrue(iterator.moveNext()); | 157 Expect.isTrue(iterator.moveNext()); |
157 checkState(C, currentNode: C, stack: [E, F, G]); | 158 checkState(C, currentNode: C, stack: [E, F, G]); |
158 Expect.equals(C, iterator.current); | 159 Expect.equals(C, iterator.current); |
159 Expect.isTrue(iterator.moveNext()); | 160 Expect.isTrue(iterator.moveNext()); |
160 checkState(C, currentNode: E, stack: [F, G]); | 161 checkState(C, currentNode: E, stack: [F, G]); |
161 Expect.equals(E, iterator.current); | 162 Expect.equals(E, iterator.current); |
162 Expect.isTrue(iterator.moveNext()); | 163 Expect.isTrue(iterator.moveNext()); |
163 checkState(C, currentNode: F, stack: [G]); | 164 checkState(C, currentNode: F, stack: [G]); |
164 Expect.equals(F, iterator.current); | 165 Expect.equals(F, iterator.current); |
165 Expect.isTrue(iterator.moveNext()); | 166 Expect.isTrue(iterator.moveNext()); |
166 checkState(C, currentNode: G, stack: []); | 167 checkState(C, currentNode: G, stack: []); |
167 Expect.equals(G, iterator.current); | 168 Expect.equals(G, iterator.current); |
168 Expect.isFalse(iterator.moveNext()); | 169 Expect.isFalse(iterator.moveNext()); |
169 checkState(C, currentNode: null, stack: []); | 170 checkState(C, currentNode: null, stack: []); |
170 Expect.isNull(iterator.current); | 171 Expect.isNull(iterator.current); |
171 | 172 |
172 iterator = new ClassHierarchyNodeIterable( | 173 iterator = new ClassHierarchyNodeIterable( |
173 world.classHierarchyNode(D)).iterator; | 174 world.getClassHierarchyNode(D)).iterator; |
174 checkState(D, currentNode: null, stack: null); | 175 checkState(D, currentNode: null, stack: null); |
175 Expect.isNull(iterator.current); | 176 Expect.isNull(iterator.current); |
176 Expect.isTrue(iterator.moveNext()); | 177 Expect.isTrue(iterator.moveNext()); |
177 checkState(D, currentNode: D, stack: []); | 178 checkState(D, currentNode: D, stack: []); |
178 Expect.equals(D, iterator.current); | 179 Expect.equals(D, iterator.current); |
179 Expect.isFalse(iterator.moveNext()); | 180 Expect.isFalse(iterator.moveNext()); |
180 checkState(D, currentNode: null, stack: []); | 181 checkState(D, currentNode: null, stack: []); |
181 Expect.isNull(iterator.current); | 182 Expect.isNull(iterator.current); |
182 | 183 |
183 iterator = new ClassHierarchyNodeIterable( | 184 iterator = new ClassHierarchyNodeIterable( |
184 world.classHierarchyNode(B)).iterator; | 185 world.getClassHierarchyNode(B)).iterator; |
185 checkState(B, currentNode: null, stack: null); | 186 checkState(B, currentNode: null, stack: null); |
186 Expect.isNull(iterator.current); | 187 Expect.isNull(iterator.current); |
187 Expect.isTrue(iterator.moveNext()); | 188 Expect.isTrue(iterator.moveNext()); |
188 checkState(B, currentNode: B, stack: [D]); | 189 checkState(B, currentNode: B, stack: [D]); |
189 Expect.equals(B, iterator.current); | 190 Expect.equals(B, iterator.current); |
190 Expect.isTrue(iterator.moveNext()); | 191 Expect.isTrue(iterator.moveNext()); |
191 checkState(B, currentNode: D, stack: []); | 192 checkState(B, currentNode: D, stack: []); |
192 Expect.equals(D, iterator.current); | 193 Expect.equals(D, iterator.current); |
193 Expect.isFalse(iterator.moveNext()); | 194 Expect.isFalse(iterator.moveNext()); |
194 checkState(B, currentNode: null, stack: []); | 195 checkState(B, currentNode: null, stack: []); |
195 Expect.isNull(iterator.current); | 196 Expect.isNull(iterator.current); |
196 | 197 |
197 iterator = new ClassHierarchyNodeIterable( | 198 iterator = new ClassHierarchyNodeIterable( |
198 world.classHierarchyNode(B), includeRoot: false).iterator; | 199 world.getClassHierarchyNode(B), |
| 200 includeRoot: false).iterator; |
199 checkState(B, currentNode: null, stack: null); | 201 checkState(B, currentNode: null, stack: null); |
200 Expect.isNull(iterator.current); | 202 Expect.isNull(iterator.current); |
201 Expect.isTrue(iterator.moveNext()); | 203 Expect.isTrue(iterator.moveNext()); |
202 checkState(B, currentNode: D, stack: []); | 204 checkState(B, currentNode: D, stack: []); |
203 Expect.equals(D, iterator.current); | 205 Expect.equals(D, iterator.current); |
204 Expect.isFalse(iterator.moveNext()); | 206 Expect.isFalse(iterator.moveNext()); |
205 checkState(B, currentNode: null, stack: []); | 207 checkState(B, currentNode: null, stack: []); |
206 Expect.isNull(iterator.current); | 208 Expect.isNull(iterator.current); |
207 | 209 |
208 iterator = new ClassHierarchyNodeIterable( | 210 iterator = new ClassHierarchyNodeIterable( |
209 world.classHierarchyNode(B), directlyInstantiatedOnly: true).iterator; | 211 world.getClassHierarchyNode(B), |
| 212 includeIndirectlyInstantiated: false).iterator; |
210 checkState(B, currentNode: null, stack: null); | 213 checkState(B, currentNode: null, stack: null); |
211 Expect.isNull(iterator.current); | 214 Expect.isNull(iterator.current); |
212 Expect.isTrue(iterator.moveNext()); | 215 Expect.isTrue(iterator.moveNext()); |
213 checkState(B, currentNode: D, stack: []); | 216 checkState(B, currentNode: D, stack: []); |
214 Expect.equals(D, iterator.current); | 217 Expect.equals(D, iterator.current); |
215 Expect.isFalse(iterator.moveNext()); | 218 Expect.isFalse(iterator.moveNext()); |
216 checkState(B, currentNode: null, stack: []); | 219 checkState(B, currentNode: null, stack: []); |
217 Expect.isNull(iterator.current); | 220 Expect.isNull(iterator.current); |
218 | 221 |
219 iterator = new ClassHierarchyNodeIterable( | 222 iterator = new ClassHierarchyNodeIterable( |
220 world.classHierarchyNode(A)).iterator; | 223 world.getClassHierarchyNode(A)).iterator; |
221 checkState(A, currentNode: null, stack: null); | 224 checkState(A, currentNode: null, stack: null); |
222 Expect.isNull(iterator.current); | 225 Expect.isNull(iterator.current); |
223 Expect.isTrue(iterator.moveNext()); | 226 Expect.isTrue(iterator.moveNext()); |
224 checkState(A, currentNode: A, stack: [C, B]); | 227 checkState(A, currentNode: A, stack: [C, B]); |
225 Expect.equals(A, iterator.current); | 228 Expect.equals(A, iterator.current); |
226 Expect.isTrue(iterator.moveNext()); | 229 Expect.isTrue(iterator.moveNext()); |
227 checkState(A, currentNode: C, stack: [E, F, G, B]); | 230 checkState(A, currentNode: C, stack: [E, F, G, B]); |
228 Expect.equals(C, iterator.current); | 231 Expect.equals(C, iterator.current); |
229 Expect.isTrue(iterator.moveNext()); | 232 Expect.isTrue(iterator.moveNext()); |
230 checkState(A, currentNode: E, stack: [F, G, B]); | 233 checkState(A, currentNode: E, stack: [F, G, B]); |
231 Expect.equals(E, iterator.current); | 234 Expect.equals(E, iterator.current); |
232 Expect.isTrue(iterator.moveNext()); | 235 Expect.isTrue(iterator.moveNext()); |
233 checkState(A, currentNode: F, stack: [G, B]); | 236 checkState(A, currentNode: F, stack: [G, B]); |
234 Expect.equals(F, iterator.current); | 237 Expect.equals(F, iterator.current); |
235 Expect.isTrue(iterator.moveNext()); | 238 Expect.isTrue(iterator.moveNext()); |
236 checkState(A, currentNode: G, stack: [B]); | 239 checkState(A, currentNode: G, stack: [B]); |
237 Expect.equals(G, iterator.current); | 240 Expect.equals(G, iterator.current); |
238 Expect.isTrue(iterator.moveNext()); | 241 Expect.isTrue(iterator.moveNext()); |
239 checkState(A, currentNode: B, stack: [D]); | 242 checkState(A, currentNode: B, stack: [D]); |
240 Expect.equals(B, iterator.current); | 243 Expect.equals(B, iterator.current); |
241 Expect.isTrue(iterator.moveNext()); | 244 Expect.isTrue(iterator.moveNext()); |
242 checkState(A, currentNode: D, stack: []); | 245 checkState(A, currentNode: D, stack: []); |
243 Expect.equals(D, iterator.current); | 246 Expect.equals(D, iterator.current); |
244 Expect.isFalse(iterator.moveNext()); | 247 Expect.isFalse(iterator.moveNext()); |
245 checkState(A, currentNode: null, stack: []); | 248 checkState(A, currentNode: null, stack: []); |
246 Expect.isNull(iterator.current); | 249 Expect.isNull(iterator.current); |
247 | 250 |
248 iterator = new ClassHierarchyNodeIterable( | 251 iterator = new ClassHierarchyNodeIterable( |
249 world.classHierarchyNode(A), includeRoot: false).iterator; | 252 world.getClassHierarchyNode(A), |
| 253 includeRoot: false).iterator; |
250 checkState(A, currentNode: null, stack: null); | 254 checkState(A, currentNode: null, stack: null); |
251 Expect.isNull(iterator.current); | 255 Expect.isNull(iterator.current); |
252 Expect.isTrue(iterator.moveNext()); | 256 Expect.isTrue(iterator.moveNext()); |
253 checkState(A, currentNode: C, stack: [E, F, G, B]); | 257 checkState(A, currentNode: C, stack: [E, F, G, B]); |
254 Expect.equals(C, iterator.current); | 258 Expect.equals(C, iterator.current); |
255 Expect.isTrue(iterator.moveNext()); | 259 Expect.isTrue(iterator.moveNext()); |
256 checkState(A, currentNode: E, stack: [F, G, B]); | 260 checkState(A, currentNode: E, stack: [F, G, B]); |
257 Expect.equals(E, iterator.current); | 261 Expect.equals(E, iterator.current); |
258 Expect.isTrue(iterator.moveNext()); | 262 Expect.isTrue(iterator.moveNext()); |
259 checkState(A, currentNode: F, stack: [G, B]); | 263 checkState(A, currentNode: F, stack: [G, B]); |
260 Expect.equals(F, iterator.current); | 264 Expect.equals(F, iterator.current); |
261 Expect.isTrue(iterator.moveNext()); | 265 Expect.isTrue(iterator.moveNext()); |
262 checkState(A, currentNode: G, stack: [B]); | 266 checkState(A, currentNode: G, stack: [B]); |
263 Expect.equals(G, iterator.current); | 267 Expect.equals(G, iterator.current); |
264 Expect.isTrue(iterator.moveNext()); | 268 Expect.isTrue(iterator.moveNext()); |
265 checkState(A, currentNode: B, stack: [D]); | 269 checkState(A, currentNode: B, stack: [D]); |
266 Expect.equals(B, iterator.current); | 270 Expect.equals(B, iterator.current); |
267 Expect.isTrue(iterator.moveNext()); | 271 Expect.isTrue(iterator.moveNext()); |
268 checkState(A, currentNode: D, stack: []); | 272 checkState(A, currentNode: D, stack: []); |
269 Expect.equals(D, iterator.current); | 273 Expect.equals(D, iterator.current); |
270 Expect.isFalse(iterator.moveNext()); | 274 Expect.isFalse(iterator.moveNext()); |
271 checkState(A, currentNode: null, stack: []); | 275 checkState(A, currentNode: null, stack: []); |
272 Expect.isNull(iterator.current); | 276 Expect.isNull(iterator.current); |
273 | 277 |
274 iterator = new ClassHierarchyNodeIterable( | 278 iterator = new ClassHierarchyNodeIterable( |
275 world.classHierarchyNode(A), directlyInstantiatedOnly: true).iterator; | 279 world.getClassHierarchyNode(A), |
| 280 includeIndirectlyInstantiated: false).iterator; |
276 checkState(A, currentNode: null, stack: null); | 281 checkState(A, currentNode: null, stack: null); |
277 Expect.isNull(iterator.current); | 282 Expect.isNull(iterator.current); |
278 Expect.isTrue(iterator.moveNext()); | 283 Expect.isTrue(iterator.moveNext()); |
279 checkState(A, currentNode: A, stack: [C, B]); | 284 checkState(A, currentNode: A, stack: [C, B]); |
280 Expect.equals(A, iterator.current); | 285 Expect.equals(A, iterator.current); |
281 Expect.isTrue(iterator.moveNext()); | 286 Expect.isTrue(iterator.moveNext()); |
282 checkState(A, currentNode: C, stack: [E, F, G, B]); | 287 checkState(A, currentNode: C, stack: [E, F, G, B]); |
283 Expect.equals(C, iterator.current); | 288 Expect.equals(C, iterator.current); |
284 Expect.isTrue(iterator.moveNext()); | 289 Expect.isTrue(iterator.moveNext()); |
285 checkState(A, currentNode: E, stack: [F, G, B]); | 290 checkState(A, currentNode: E, stack: [F, G, B]); |
286 Expect.equals(E, iterator.current); | 291 Expect.equals(E, iterator.current); |
287 Expect.isTrue(iterator.moveNext()); | 292 Expect.isTrue(iterator.moveNext()); |
288 checkState(A, currentNode: F, stack: [G, B]); | 293 checkState(A, currentNode: F, stack: [G, B]); |
289 Expect.equals(F, iterator.current); | 294 Expect.equals(F, iterator.current); |
290 Expect.isTrue(iterator.moveNext()); | 295 Expect.isTrue(iterator.moveNext()); |
291 checkState(A, currentNode: G, stack: [B]); | 296 checkState(A, currentNode: G, stack: [B]); |
292 Expect.equals(G, iterator.current); | 297 Expect.equals(G, iterator.current); |
293 Expect.isTrue(iterator.moveNext()); | 298 Expect.isTrue(iterator.moveNext()); |
294 checkState(A, currentNode: D, stack: []); | 299 checkState(A, currentNode: D, stack: []); |
295 Expect.equals(D, iterator.current); | 300 Expect.equals(D, iterator.current); |
296 Expect.isFalse(iterator.moveNext()); | 301 Expect.isFalse(iterator.moveNext()); |
297 checkState(A, currentNode: null, stack: []); | 302 checkState(A, currentNode: null, stack: []); |
298 Expect.isNull(iterator.current); | 303 Expect.isNull(iterator.current); |
299 | 304 |
300 iterator = new ClassHierarchyNodeIterable( | 305 iterator = new ClassHierarchyNodeIterable( |
301 world.classHierarchyNode(A), | 306 world.getClassHierarchyNode(A), |
302 includeRoot: false, directlyInstantiatedOnly: true).iterator; | 307 includeRoot: false, |
| 308 includeIndirectlyInstantiated: false).iterator; |
303 checkState(A, currentNode: null, stack: null); | 309 checkState(A, currentNode: null, stack: null); |
304 Expect.isNull(iterator.current); | 310 Expect.isNull(iterator.current); |
305 Expect.isTrue(iterator.moveNext()); | 311 Expect.isTrue(iterator.moveNext()); |
306 checkState(A, currentNode: C, stack: [E, F, G, B]); | 312 checkState(A, currentNode: C, stack: [E, F, G, B]); |
307 Expect.equals(C, iterator.current); | 313 Expect.equals(C, iterator.current); |
308 Expect.isTrue(iterator.moveNext()); | 314 Expect.isTrue(iterator.moveNext()); |
309 checkState(A, currentNode: E, stack: [F, G, B]); | 315 checkState(A, currentNode: E, stack: [F, G, B]); |
310 Expect.equals(E, iterator.current); | 316 Expect.equals(E, iterator.current); |
311 Expect.isTrue(iterator.moveNext()); | 317 Expect.isTrue(iterator.moveNext()); |
312 checkState(A, currentNode: F, stack: [G, B]); | 318 checkState(A, currentNode: F, stack: [G, B]); |
313 Expect.equals(F, iterator.current); | 319 Expect.equals(F, iterator.current); |
314 Expect.isTrue(iterator.moveNext()); | 320 Expect.isTrue(iterator.moveNext()); |
315 checkState(A, currentNode: G, stack: [B]); | 321 checkState(A, currentNode: G, stack: [B]); |
316 Expect.equals(G, iterator.current); | 322 Expect.equals(G, iterator.current); |
317 Expect.isTrue(iterator.moveNext()); | 323 Expect.isTrue(iterator.moveNext()); |
318 checkState(A, currentNode: D, stack: []); | 324 checkState(A, currentNode: D, stack: []); |
319 Expect.equals(D, iterator.current); | 325 Expect.equals(D, iterator.current); |
320 Expect.isFalse(iterator.moveNext()); | 326 Expect.isFalse(iterator.moveNext()); |
321 checkState(A, currentNode: null, stack: []); | 327 checkState(A, currentNode: null, stack: []); |
322 Expect.isNull(iterator.current); | 328 Expect.isNull(iterator.current); |
323 })); | 329 })); |
324 } | 330 } |
OLD | NEW |