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

Side by Side Diff: pkg/analysis_server/test/search/abstract_search_domain.dart

Issue 894323003: Wait for analysis in search domain. Rewrite with async/await. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 10 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
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.search.abstract_search_domain; 5 library test.search.abstract_search_domain;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_server/src/constants.dart'; 9 import 'package:analysis_server/src/constants.dart';
10 import 'package:analysis_server/src/protocol.dart'; 10 import 'package:analysis_server/src/protocol.dart';
11 import 'package:analysis_server/src/search/search_domain.dart'; 11 import 'package:analysis_server/src/search/search_domain.dart';
12 import 'package:analysis_server/src/services/index/index.dart' show Index; 12 import 'package:analysis_server/src/services/index/index.dart' show Index;
13 import 'package:analysis_server/src/services/index/local_memory_index.dart'; 13 import 'package:analysis_server/src/services/index/local_memory_index.dart';
14 import 'package:unittest/unittest.dart'; 14 import 'package:unittest/unittest.dart';
15 15
16 import '../analysis_abstract.dart'; 16 import '../analysis_abstract.dart';
17 17
18 18
19 class AbstractSearchDomainTest extends AbstractAnalysisTest { 19 class AbstractSearchDomainTest extends AbstractAnalysisTest {
20 final Map<String, _ResultSet> resultSets = {};
20 String searchId; 21 String searchId;
21 bool searchDone = false;
22 List<SearchResult> results = <SearchResult>[]; 22 List<SearchResult> results = <SearchResult>[];
23 SearchResult result; 23 SearchResult result;
24 24
25 void assertHasResult(SearchResultKind kind, String search, [int length]) { 25 void assertHasResult(SearchResultKind kind, String search, [int length]) {
26 int offset = findOffset(search); 26 int offset = findOffset(search);
27 if (length == null) { 27 if (length == null) {
28 length = findIdentifierLength(search); 28 length = findIdentifierLength(search);
29 } 29 }
30 findResult(kind, testFile, offset, length, true); 30 findResult(kind, testFile, offset, length, true);
31 } 31 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 String getPathString(List<Element> path) { 68 String getPathString(List<Element> path) {
69 return path.map((Element element) { 69 return path.map((Element element) {
70 return '${element.kind.name} ${element.name}'; 70 return '${element.kind.name} ${element.name}';
71 }).join('\n'); 71 }).join('\n');
72 } 72 }
73 73
74 @override 74 @override
75 void processNotification(Notification notification) { 75 void processNotification(Notification notification) {
76 if (notification.event == SEARCH_RESULTS) { 76 if (notification.event == SEARCH_RESULTS) {
77 var params = new SearchResultsParams.fromNotification(notification); 77 var params = new SearchResultsParams.fromNotification(notification);
78 if (params.id == searchId) { 78 String id = params.id;
79 results.addAll(params.results); 79 _ResultSet resultSet = resultSets[id];
80 searchDone = params.isLast; 80 if (resultSet == null) {
81 resultSet = new _ResultSet(id);
82 resultSets[id] = resultSet;
81 } 83 }
84 resultSet.results.addAll(params.results);
85 resultSet.done = params.isLast;
82 } 86 }
83 } 87 }
84 88
85 @override 89 @override
86 void setUp() { 90 void setUp() {
87 super.setUp(); 91 super.setUp();
92 server.handlers = [new SearchDomainHandler(server),];
88 createProject(); 93 createProject();
89 handler = new SearchDomainHandler(server);
90 } 94 }
91 95
92 Future waitForSearchResults() { 96 Future waitForSearchResults() {
93 if (searchDone) { 97 _ResultSet resultSet = resultSets[searchId];
98 if (resultSet != null && resultSet.done) {
99 results = resultSet.results;
94 return new Future.value(); 100 return new Future.value();
95 } 101 }
96 return new Future.delayed(Duration.ZERO, waitForSearchResults); 102 return new Future.delayed(Duration.ZERO, waitForSearchResults);
97 } 103 }
98 } 104 }
105
106
107 class _ResultSet {
108 final String id;
109 final List<SearchResult> results = <SearchResult>[];
110 bool done = false;
111
112 _ResultSet(this.id);
113 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698