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

Unified Diff: pkg/analysis_server/test/domain_completion_test.dart

Issue 1538883003: remove internal streaming of results, remove obsolete test, cleanup unused code (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: merge Created 5 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/analysis_server/test/completion_test_support.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analysis_server/test/domain_completion_test.dart
diff --git a/pkg/analysis_server/test/domain_completion_test.dart b/pkg/analysis_server/test/domain_completion_test.dart
index 4658e4b73f12dfa9376160284a0a503b493f8b4f..0be9b83c4caf3691bbc9aa7465d1396f52411c91 100644
--- a/pkg/analysis_server/test/domain_completion_test.dart
+++ b/pkg/analysis_server/test/domain_completion_test.dart
@@ -7,276 +7,27 @@ library test.domain.completion;
import 'dart:async';
import 'package:analysis_server/plugin/protocol/protocol.dart';
-import 'package:analysis_server/src/analysis_server.dart';
-import 'package:analysis_server/src/channel/channel.dart';
-import 'package:analysis_server/src/context_manager.dart';
-import 'package:analysis_server/src/domain_analysis.dart';
import 'package:analysis_server/src/domain_completion.dart';
-import 'package:analysis_server/src/plugin/server_plugin.dart';
import 'package:analysis_server/src/provisional/completion/completion_core.dart'
show AnalysisRequest, CompletionRequest, CompletionResult;
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
-import 'package:analysis_server/src/services/completion/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/contribution_sorter.dart';
-import 'package:analysis_server/src/services/index/index.dart' show Index;
-import 'package:analysis_server/src/services/index/local_memory_index.dart';
-import 'package:analysis_server/src/services/search/search_engine.dart';
-import 'package:analyzer/file_system/file_system.dart';
-import 'package:analyzer/instrumentation/instrumentation.dart';
-import 'package:analyzer/source/pub_package_map_provider.dart';
-import 'package:analyzer/src/generated/engine.dart';
-import 'package:analyzer/src/generated/sdk.dart';
-import 'package:analyzer/src/generated/source.dart';
-import 'package:plugin/manager.dart';
-import 'package:plugin/plugin.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import 'package:unittest/unittest.dart';
import 'analysis_abstract.dart';
import 'domain_completion_util.dart';
-import 'mock_sdk.dart';
-import 'mocks.dart';
import 'utils.dart';
main() {
initializeTestEnvironment();
- defineReflectiveTests(CompletionManagerTest);
- defineReflectiveTests(CompletionTest);
+ defineReflectiveTests(CompletionDomainHandlerTest);
defineReflectiveTests(_NoSearchEngine);
}
@reflectiveTest
-class CompletionManagerTest extends AbstractAnalysisTest {
- AnalysisDomainHandler analysisDomain;
- Test_CompletionDomainHandler completionDomain;
- Request request;
- int requestCount = 0;
- String testFile2 = '/project/bin/test2.dart';
-
- AnalysisServer createAnalysisServer(Index index) {
- //
- // Collect plugins
- //
- ServerPlugin serverPlugin = new ServerPlugin();
- List<Plugin> plugins = <Plugin>[];
- plugins.addAll(AnalysisEngine.instance.requiredPlugins);
- plugins.add(serverPlugin);
- addServerPlugins(plugins);
- //
- // Process plugins
- //
- ExtensionManager manager = new ExtensionManager();
- manager.processPlugins(plugins);
- //
- // Create the server
- //
- return new Test_AnalysisServer(
- super.serverChannel,
- super.resourceProvider,
- super.packageMapProvider,
- index,
- serverPlugin,
- new AnalysisServerOptions(),
- new MockSdk(),
- InstrumentationService.NULL_SERVICE);
- }
-
- @override
- Index createIndex() {
- return createLocalMemoryIndex();
- }
-
- void sendRequest(String path) {
- String id = (++requestCount).toString();
- request = new CompletionGetSuggestionsParams(path, 0).toRequest(id);
- Response response = handler.handleRequest(request);
- expect(response, isResponseSuccess(id));
- }
-
- @override
- void setUp() {
- super.setUp();
- createProject();
- analysisDomain = handler;
- completionDomain = new Test_CompletionDomainHandler(server);
- handler = completionDomain;
- addTestFile('^library A; cl');
- addFile(testFile2, 'library B; cl');
- }
-
- void tearDown() {
- super.tearDown();
- analysisDomain = null;
- completionDomain = null;
- }
-
- /**
- * Assert different managers are used for different sources
- */
- test_2_requests_different_sources() {
- expect(completionDomain.manager, isNull);
- sendRequest(testFile);
- expect(completionDomain.manager, isNotNull);
- MockCompletionManager expectedManager = completionDomain.manager;
- expect(expectedManager.disposeCallCount, 0);
- expect(completionDomain.mockContext.mockStream.listenCount, 1);
- expect(completionDomain.mockContext.mockStream.cancelCount, 0);
- return pumpEventQueue().then((_) {
- expect(completionDomain.manager, expectedManager);
- expect(completionDomain.mockManager.computeCallCount, 1);
- sendRequest(testFile2);
- expect(completionDomain.manager, isNotNull);
- expect(completionDomain.manager, isNot(expectedManager));
- expect(expectedManager.disposeCallCount, 1);
- expectedManager = completionDomain.manager;
- expect(completionDomain.mockContext.mockStream.listenCount, 2);
- expect(completionDomain.mockContext.mockStream.cancelCount, 1);
- return pumpEventQueue();
- }).then((_) {
- expect(completionDomain.manager, expectedManager);
- expect(completionDomain.mockContext.mockStream.listenCount, 2);
- expect(completionDomain.mockContext.mockStream.cancelCount, 1);
- expect(completionDomain.mockManager.computeCallCount, 1);
- });
- }
-
- /**
- * Assert same manager is used for multiple requests on same source
- */
- test_2_requests_same_source() {
- expect(completionDomain.manager, isNull);
- sendRequest(testFile);
- expect(completionDomain.manager, isNotNull);
- expect(completionDomain.manager.source, isNotNull);
- CompletionManager expectedManager = completionDomain.manager;
- expect(completionDomain.mockContext.mockStream.listenCount, 1);
- expect(completionDomain.mockContext.mockStream.cancelCount, 0);
- return pumpEventQueue().then((_) {
- expect(completionDomain.manager, expectedManager);
- expect(completionDomain.mockManager.computeCallCount, 1);
- sendRequest(testFile);
- expect(completionDomain.manager, expectedManager);
- expect(completionDomain.mockContext.mockStream.listenCount, 1);
- expect(completionDomain.mockContext.mockStream.cancelCount, 0);
- return pumpEventQueue();
- }).then((_) {
- expect(completionDomain.manager, expectedManager);
- expect(completionDomain.mockContext.mockStream.listenCount, 1);
- expect(completionDomain.mockContext.mockStream.cancelCount, 0);
- expect(completionDomain.mockManager.computeCallCount, 2);
- });
- }
-
- /**
- * Assert manager is NOT cleared when context NOT associated with manager changes.
- */
- test_contextsChanged_different() {
- sendRequest(testFile);
- CompletionManager expectedManager;
- return pumpEventQueue().then((_) {
- expect(completionDomain.manager, isNotNull);
- expectedManager = completionDomain.manager;
- completionDomain.contextsChangedRaw(
- new ContextsChangedEvent(changed: [new MockContext()]));
- return pumpEventQueue();
- }).then((_) {
- expect(completionDomain.manager, expectedManager);
- });
- }
-
- /**
- * Assert manager is cleared when context associated with manager changes.
- */
- test_contextsChanged_same() {
- sendRequest(testFile);
- return pumpEventQueue().then((_) {
- expect(completionDomain.manager, isNotNull);
- completionDomain.contextsChangedRaw(
- new ContextsChangedEvent(changed: [completionDomain.mockContext]));
- return pumpEventQueue();
- }).then((_) {
- expect(completionDomain.manager, isNull);
- });
- }
-
- /**
- * Assert manager is cleared when analysis roots are set
- */
- test_setAnalysisRoots() {
- sendRequest(testFile);
- return pumpEventQueue().then((_) {
- expect(completionDomain.manager, isNotNull);
- request = new AnalysisSetAnalysisRootsParams([], []).toRequest('7');
- Response response = analysisDomain.handleRequest(request);
- expect(response, isResponseSuccess('7'));
- return pumpEventQueue();
- }).then((_) {
- expect(completionDomain.manager, isNull);
- });
- }
-
- /**
- * Assert manager is cleared when source NOT associated with manager is changed.
- */
- test_sourcesChanged_different_source_changed() {
- sendRequest(testFile);
- return pumpEventQueue().then((_) {
- expect(completionDomain.manager, isNotNull);
- ContextSourcePair contextSource = server.getContextSourcePair(testFile2);
- ChangeSet changeSet = new ChangeSet();
- changeSet.changedSource(contextSource.source);
- completionDomain.sourcesChanged(new SourcesChangedEvent(changeSet));
- expect(completionDomain.manager, isNull);
- });
- }
-
- /**
- * Assert manager is NOT cleared when source associated with manager is changed.
- */
- test_sourcesChanged_same_source_changed() {
- sendRequest(testFile);
- return pumpEventQueue().then((_) {
- expect(completionDomain.manager, isNotNull);
- CompletionManager expectedManager = completionDomain.manager;
- ChangeSet changeSet = new ChangeSet();
- changeSet.changedSource(completionDomain.manager.source);
- completionDomain.sourcesChanged(new SourcesChangedEvent(changeSet));
- expect(completionDomain.manager, expectedManager);
- });
- }
-
- /**
- * Assert manager is cleared when source is deleted
- */
- test_sourcesChanged_source_deleted() {
- sendRequest(testFile);
- return pumpEventQueue().then((_) {
- expect(completionDomain.manager, isNotNull);
- ChangeSet changeSet = new ChangeSet();
- changeSet.deletedSource(completionDomain.manager.source);
- completionDomain.sourcesChanged(new SourcesChangedEvent(changeSet));
- expect(completionDomain.manager, isNull);
- });
- }
-
- /**
- * Assert manager is cleared when source is removed
- */
- test_sourcesChanged_source_removed() {
- sendRequest(testFile);
- return pumpEventQueue().then((_) {
- expect(completionDomain.manager, isNotNull);
- ChangeSet changeSet = new ChangeSet();
- changeSet.removedSource(completionDomain.manager.source);
- completionDomain.sourcesChanged(new SourcesChangedEvent(changeSet));
- expect(completionDomain.manager, isNull);
- });
- }
-}
-
-@reflectiveTest
-class CompletionTest extends AbstractCompletionDomainTest {
+class CompletionDomainHandlerTest extends AbstractCompletionDomainTest {
test_html() {
testFile = '/project/web/test.html';
addTestFile('''
@@ -693,74 +444,6 @@ class B extends A {m() {^}}
}
}
-class MockCompletionManager implements CompletionManager {
- final AnalysisContext context;
- final Source source;
- final SearchEngine searchEngine;
- StreamController<CompletionResult> controller;
- int computeCallCount = 0;
- int disposeCallCount = 0;
-
- MockCompletionManager(this.context, this.source, this.searchEngine);
-
- @override
- Future<bool> computeCache() {
- return new Future.value(true);
- }
-
- @override
- void computeSuggestions(CompletionRequest request) {
- ++computeCallCount;
- CompletionResult result = new CompletionResultImpl(0, 0, [], true);
- controller.add(result);
- }
-
- @override
- void dispose() {
- ++disposeCallCount;
- }
-
- @override
- Stream<CompletionResult> results(CompletionRequest request) {
- controller = new StreamController<CompletionResult>(onListen: () {
- scheduleMicrotask(() {
- computeSuggestions(request);
- });
- });
- return controller.stream;
- }
-}
-
-/**
- * Mock [AnaysisContext] for tracking usage of onSourcesChanged.
- */
-class MockContext implements AnalysisContext {
- static final SourceFactory DEFAULT_SOURCE_FACTORY = new SourceFactory([]);
-
- MockStream<SourcesChangedEvent> mockStream;
-
- SourceFactory sourceFactory = DEFAULT_SOURCE_FACTORY;
-
- MockContext() {
- mockStream = new MockStream<SourcesChangedEvent>();
- }
-
- @override
- Stream<SourcesChangedEvent> get onSourcesChanged => mockStream;
-
- @override
- bool exists(Source source) {
- return source != null && source.exists();
- }
-
- @override
- TimestampedData<String> getContents(Source source) {
- return source.contents;
- }
-
- noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
-}
-
class MockRelevancySorter implements DartContributionSorter {
bool enabled = true;
@@ -774,101 +457,6 @@ class MockRelevancySorter implements DartContributionSorter {
}
}
-/**
- * Mock stream for tracking calls to listen and subscription.cancel.
- */
-class MockStream<E> implements Stream<E> {
- MockSubscription<E> mockSubscription = new MockSubscription<E>();
- int listenCount = 0;
-
- int get cancelCount => mockSubscription.cancelCount;
-
- @override
- StreamSubscription<E> listen(void onData(E event),
- {Function onError, void onDone(), bool cancelOnError}) {
- ++listenCount;
- return mockSubscription;
- }
-
- noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
-}
-
-/**
- * Mock subscription for tracking calls to subscription.cancel.
- */
-class MockSubscription<E> implements StreamSubscription<E> {
- int cancelCount = 0;
-
- Future cancel() {
- ++cancelCount;
- return new Future.value(true);
- }
-
- noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
-}
-
-class Test_AnalysisServer extends AnalysisServer {
- final MockContext mockContext = new MockContext();
-
- Test_AnalysisServer(
- ServerCommunicationChannel channel,
- ResourceProvider resourceProvider,
- PubPackageMapProvider packageMapProvider,
- Index index,
- ServerPlugin serverPlugin,
- AnalysisServerOptions analysisServerOptions,
- DartSdk defaultSdk,
- InstrumentationService instrumentationService)
- : super(
- channel,
- resourceProvider,
- packageMapProvider,
- index,
- serverPlugin,
- analysisServerOptions,
- defaultSdk,
- instrumentationService);
-
- @override
- AnalysisContext getAnalysisContext(String path) {
- return mockContext;
- }
-
- @override
- ContextSourcePair getContextSourcePair(String path) {
- ContextSourcePair pair = super.getContextSourcePair(path);
- return new ContextSourcePair(mockContext, pair.source);
- }
-}
-
-/**
- * A [CompletionDomainHandler] subclass that returns a mock completion manager
- * so that the domain handler cache management can be tested.
- */
-class Test_CompletionDomainHandler extends CompletionDomainHandler {
- Test_CompletionDomainHandler(Test_AnalysisServer server) : super(server);
-
- MockContext get mockContext => (server as Test_AnalysisServer).mockContext;
-
- MockCompletionManager get mockManager => manager;
-
- void contextsChanged(ContextsChangedEvent event) {
- contextsChangedRaw(new ContextsChangedEvent(
- added: event.added.length > 0 ? [mockContext] : [],
- changed: event.changed.length > 0 ? [mockContext] : [],
- removed: event.removed.length > 0 ? [mockContext] : []));
- }
-
- void contextsChangedRaw(ContextsChangedEvent newEvent) {
- super.contextsChanged(newEvent);
- }
-
- CompletionManager createCompletionManager(
- AnalysisServer server, AnalysisContext context, Source source) {
- return new MockCompletionManager(mockContext, source, searchEngine);
- }
-}
-
@reflectiveTest
class _NoSearchEngine extends AbstractAnalysisTest {
@override
« no previous file with comments | « pkg/analysis_server/test/completion_test_support.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698