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

Side by Side Diff: pkg/analysis_services/test/search/hierarchy_test.dart

Issue 395623006: Add hierarchy utils and use them in search. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: tweaks Created 6 years, 5 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 | Annotate | Revision Log
OLDNEW
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 // This code was auto-generated, is not intended to be edited, and is subject to
6 // significant change. Please see the README file for more information.
7
8 library test.services.src.search.hierarchy;
9
10 import 'dart:async';
11
12 import 'package:analysis_services/index/index.dart';
13 import 'package:analysis_services/index/local_memory_index.dart';
14 import 'package:analysis_services/search/hierarchy.dart';
15 import 'package:analysis_services/src/search/search_engine.dart';
16 import 'package:analysis_testing/reflective_tests.dart';
17 import 'package:analyzer/src/generated/element.dart';
18 import 'package:unittest/unittest.dart';
19
20 import '../index/abstract_single_unit.dart';
21
22
23 main() {
24 groupSep = ' | ';
25 group('HierarchyTest', () {
26 runReflectiveTests(HierarchyTest);
27 });
28 }
29
30
31 @ReflectiveTestCase()
32 class HierarchyTest extends AbstractSingleUnitTest {
33 Index index;
34 SearchEngineImpl searchEngine;
35
36 void setUp() {
37 super.setUp();
38 index = createLocalMemoryIndex();
39 searchEngine = new SearchEngineImpl(index);
40 }
41
42 void test_getDirectMembers() {
43 _indexTestUnit('''
44 class A {
45 A() {}
46 var ma1;
47 ma2() {}
48 }
49 class B extends A {
50 B() {}
51 B.named() {}
52 var mb1;
53 mb2() {}
54 }
55 ''');
56 {
57 ClassElement classA = findElement('A');
58 List<Element> members = getClassMembers(classA);
59 expect(members.map((e) => e.name), unorderedEquals(['ma1', 'ma2']));
60 }
61 {
62 ClassElement classB = findElement('B');
63 List<Element> members = getClassMembers(classB);
64 expect(members.map((e) => e.name), unorderedEquals(['mb1', 'mb2']));
65 }
66 }
67
68 Future test_getHierarchyMembers_constructors() {
69 _indexTestUnit('''
70 class A {
71 A() {}
72 }
73 class B extends A {
74 B() {}
75 }
76 ''');
77 ClassElement classA = findElement("A");
78 ClassElement classB = findElement("B");
79 ClassMemberElement memberA = classA.constructors[0];
80 ClassMemberElement memberB = classB.constructors[0];
81 var futureA = getHierarchyMembers(searchEngine, memberA).then((members) {
82 expect(members, unorderedEquals([memberA]));
83 });
84 var futureB = getHierarchyMembers(searchEngine, memberB).then((members) {
85 expect(members, unorderedEquals([memberB]));
86 });
87 return Future.wait([futureA, futureB]);
88 }
89
90 Future test_getHierarchyMembers_fields() {
91 _indexTestUnit('''
92 class A {
93 int foo;
94 }
95 class B extends A {
96 get foo => null;
97 }
98 class C extends B {
99 set foo(x) {}
100 }
101 class D {
102 int foo;
103 }
104 ''');
105 ClassElement classA = findElement("A");
106 ClassElement classB = findElement("B");
107 ClassElement classC = findElement("C");
108 ClassElement classD = findElement("D");
109 ClassElement classE = findElement("E");
110 ClassMemberElement memberA = classA.fields[0];
111 ClassMemberElement memberB = classB.fields[0];
112 ClassMemberElement memberC = classC.fields[0];
113 ClassMemberElement memberD = classD.fields[0];
114 var futureA = getHierarchyMembers(searchEngine, memberA).then((members) {
115 expect(members, unorderedEquals([memberA, memberB, memberC]));
116 });
117 var futureB = getHierarchyMembers(searchEngine, memberB).then((members) {
118 expect(members, unorderedEquals([memberA, memberB, memberC]));
119 });
120 var futureC = getHierarchyMembers(searchEngine, memberC).then((members) {
121 expect(members, unorderedEquals([memberA, memberB, memberC]));
122 });
123 var futureD = getHierarchyMembers(searchEngine, memberD).then((members) {
124 expect(members, unorderedEquals([memberD]));
125 });
126 return Future.wait([futureA, futureB, futureC, futureD]);
127 }
128
129 Future test_getHierarchyMembers_methods() {
130 _indexTestUnit('''
131 class A {
132 foo() {}
133 }
134 class B extends A {
135 foo() {}
136 }
137 class C extends B {
138 foo() {}
139 }
140 class D {
141 foo() {}
142 }
143 class E extends D {
144 foo() {}
145 }
146 ''');
147 ClassElement classA = findElement("A");
148 ClassElement classB = findElement("B");
149 ClassElement classC = findElement("C");
150 ClassElement classD = findElement("D");
151 ClassElement classE = findElement("E");
152 ClassMemberElement memberA = classA.methods[0];
153 ClassMemberElement memberB = classB.methods[0];
154 ClassMemberElement memberC = classC.methods[0];
155 ClassMemberElement memberD = classD.methods[0];
156 ClassMemberElement memberE = classE.methods[0];
157 var futureA = getHierarchyMembers(searchEngine, memberA).then((members) {
158 expect(members, unorderedEquals([memberA, memberB, memberC]));
159 });
160 var futureB = getHierarchyMembers(searchEngine, memberB).then((members) {
161 expect(members, unorderedEquals([memberA, memberB, memberC]));
162 });
163 var futureC = getHierarchyMembers(searchEngine, memberC).then((members) {
164 expect(members, unorderedEquals([memberA, memberB, memberC]));
165 });
166 var futureD = getHierarchyMembers(searchEngine, memberD).then((members) {
167 expect(members, unorderedEquals([memberD, memberE]));
168 });
169 var futureE = getHierarchyMembers(searchEngine, memberE).then((members) {
170 expect(members, unorderedEquals([memberD, memberE]));
171 });
172 return Future.wait([futureA, futureB, futureC, futureD, futureE]);
173 }
174
175 Future test_getHierarchyMembers_withInterfaces() {
176 _indexTestUnit('''
177 class A {
178 foo() {}
179 }
180 class B implements A {
181 foo() {}
182 }
183 abstract class C implements A {
184 }
185 class D extends C {
186 foo() {}
187 }
188 class E {
189 foo() {}
190 }
191 ''');
192 ClassElement classA = findElement("A");
193 ClassElement classB = findElement("B");
194 ClassElement classC = findElement("C");
195 ClassElement classD = findElement("D");
196 ClassElement classE = findElement("E");
197 ClassMemberElement memberA = classA.methods[0];
198 ClassMemberElement memberB = classB.methods[0];
199 ClassMemberElement memberD = classD.methods[0];
200 var futureA = getHierarchyMembers(searchEngine, memberA).then((members) {
201 expect(members, unorderedEquals([memberA, memberB, memberD]));
202 });
203 var futureB = getHierarchyMembers(searchEngine, memberB).then((members) {
204 expect(members, unorderedEquals([memberA, memberB, memberD]));
205 });
206 var futureD = getHierarchyMembers(searchEngine, memberD).then((members) {
207 expect(members, unorderedEquals([memberA, memberB, memberD]));
208 });
209 return Future.wait([futureA, futureB, futureD]);
210 }
211
212 Future test_getSubClasses() {
213 _indexTestUnit('''
214 class A {}
215 class B extends A {}
216 class C extends B {}
217 class D extends B implements A {}
218 class M {}
219 class E extends A with M {}
220 ''');
221 ClassElement classA = findElement("A");
222 ClassElement classB = findElement("B");
223 ClassElement classC = findElement("C");
224 ClassElement classD = findElement("D");
225 ClassElement classM = findElement("M");
226 ClassElement classE = findElement("E");
227 var futureA = getSubClasses(searchEngine, classA).then((subs) {
228 expect(subs, unorderedEquals([classB, classC, classD, classE]));
229 });
230 var futureB = getSubClasses(searchEngine, classB).then((subs) {
231 expect(subs, unorderedEquals([classC, classD]));
232 });
233 var futureC = getSubClasses(searchEngine, classC).then((subs) {
234 expect(subs, isEmpty);
235 });
236 var futureM = getSubClasses(searchEngine, classM).then((subs) {
237 expect(subs, unorderedEquals([classE]));
238 });
239 return Future.wait([futureA, futureB, futureC, futureM]);
240 }
241
242 void test_getSuperClasses() {
243 _indexTestUnit('''
244 class A {}
245 class B extends A {}
246 class C extends B {}
247 class D extends B implements A {}
248 class M {}
249 class E extends A with M {}
250 class F implements A {}
251 ''');
252 ClassElement classA = findElement("A");
253 ClassElement classB = findElement("B");
254 ClassElement classC = findElement("C");
255 ClassElement classD = findElement("D");
256 ClassElement classE = findElement("E");
257 ClassElement classF = findElement("F");
258 ClassElement objectElement = classA.supertype.element;
259 // Object
260 {
261 Set<ClassElement> supers = getSuperClasses(objectElement);
262 expect(supers, isEmpty);
263 }
264 // A
265 {
266 Set<ClassElement> supers = getSuperClasses(classA);
267 expect(supers, unorderedEquals([objectElement]));
268 }
269 // B
270 {
271 Set<ClassElement> supers = getSuperClasses(classB);
272 expect(supers, unorderedEquals([objectElement, classA]));
273 }
274 // C
275 {
276 Set<ClassElement> supers = getSuperClasses(classC);
277 expect(supers, unorderedEquals([objectElement, classA, classB]));
278 }
279 // D
280 {
281 Set<ClassElement> supers = getSuperClasses(classD);
282 expect(supers, unorderedEquals([objectElement, classA, classB]));
283 }
284 // E
285 {
286 Set<ClassElement> supers = getSuperClasses(classE);
287 expect(supers, unorderedEquals([objectElement, classA]));
288 }
289 // F
290 {
291 Set<ClassElement> supers = getSuperClasses(classF);
292 expect(supers, unorderedEquals([objectElement, classA]));
293 }
294 }
295
296 void _indexTestUnit(String code) {
297 resolveTestUnit(code);
298 index.indexUnit(context, testUnit);
299 }
300 }
OLDNEW
« no previous file with comments | « pkg/analysis_services/lib/search/search_engine.dart ('k') | pkg/analysis_services/test/search/search_engine_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698