Index: pkg/analysis_server/test/operation/operation_queue_test.dart |
diff --git a/pkg/analysis_server/test/operation/operation_queue_test.dart b/pkg/analysis_server/test/operation/operation_queue_test.dart |
deleted file mode 100644 |
index 9ffef65c5b2221854ace4753aedda817eaed2079..0000000000000000000000000000000000000000 |
--- a/pkg/analysis_server/test/operation/operation_queue_test.dart |
+++ /dev/null |
@@ -1,250 +0,0 @@ |
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-import 'package:analysis_server/src/analysis_server.dart'; |
-import 'package:analysis_server/src/context_manager.dart'; |
-import 'package:analysis_server/src/operation/operation.dart'; |
-import 'package:analysis_server/src/operation/operation_analysis.dart'; |
-import 'package:analysis_server/src/operation/operation_queue.dart'; |
-import 'package:analysis_server/src/services/search/search_engine.dart'; |
-import 'package:analyzer/file_system/file_system.dart'; |
-import 'package:analyzer/src/generated/engine.dart'; |
-import 'package:analyzer/src/generated/source.dart'; |
-import 'package:test/test.dart'; |
-import 'package:test_reflective_loader/test_reflective_loader.dart'; |
-import 'package:typed_mock/typed_mock.dart'; |
- |
-import '../mocks.dart'; |
- |
-main() { |
- defineReflectiveSuite(() { |
- defineReflectiveTests(ServerOperationQueueTest); |
- }); |
-} |
- |
-/** |
- * Return a [ServerOperation] mock with the given priority. |
- */ |
-ServerOperation mockOperation(ServerOperationPriority priority) { |
- ServerOperation operation = new _ServerOperationMock(); |
- when(operation.priority).thenReturn(priority); |
- return operation; |
-} |
- |
-class AnalysisContextMock extends TypedMock implements InternalAnalysisContext { |
- List<Source> prioritySources = <Source>[]; |
-} |
- |
-class AnalysisServerMock extends TypedMock implements AnalysisServer { |
- @override |
- final ResourceProvider resourceProvider; |
- |
- @override |
- final SearchEngine searchEngine; |
- |
- AnalysisServerMock({this.resourceProvider, this.searchEngine}); |
-} |
- |
-class ServerContextManagerMock extends TypedMock implements ContextManager {} |
- |
-@reflectiveTest |
-class ServerOperationQueueTest { |
- ServerOperationQueue queue = new ServerOperationQueue(); |
- |
- void test_add_withMerge() { |
- var opA = new _MergeableOperationMock(); |
- var opB = new _MergeableOperationMock(); |
- var opC = new _MergeableOperationMock(); |
- when(opA.merge(opC)).thenReturn(true); |
- when(opA.merge(anyObject)).thenReturn(false); |
- when(opB.merge(anyObject)).thenReturn(false); |
- when(opC.merge(anyObject)).thenReturn(false); |
- queue.add(opA); |
- queue.add(opB); |
- queue.add(opC); |
- expect(queue.take(), same(opA)); |
- expect(queue.take(), same(opB)); |
- // no opC, it was merged into opA |
- expect(queue.isEmpty, isTrue); |
- } |
- |
- void test_clear() { |
- var operationA = mockOperation(ServerOperationPriority.ANALYSIS); |
- var operationB = mockOperation(ServerOperationPriority.ANALYSIS_CONTINUE); |
- queue.add(operationA); |
- queue.add(operationB); |
- // there are some operations |
- expect(queue.isEmpty, false); |
- // clear - no operations |
- queue.clear(); |
- expect(queue.isEmpty, true); |
- } |
- |
- void test_contextRemoved() { |
- var contextA = new AnalysisContextMock(); |
- var contextB = new AnalysisContextMock(); |
- var opA1 = new _ServerOperationMock(contextA); |
- var opA2 = new _ServerOperationMock(contextA); |
- var opB1 = new _ServerOperationMock(contextB); |
- var opB2 = new _ServerOperationMock(contextB); |
- when(opA1.priority) |
- .thenReturn(ServerOperationPriority.ANALYSIS_NOTIFICATION); |
- when(opA2.priority) |
- .thenReturn(ServerOperationPriority.ANALYSIS_NOTIFICATION); |
- when(opB1.priority) |
- .thenReturn(ServerOperationPriority.ANALYSIS_NOTIFICATION); |
- when(opB2.priority) |
- .thenReturn(ServerOperationPriority.ANALYSIS_NOTIFICATION); |
- queue.add(opA1); |
- queue.add(opB1); |
- queue.add(opA2); |
- queue.add(opB2); |
- queue.contextRemoved(contextA); |
- expect(queue.take(), same(opB1)); |
- expect(queue.take(), same(opB2)); |
- } |
- |
- void test_isEmpty_false() { |
- var operation = mockOperation(ServerOperationPriority.ANALYSIS); |
- queue.add(operation); |
- expect(queue.isEmpty, isFalse); |
- } |
- |
- void test_isEmpty_true() { |
- expect(queue.isEmpty, isTrue); |
- } |
- |
- void test_peek() { |
- var operationA = mockOperation(ServerOperationPriority.ANALYSIS); |
- var operationB = mockOperation(ServerOperationPriority.ANALYSIS); |
- queue.add(operationA); |
- queue.add(operationB); |
- expect(queue.peek(), operationA); |
- expect(queue.peek(), operationA); |
- expect(queue.peek(), operationA); |
- } |
- |
- void test_peek_empty() { |
- expect(queue.peek(), isNull); |
- } |
- |
- void test_reschedule() { |
- var prioritySource = new MockSource(); |
- var analysisContextA = new AnalysisContextMock(); |
- var analysisContextB = new AnalysisContextMock(); |
- var operationA = new PerformAnalysisOperation(analysisContextA, false); |
- var operationB = new PerformAnalysisOperation(analysisContextB, false); |
- queue.add(operationA); |
- queue.add(operationB); |
- // update priority sources and reschedule |
- analysisContextB.prioritySources = [prioritySource]; |
- queue.reschedule(); |
- // verify order |
- expect(queue.take(), operationB); |
- expect(queue.take(), operationA); |
- expect(queue.take(), isNull); |
- } |
- |
- void test_sourceAboutToChange() { |
- Source sourceA = new _SourceMock(); |
- Source sourceB = new _SourceMock(); |
- var opA1 = new _SourceSensitiveOperationMock(sourceA); |
- var opA2 = new _SourceSensitiveOperationMock(sourceA); |
- var opB1 = new _SourceSensitiveOperationMock(sourceB); |
- var opB2 = new _SourceSensitiveOperationMock(sourceB); |
- queue.add(opA1); |
- queue.add(opB1); |
- queue.add(opA2); |
- queue.add(opB2); |
- queue.sourceAboutToChange(sourceA); |
- expect(queue.take(), same(opB1)); |
- expect(queue.take(), same(opB2)); |
- } |
- |
- void test_take_continueAnalysisFirst() { |
- var analysisContext = new AnalysisContextMock(); |
- var operationA = new PerformAnalysisOperation(analysisContext, false); |
- var operationB = new PerformAnalysisOperation(analysisContext, true); |
- queue.add(operationA); |
- queue.add(operationB); |
- expect(queue.take(), operationB); |
- expect(queue.take(), operationA); |
- expect(queue.take(), isNull); |
- } |
- |
- void test_take_empty() { |
- expect(queue.take(), isNull); |
- } |
- |
- void test_take_priorityContextFirst() { |
- var prioritySource = new MockSource(); |
- var analysisContextA = new AnalysisContextMock(); |
- var analysisContextB = new AnalysisContextMock(); |
- analysisContextB.prioritySources = [prioritySource]; |
- var operationA = new PerformAnalysisOperation(analysisContextA, false); |
- var operationB = new PerformAnalysisOperation(analysisContextB, false); |
- queue.add(operationA); |
- queue.add(operationB); |
- expect(queue.take(), operationB); |
- expect(queue.take(), operationA); |
- expect(queue.take(), isNull); |
- } |
- |
- void test_take_useOperationPriorities() { |
- var operationA = mockOperation(ServerOperationPriority.ANALYSIS); |
- var operationB = mockOperation(ServerOperationPriority.ANALYSIS_CONTINUE); |
- var operationC = mockOperation(ServerOperationPriority.PRIORITY_ANALYSIS); |
- queue.add(operationA); |
- queue.add(operationB); |
- queue.add(operationC); |
- expect(queue.take(), operationC); |
- expect(queue.take(), operationB); |
- expect(queue.take(), operationA); |
- expect(queue.take(), isNull); |
- } |
- |
- void test_takeIf() { |
- var operationA = mockOperation(ServerOperationPriority.ANALYSIS); |
- var operationB = mockOperation(ServerOperationPriority.ANALYSIS); |
- queue.add(operationA); |
- queue.add(operationB); |
- expect(queue.takeIf((_) => false), isNull); |
- expect(queue.takeIf((operation) => operation == operationB), operationB); |
- expect(queue.takeIf((operation) => operation == operationB), isNull); |
- expect(queue.takeIf((operation) => operation == operationA), operationA); |
- expect(queue.isEmpty, isTrue); |
- } |
-} |
- |
-class _MergeableOperationMock extends TypedMock implements MergeableOperation { |
- @override |
- ServerOperationPriority get priority { |
- return ServerOperationPriority.ANALYSIS_NOTIFICATION; |
- } |
-} |
- |
-class _ServerOperationMock extends TypedMock implements ServerOperation { |
- final AnalysisContext context; |
- |
- _ServerOperationMock([this.context]); |
-} |
- |
-class _SourceMock extends TypedMock implements Source {} |
- |
-class _SourceSensitiveOperationMock extends TypedMock |
- implements SourceSensitiveOperation { |
- final Source source; |
- |
- _SourceSensitiveOperationMock(this.source); |
- |
- @override |
- ServerOperationPriority get priority { |
- return ServerOperationPriority.ANALYSIS_NOTIFICATION; |
- } |
- |
- @override |
- bool shouldBeDiscardedOnSourceChange(Source source) { |
- return source == this.source; |
- } |
-} |