Index: pkg/analysis_server/test/services/search/search_engine_test.dart |
diff --git a/pkg/analysis_server/test/services/search/search_engine_test.dart b/pkg/analysis_server/test/services/search/search_engine_test.dart |
index 228a9069d8c32e34446169062bd047807e81382c..04ef87313b65e312ada041bc66c36dd2b33d4ee9 100644 |
--- a/pkg/analysis_server/test/services/search/search_engine_test.dart |
+++ b/pkg/analysis_server/test/services/search/search_engine_test.dart |
@@ -46,6 +46,123 @@ class SearchEngineImpl2Test { |
scheduler.start(); |
} |
+ test_membersOfSubtypes_hasMembers() async { |
+ var a = _p('/test/a.dart'); |
+ var b = _p('/test/b.dart'); |
+ var c = _p('/test/c.dart'); |
+ |
+ provider.newFile( |
+ a, |
+ ''' |
+class A { |
+ void a() {} |
+ void b() {} |
+ void c() {} |
+} |
+'''); |
+ provider.newFile( |
+ b, |
+ ''' |
+import 'a.dart'; |
+class B extends A { |
+ void a() {} |
+} |
+'''); |
+ provider.newFile( |
+ c, |
+ ''' |
+import 'a.dart'; |
+class C extends A { |
+ void b() {} |
+} |
+'''); |
+ |
+ var driver1 = _newDriver(); |
+ var driver2 = _newDriver(); |
+ |
+ driver1.addFile(a); |
+ driver2.addFile(b); |
+ driver2.addFile(c); |
+ await scheduler.waitForIdle(); |
+ |
+ var resultA = await driver1.getResult(a); |
+ ClassElement elementA = resultA.unit.element.types[0]; |
+ |
+ var searchEngine = new SearchEngineImpl([driver1, driver2]); |
+ Set<String> members = await searchEngine.membersOfSubtypes(elementA); |
+ expect(members, unorderedEquals(['a', 'b'])); |
+ } |
+ |
+ test_membersOfSubtypes_noMembers() async { |
+ var a = _p('/test/a.dart'); |
+ var b = _p('/test/b.dart'); |
+ |
+ provider.newFile( |
+ a, |
+ ''' |
+class A { |
+ void a() {} |
+ void b() {} |
+ void c() {} |
+} |
+'''); |
+ provider.newFile( |
+ b, |
+ ''' |
+import 'a.dart'; |
+class B extends A {} |
+'''); |
+ |
+ var driver = _newDriver(); |
+ |
+ driver.addFile(a); |
+ driver.addFile(b); |
+ await scheduler.waitForIdle(); |
+ |
+ var resultA = await driver.getResult(a); |
+ ClassElement elementA = resultA.unit.element.types[0]; |
+ |
+ var searchEngine = new SearchEngineImpl([driver]); |
+ Set<String> members = await searchEngine.membersOfSubtypes(elementA); |
+ expect(members, isEmpty); |
+ } |
+ |
+ test_membersOfSubtypes_noSubtypes() async { |
+ var a = _p('/test/a.dart'); |
+ var b = _p('/test/b.dart'); |
+ |
+ provider.newFile( |
+ a, |
+ ''' |
+class A { |
+ void a() {} |
+ void b() {} |
+ void c() {} |
+} |
+'''); |
+ provider.newFile( |
+ b, |
+ ''' |
+import 'a.dart'; |
+class B { |
+ void a() {} |
+} |
+'''); |
+ |
+ var driver = _newDriver(); |
+ |
+ driver.addFile(a); |
+ driver.addFile(b); |
+ await scheduler.waitForIdle(); |
+ |
+ var resultA = await driver.getResult(a); |
+ ClassElement elementA = resultA.unit.element.types[0]; |
+ |
+ var searchEngine = new SearchEngineImpl([driver]); |
+ Set<String> members = await searchEngine.membersOfSubtypes(elementA); |
+ expect(members, isNull); |
+ } |
+ |
test_searchAllSubtypes() async { |
var p = _p('/test.dart'); |