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.domain.analysis.abstract; | 5 library test.domain.analysis.abstract; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 | 8 |
9 import 'package:analysis_server/plugin/protocol/protocol.dart'; | 9 import 'package:analysis_server/plugin/protocol/protocol.dart'; |
10 import 'package:analysis_server/src/analysis_server.dart'; | 10 import 'package:analysis_server/src/analysis_server.dart'; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 <GeneralAnalysisService>[]; | 57 <GeneralAnalysisService>[]; |
58 final Map<AnalysisService, List<String>> analysisSubscriptions = {}; | 58 final Map<AnalysisService, List<String>> analysisSubscriptions = {}; |
59 | 59 |
60 String projectPath = '/project'; | 60 String projectPath = '/project'; |
61 String testFolder = '/project/bin'; | 61 String testFolder = '/project/bin'; |
62 String testFile = '/project/bin/test.dart'; | 62 String testFile = '/project/bin/test.dart'; |
63 String testCode; | 63 String testCode; |
64 | 64 |
65 AbstractAnalysisTest(); | 65 AbstractAnalysisTest(); |
66 | 66 |
| 67 AnalysisDomainHandler get analysisHandler => server.handlers |
| 68 .singleWhere((handler) => handler is AnalysisDomainHandler); |
| 69 |
67 void addAnalysisSubscription(AnalysisService service, String file) { | 70 void addAnalysisSubscription(AnalysisService service, String file) { |
68 // add file to subscription | 71 // add file to subscription |
69 var files = analysisSubscriptions[service]; | 72 var files = analysisSubscriptions[service]; |
70 if (files == null) { | 73 if (files == null) { |
71 files = <String>[]; | 74 files = <String>[]; |
72 analysisSubscriptions[service] = files; | 75 analysisSubscriptions[service] = files; |
73 } | 76 } |
74 files.add(file); | 77 files.add(file); |
75 // set subscriptions | 78 // set subscriptions |
76 Request request = new AnalysisSetSubscriptionsParams(analysisSubscriptions) | 79 Request request = new AnalysisSetSubscriptionsParams(analysisSubscriptions) |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 return null; | 139 return null; |
137 } | 140 } |
138 | 141 |
139 /** | 142 /** |
140 * Creates a project `/project`. | 143 * Creates a project `/project`. |
141 */ | 144 */ |
142 void createProject() { | 145 void createProject() { |
143 resourceProvider.newFolder(projectPath); | 146 resourceProvider.newFolder(projectPath); |
144 Request request = | 147 Request request = |
145 new AnalysisSetAnalysisRootsParams([projectPath], []).toRequest('0'); | 148 new AnalysisSetAnalysisRootsParams([projectPath], []).toRequest('0'); |
146 handleSuccessfulRequest(request); | 149 handleSuccessfulRequest(request, handler: analysisHandler); |
147 } | 150 } |
148 | 151 |
149 /** | 152 /** |
150 * Returns the offset of [search] in [testCode]. | 153 * Returns the offset of [search] in [testCode]. |
151 * Fails if not found. | 154 * Fails if not found. |
152 */ | 155 */ |
153 int findFileOffset(String path, String search) { | 156 int findFileOffset(String path, String search) { |
154 File file = resourceProvider.getResource(path) as File; | 157 File file = resourceProvider.getResource(path) as File; |
155 String code = file.createSource().contents.data; | 158 String code = file.createSource().contents.data; |
156 int offset = code.indexOf(search); | 159 int offset = code.indexOf(search); |
157 expect(offset, isNot(-1), reason: '"$search" in\n$code'); | 160 expect(offset, isNot(-1), reason: '"$search" in\n$code'); |
158 return offset; | 161 return offset; |
159 } | 162 } |
160 | 163 |
161 /** | 164 /** |
162 * Returns the offset of [search] in [testCode]. | 165 * Returns the offset of [search] in [testCode]. |
163 * Fails if not found. | 166 * Fails if not found. |
164 */ | 167 */ |
165 int findOffset(String search) { | 168 int findOffset(String search) { |
166 int offset = testCode.indexOf(search); | 169 int offset = testCode.indexOf(search); |
167 expect(offset, isNot(-1)); | 170 expect(offset, isNot(-1)); |
168 return offset; | 171 return offset; |
169 } | 172 } |
170 | 173 |
171 /** | 174 /** |
172 * Validates that the given [request] is handled successfully. | 175 * Validates that the given [request] is handled successfully. |
173 */ | 176 */ |
174 Response handleSuccessfulRequest(Request request) { | 177 Response handleSuccessfulRequest(Request request, {RequestHandler handler}) { |
| 178 handler ??= this.handler; |
175 Response response = handler.handleRequest(request); | 179 Response response = handler.handleRequest(request); |
176 expect(response, isResponseSuccess(request.id)); | 180 expect(response, isResponseSuccess(request.id)); |
177 return response; | 181 return response; |
178 } | 182 } |
179 | 183 |
180 String modifyTestFile(String content) { | 184 String modifyTestFile(String content) { |
181 addFile(testFile, content); | 185 addFile(testFile, content); |
182 this.testCode = content; | 186 this.testCode = content; |
183 return testFile; | 187 return testFile; |
184 } | 188 } |
(...skipping 11 matching lines...) Expand all Loading... |
196 .toRequest('0'); | 200 .toRequest('0'); |
197 handleSuccessfulRequest(request); | 201 handleSuccessfulRequest(request); |
198 } | 202 } |
199 | 203 |
200 void setUp() { | 204 void setUp() { |
201 serverChannel = new MockServerChannel(); | 205 serverChannel = new MockServerChannel(); |
202 resourceProvider = new MemoryResourceProvider(); | 206 resourceProvider = new MemoryResourceProvider(); |
203 packageMapProvider = new MockPackageMapProvider(); | 207 packageMapProvider = new MockPackageMapProvider(); |
204 Index index = createIndex(); | 208 Index index = createIndex(); |
205 server = createAnalysisServer(index); | 209 server = createAnalysisServer(index); |
206 handler = server.handlers | 210 handler = analysisHandler; |
207 .singleWhere((handler) => handler is AnalysisDomainHandler); | |
208 // listen for notifications | 211 // listen for notifications |
209 Stream<Notification> notificationStream = | 212 Stream<Notification> notificationStream = |
210 serverChannel.notificationController.stream; | 213 serverChannel.notificationController.stream; |
211 notificationStream.listen((Notification notification) { | 214 notificationStream.listen((Notification notification) { |
212 processNotification(notification); | 215 processNotification(notification); |
213 }); | 216 }); |
214 } | 217 } |
215 | 218 |
216 void tearDown() { | 219 void tearDown() { |
217 server.done(); | 220 server.done(); |
(...skipping 11 matching lines...) Expand all Loading... |
229 } | 232 } |
230 | 233 |
231 /** | 234 /** |
232 * Completes with a successful [Response] for the given [request]. | 235 * Completes with a successful [Response] for the given [request]. |
233 * Otherwise fails. | 236 * Otherwise fails. |
234 */ | 237 */ |
235 Future<Response> waitResponse(Request request) async { | 238 Future<Response> waitResponse(Request request) async { |
236 return serverChannel.sendRequest(request); | 239 return serverChannel.sendRequest(request); |
237 } | 240 } |
238 } | 241 } |
OLD | NEW |