| 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.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 Loading... |
| 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 } |
| OLD | NEW |