| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 library test.services.src.search.hierarchy; | 5 library test.services.src.search.hierarchy; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:analysis_server/src/services/index/index.dart'; | 9 import 'package:analysis_server/src/services/index/index.dart'; |
| 10 import 'package:analysis_server/src/services/search/hierarchy.dart'; | 10 import 'package:analysis_server/src/services/search/hierarchy.dart'; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 class HierarchyTest extends AbstractSingleUnitTest { | 25 class HierarchyTest extends AbstractSingleUnitTest { |
| 26 Index index; | 26 Index index; |
| 27 SearchEngineImpl searchEngine; | 27 SearchEngineImpl searchEngine; |
| 28 | 28 |
| 29 void setUp() { | 29 void setUp() { |
| 30 super.setUp(); | 30 super.setUp(); |
| 31 index = createMemoryIndex(); | 31 index = createMemoryIndex(); |
| 32 searchEngine = new SearchEngineImpl(index); | 32 searchEngine = new SearchEngineImpl(index); |
| 33 } | 33 } |
| 34 | 34 |
| 35 void test_getClassMembers() { | 35 test_getClassMembers() async { |
| 36 _indexTestUnit(''' | 36 await _indexTestUnit(''' |
| 37 class A { | 37 class A { |
| 38 A() {} | 38 A() {} |
| 39 var ma1; | 39 var ma1; |
| 40 ma2() {} | 40 ma2() {} |
| 41 } | 41 } |
| 42 class B extends A { | 42 class B extends A { |
| 43 B() {} | 43 B() {} |
| 44 B.named() {} | 44 B.named() {} |
| 45 var mb1; | 45 var mb1; |
| 46 mb2() {} | 46 mb2() {} |
| 47 } | 47 } |
| 48 '''); | 48 '''); |
| 49 { | 49 { |
| 50 ClassElement classA = findElement('A'); | 50 ClassElement classA = findElement('A'); |
| 51 List<Element> members = getClassMembers(classA); | 51 List<Element> members = getClassMembers(classA); |
| 52 expect(members.map((e) => e.name), unorderedEquals(['ma1', 'ma2'])); | 52 expect(members.map((e) => e.name), unorderedEquals(['ma1', 'ma2'])); |
| 53 } | 53 } |
| 54 { | 54 { |
| 55 ClassElement classB = findElement('B'); | 55 ClassElement classB = findElement('B'); |
| 56 List<Element> members = getClassMembers(classB); | 56 List<Element> members = getClassMembers(classB); |
| 57 expect(members.map((e) => e.name), unorderedEquals(['mb1', 'mb2'])); | 57 expect(members.map((e) => e.name), unorderedEquals(['mb1', 'mb2'])); |
| 58 } | 58 } |
| 59 } | 59 } |
| 60 | 60 |
| 61 Future test_getHierarchyMembers_constructors() { | 61 test_getHierarchyMembers_constructors() async { |
| 62 _indexTestUnit(''' | 62 await _indexTestUnit(''' |
| 63 class A { | 63 class A { |
| 64 A() {} | 64 A() {} |
| 65 } | 65 } |
| 66 class B extends A { | 66 class B extends A { |
| 67 B() {} | 67 B() {} |
| 68 } | 68 } |
| 69 '''); | 69 '''); |
| 70 ClassElement classA = findElement("A"); | 70 ClassElement classA = findElement("A"); |
| 71 ClassElement classB = findElement("B"); | 71 ClassElement classB = findElement("B"); |
| 72 ClassMemberElement memberA = classA.constructors[0]; | 72 ClassMemberElement memberA = classA.constructors[0]; |
| 73 ClassMemberElement memberB = classB.constructors[0]; | 73 ClassMemberElement memberB = classB.constructors[0]; |
| 74 var futureA = getHierarchyMembers(searchEngine, memberA).then((members) { | 74 var futureA = getHierarchyMembers(searchEngine, memberA).then((members) { |
| 75 expect(members, unorderedEquals([memberA])); | 75 expect(members, unorderedEquals([memberA])); |
| 76 }); | 76 }); |
| 77 var futureB = getHierarchyMembers(searchEngine, memberB).then((members) { | 77 var futureB = getHierarchyMembers(searchEngine, memberB).then((members) { |
| 78 expect(members, unorderedEquals([memberB])); | 78 expect(members, unorderedEquals([memberB])); |
| 79 }); | 79 }); |
| 80 return Future.wait([futureA, futureB]); | 80 return Future.wait([futureA, futureB]); |
| 81 } | 81 } |
| 82 | 82 |
| 83 Future test_getHierarchyMembers_fields() { | 83 test_getHierarchyMembers_fields() async { |
| 84 _indexTestUnit(''' | 84 await _indexTestUnit(''' |
| 85 class A { | 85 class A { |
| 86 int foo; | 86 int foo; |
| 87 } | 87 } |
| 88 class B extends A { | 88 class B extends A { |
| 89 get foo => null; | 89 get foo => null; |
| 90 } | 90 } |
| 91 class C extends B { | 91 class C extends B { |
| 92 set foo(x) {} | 92 set foo(x) {} |
| 93 } | 93 } |
| 94 class D { | 94 class D { |
| (...skipping 16 matching lines...) Expand all Loading... |
| 111 }); | 111 }); |
| 112 var futureC = getHierarchyMembers(searchEngine, memberC).then((members) { | 112 var futureC = getHierarchyMembers(searchEngine, memberC).then((members) { |
| 113 expect(members, unorderedEquals([memberA, memberB, memberC])); | 113 expect(members, unorderedEquals([memberA, memberB, memberC])); |
| 114 }); | 114 }); |
| 115 var futureD = getHierarchyMembers(searchEngine, memberD).then((members) { | 115 var futureD = getHierarchyMembers(searchEngine, memberD).then((members) { |
| 116 expect(members, unorderedEquals([memberD])); | 116 expect(members, unorderedEquals([memberD])); |
| 117 }); | 117 }); |
| 118 return Future.wait([futureA, futureB, futureC, futureD]); | 118 return Future.wait([futureA, futureB, futureC, futureD]); |
| 119 } | 119 } |
| 120 | 120 |
| 121 Future test_getHierarchyMembers_fields_static() async { | 121 test_getHierarchyMembers_fields_static() async { |
| 122 _indexTestUnit(''' | 122 await _indexTestUnit(''' |
| 123 class A { | 123 class A { |
| 124 static int foo; | 124 static int foo; |
| 125 } | 125 } |
| 126 class B extends A { | 126 class B extends A { |
| 127 static get foo => null; | 127 static get foo => null; |
| 128 } | 128 } |
| 129 class C extends B { | 129 class C extends B { |
| 130 static set foo(x) {} | 130 static set foo(x) {} |
| 131 } | 131 } |
| 132 '''); | 132 '''); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 146 await getHierarchyMembers(searchEngine, memberB); | 146 await getHierarchyMembers(searchEngine, memberB); |
| 147 expect(members, unorderedEquals([memberB])); | 147 expect(members, unorderedEquals([memberB])); |
| 148 } | 148 } |
| 149 { | 149 { |
| 150 Set<ClassMemberElement> members = | 150 Set<ClassMemberElement> members = |
| 151 await getHierarchyMembers(searchEngine, memberC); | 151 await getHierarchyMembers(searchEngine, memberC); |
| 152 expect(members, unorderedEquals([memberC])); | 152 expect(members, unorderedEquals([memberC])); |
| 153 } | 153 } |
| 154 } | 154 } |
| 155 | 155 |
| 156 Future test_getHierarchyMembers_methods() { | 156 test_getHierarchyMembers_methods() async { |
| 157 _indexTestUnit(''' | 157 await _indexTestUnit(''' |
| 158 class A { | 158 class A { |
| 159 foo() {} | 159 foo() {} |
| 160 } | 160 } |
| 161 class B extends A { | 161 class B extends A { |
| 162 foo() {} | 162 foo() {} |
| 163 } | 163 } |
| 164 class C extends B { | 164 class C extends B { |
| 165 foo() {} | 165 foo() {} |
| 166 } | 166 } |
| 167 class D { | 167 class D { |
| (...skipping 24 matching lines...) Expand all Loading... |
| 192 }); | 192 }); |
| 193 var futureD = getHierarchyMembers(searchEngine, memberD).then((members) { | 193 var futureD = getHierarchyMembers(searchEngine, memberD).then((members) { |
| 194 expect(members, unorderedEquals([memberD, memberE])); | 194 expect(members, unorderedEquals([memberD, memberE])); |
| 195 }); | 195 }); |
| 196 var futureE = getHierarchyMembers(searchEngine, memberE).then((members) { | 196 var futureE = getHierarchyMembers(searchEngine, memberE).then((members) { |
| 197 expect(members, unorderedEquals([memberD, memberE])); | 197 expect(members, unorderedEquals([memberD, memberE])); |
| 198 }); | 198 }); |
| 199 return Future.wait([futureA, futureB, futureC, futureD, futureE]); | 199 return Future.wait([futureA, futureB, futureC, futureD, futureE]); |
| 200 } | 200 } |
| 201 | 201 |
| 202 Future test_getHierarchyMembers_methods_static() async { | 202 test_getHierarchyMembers_methods_static() async { |
| 203 _indexTestUnit(''' | 203 await _indexTestUnit(''' |
| 204 class A { | 204 class A { |
| 205 static foo() {} | 205 static foo() {} |
| 206 } | 206 } |
| 207 class B extends A { | 207 class B extends A { |
| 208 static foo() {} | 208 static foo() {} |
| 209 } | 209 } |
| 210 '''); | 210 '''); |
| 211 ClassElement classA = findElement('A'); | 211 ClassElement classA = findElement('A'); |
| 212 ClassElement classB = findElement('B'); | 212 ClassElement classB = findElement('B'); |
| 213 ClassMemberElement memberA = classA.methods[0]; | 213 ClassMemberElement memberA = classA.methods[0]; |
| 214 ClassMemberElement memberB = classB.methods[0]; | 214 ClassMemberElement memberB = classB.methods[0]; |
| 215 { | 215 { |
| 216 Set<ClassMemberElement> members = | 216 Set<ClassMemberElement> members = |
| 217 await getHierarchyMembers(searchEngine, memberA); | 217 await getHierarchyMembers(searchEngine, memberA); |
| 218 expect(members, unorderedEquals([memberA])); | 218 expect(members, unorderedEquals([memberA])); |
| 219 } | 219 } |
| 220 { | 220 { |
| 221 Set<ClassMemberElement> members = | 221 Set<ClassMemberElement> members = |
| 222 await getHierarchyMembers(searchEngine, memberB); | 222 await getHierarchyMembers(searchEngine, memberB); |
| 223 expect(members, unorderedEquals([memberB])); | 223 expect(members, unorderedEquals([memberB])); |
| 224 } | 224 } |
| 225 } | 225 } |
| 226 | 226 |
| 227 Future test_getHierarchyMembers_withInterfaces() { | 227 test_getHierarchyMembers_withInterfaces() async { |
| 228 _indexTestUnit(''' | 228 await _indexTestUnit(''' |
| 229 class A { | 229 class A { |
| 230 foo() {} | 230 foo() {} |
| 231 } | 231 } |
| 232 class B implements A { | 232 class B implements A { |
| 233 foo() {} | 233 foo() {} |
| 234 } | 234 } |
| 235 abstract class C implements A { | 235 abstract class C implements A { |
| 236 } | 236 } |
| 237 class D extends C { | 237 class D extends C { |
| 238 foo() {} | 238 foo() {} |
| (...skipping 13 matching lines...) Expand all Loading... |
| 252 }); | 252 }); |
| 253 var futureB = getHierarchyMembers(searchEngine, memberB).then((members) { | 253 var futureB = getHierarchyMembers(searchEngine, memberB).then((members) { |
| 254 expect(members, unorderedEquals([memberA, memberB, memberD])); | 254 expect(members, unorderedEquals([memberA, memberB, memberD])); |
| 255 }); | 255 }); |
| 256 var futureD = getHierarchyMembers(searchEngine, memberD).then((members) { | 256 var futureD = getHierarchyMembers(searchEngine, memberD).then((members) { |
| 257 expect(members, unorderedEquals([memberA, memberB, memberD])); | 257 expect(members, unorderedEquals([memberA, memberB, memberD])); |
| 258 }); | 258 }); |
| 259 return Future.wait([futureA, futureB, futureD]); | 259 return Future.wait([futureA, futureB, futureD]); |
| 260 } | 260 } |
| 261 | 261 |
| 262 void test_getMembers() { | 262 test_getMembers() async { |
| 263 _indexTestUnit(''' | 263 await _indexTestUnit(''' |
| 264 class A { | 264 class A { |
| 265 A() {} | 265 A() {} |
| 266 var ma1; | 266 var ma1; |
| 267 ma2() {} | 267 ma2() {} |
| 268 } | 268 } |
| 269 class B extends A { | 269 class B extends A { |
| 270 B() {} | 270 B() {} |
| 271 B.named() {} | 271 B.named() {} |
| 272 var mb1; | 272 var mb1; |
| 273 mb2() {} | 273 mb2() {} |
| (...skipping 26 matching lines...) Expand all Loading... |
| 300 'ma2', | 300 'ma2', |
| 301 '==', | 301 '==', |
| 302 'toString', | 302 'toString', |
| 303 'hashCode', | 303 'hashCode', |
| 304 'noSuchMethod', | 304 'noSuchMethod', |
| 305 'runtimeType' | 305 'runtimeType' |
| 306 ])); | 306 ])); |
| 307 } | 307 } |
| 308 } | 308 } |
| 309 | 309 |
| 310 void test_getSuperClasses() { | 310 test_getSuperClasses() async { |
| 311 _indexTestUnit(''' | 311 await _indexTestUnit(''' |
| 312 class A {} | 312 class A {} |
| 313 class B extends A {} | 313 class B extends A {} |
| 314 class C extends B {} | 314 class C extends B {} |
| 315 class D extends B implements A {} | 315 class D extends B implements A {} |
| 316 class M {} | 316 class M {} |
| 317 class E extends A with M {} | 317 class E extends A with M {} |
| 318 class F implements A {} | 318 class F implements A {} |
| 319 '''); | 319 '''); |
| 320 ClassElement classA = findElement("A"); | 320 ClassElement classA = findElement("A"); |
| 321 ClassElement classB = findElement("B"); | 321 ClassElement classB = findElement("B"); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 354 Set<ClassElement> supers = getSuperClasses(classE); | 354 Set<ClassElement> supers = getSuperClasses(classE); |
| 355 expect(supers, unorderedEquals([objectElement, classA])); | 355 expect(supers, unorderedEquals([objectElement, classA])); |
| 356 } | 356 } |
| 357 // F | 357 // F |
| 358 { | 358 { |
| 359 Set<ClassElement> supers = getSuperClasses(classF); | 359 Set<ClassElement> supers = getSuperClasses(classF); |
| 360 expect(supers, unorderedEquals([objectElement, classA])); | 360 expect(supers, unorderedEquals([objectElement, classA])); |
| 361 } | 361 } |
| 362 } | 362 } |
| 363 | 363 |
| 364 void _indexTestUnit(String code) { | 364 Future<Null> _indexTestUnit(String code) async { |
| 365 resolveTestUnit(code); | 365 await resolveTestUnit(code); |
| 366 index.indexUnit(testUnit); | 366 index.indexUnit(testUnit); |
| 367 } | 367 } |
| 368 } | 368 } |
| OLD | NEW |