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

Side by Side Diff: pkg/analysis_server/test/domain_completion_test.dart

Issue 801863002: call dispose so completion manager can cancel pending operations (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: merge Created 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/analysis_server/lib/src/services/completion/completion_manager.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.domain.completion; 5 library test.domain.completion;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_server/src/analysis_server.dart'; 9 import 'package:analysis_server/src/analysis_server.dart';
10 import 'package:analysis_server/src/channel/channel.dart'; 10 import 'package:analysis_server/src/channel/channel.dart';
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 completionDomain = null; 78 completionDomain = null;
79 } 79 }
80 80
81 /** 81 /**
82 * Assert different managers are used for different sources 82 * Assert different managers are used for different sources
83 */ 83 */
84 test_2_requests_different_sources() { 84 test_2_requests_different_sources() {
85 expect(completionDomain.manager, isNull); 85 expect(completionDomain.manager, isNull);
86 sendRequest(testFile); 86 sendRequest(testFile);
87 expect(completionDomain.manager, isNotNull); 87 expect(completionDomain.manager, isNotNull);
88 CompletionManager expectedManager = completionDomain.manager; 88 MockCompletionManager expectedManager = completionDomain.manager;
89 expect(expectedManager.disposeCallCount, 0);
89 expect(completionDomain.mockContext.mockStream.listenCount, 1); 90 expect(completionDomain.mockContext.mockStream.listenCount, 1);
90 expect(completionDomain.mockContext.mockStream.cancelCount, 0); 91 expect(completionDomain.mockContext.mockStream.cancelCount, 0);
91 return pumpEventQueue().then((_) { 92 return pumpEventQueue().then((_) {
92 expect(completionDomain.manager, expectedManager); 93 expect(completionDomain.manager, expectedManager);
93 expect(completionDomain.mockManager.computeCallCount, 1); 94 expect(completionDomain.mockManager.computeCallCount, 1);
94 sendRequest(testFile2); 95 sendRequest(testFile2);
95 expect(completionDomain.manager, isNotNull); 96 expect(completionDomain.manager, isNotNull);
96 expect(completionDomain.manager, isNot(expectedManager)); 97 expect(completionDomain.manager, isNot(expectedManager));
98 expect(expectedManager.disposeCallCount, 1);
97 expectedManager = completionDomain.manager; 99 expectedManager = completionDomain.manager;
98 expect(completionDomain.mockContext.mockStream.listenCount, 2); 100 expect(completionDomain.mockContext.mockStream.listenCount, 2);
99 expect(completionDomain.mockContext.mockStream.cancelCount, 1); 101 expect(completionDomain.mockContext.mockStream.cancelCount, 1);
100 return pumpEventQueue(); 102 return pumpEventQueue();
101 }).then((_) { 103 }).then((_) {
102 expect(completionDomain.manager, expectedManager); 104 expect(completionDomain.manager, expectedManager);
103 expect(completionDomain.mockContext.mockStream.listenCount, 2); 105 expect(completionDomain.mockContext.mockStream.listenCount, 2);
104 expect(completionDomain.mockContext.mockStream.cancelCount, 1); 106 expect(completionDomain.mockContext.mockStream.cancelCount, 1);
105 expect(completionDomain.mockManager.computeCallCount, 1); 107 expect(completionDomain.mockManager.computeCallCount, 1);
106 }); 108 });
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 class MockCache extends CompletionCache { 435 class MockCache extends CompletionCache {
434 MockCache(AnalysisContext context, Source source) : super(context, source); 436 MockCache(AnalysisContext context, Source source) : super(context, source);
435 } 437 }
436 438
437 class MockCompletionManager implements CompletionManager { 439 class MockCompletionManager implements CompletionManager {
438 final AnalysisContext context; 440 final AnalysisContext context;
439 final Source source; 441 final Source source;
440 final SearchEngine searchEngine; 442 final SearchEngine searchEngine;
441 StreamController<CompletionResult> controller; 443 StreamController<CompletionResult> controller;
442 int computeCallCount = 0; 444 int computeCallCount = 0;
445 int disposeCallCount = 0;
443 446
444 MockCompletionManager(this.context, this.source, this.searchEngine); 447 MockCompletionManager(this.context, this.source, this.searchEngine);
445 448
446 @override 449 @override
447 Future<bool> computeCache() { 450 Future<bool> computeCache() {
448 return new Future.value(true); 451 return new Future.value(true);
449 } 452 }
450 453
451 @override 454 @override
452 void computeSuggestions(CompletionRequest request) { 455 void computeSuggestions(CompletionRequest request) {
453 ++computeCallCount; 456 ++computeCallCount;
454 CompletionResult result = new CompletionResult(0, 0, [], true); 457 CompletionResult result = new CompletionResult(0, 0, [], true);
455 controller.add(result); 458 controller.add(result);
456 } 459 }
457 460
458 @override 461 @override
462 void dispose() {
463 ++disposeCallCount;
464 }
465
466 @override
459 Stream<CompletionResult> results(CompletionRequest request) { 467 Stream<CompletionResult> results(CompletionRequest request) {
460 controller = new StreamController<CompletionResult>(onListen: () { 468 controller = new StreamController<CompletionResult>(onListen: () {
461 scheduleMicrotask(() { 469 scheduleMicrotask(() {
462 computeSuggestions(request); 470 computeSuggestions(request);
463 }); 471 });
464 }); 472 });
465 return controller.stream; 473 return controller.stream;
466 } 474 }
467 } 475 }
468 476
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 566
559 void contextsChangedRaw(ContextsChangedEvent newEvent) { 567 void contextsChangedRaw(ContextsChangedEvent newEvent) {
560 super.contextsChanged(newEvent); 568 super.contextsChanged(newEvent);
561 } 569 }
562 570
563 CompletionManager createCompletionManager(AnalysisContext context, 571 CompletionManager createCompletionManager(AnalysisContext context,
564 Source source, SearchEngine searchEngine) { 572 Source source, SearchEngine searchEngine) {
565 return new MockCompletionManager(mockContext, source, searchEngine); 573 return new MockCompletionManager(mockContext, source, searchEngine);
566 } 574 }
567 } 575 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/lib/src/services/completion/completion_manager.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698