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

Unified Diff: pkg/analyzer_plugin/test/plugin/mocks.dart

Issue 2932553004: Add tests for recently added mixins and improve plugin tests (Closed)
Patch Set: Created 3 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: pkg/analyzer_plugin/test/plugin/mocks.dart
diff --git a/pkg/analyzer_plugin/test/plugin/mocks.dart b/pkg/analyzer_plugin/test/plugin/mocks.dart
new file mode 100644
index 0000000000000000000000000000000000000000..22191c19edf0083497849aa5c99df60287d4b0f2
--- /dev/null
+++ b/pkg/analyzer_plugin/test/plugin/mocks.dart
@@ -0,0 +1,162 @@
+// Copyright (c) 2017, 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 'dart:async';
+
+import 'package:analyzer/file_system/file_system.dart';
+import 'package:analyzer/src/dart/analysis/driver.dart';
+import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer_plugin/channel/channel.dart';
+import 'package:analyzer_plugin/plugin/plugin.dart';
+import 'package:analyzer_plugin/protocol/protocol.dart';
+import 'package:analyzer_plugin/protocol/protocol_generated.dart';
+import 'package:analyzer_plugin/src/protocol/protocol_internal.dart';
+import 'package:front_end/src/base/timestamped_data.dart';
+import 'package:test/test.dart';
+
+class MockAnalysisDriver extends AnalysisDriverGeneric {
+ /**
+ * The files that have been added to this driver.
+ */
+ List<String> addedFiles = <String>[];
+
+ @override
+ bool get hasFilesToAnalyze => false;
+
+ @override
+ set priorityFiles(List<String> priorityPaths) {}
+
+ @override
+ AnalysisDriverPriority get workPriority => AnalysisDriverPriority.nothing;
+
+ @override
+ void addFile(String path) {
+ addedFiles.add(path);
+ }
+
+ @override
+ void dispose() {}
+
+ @override
+ Future<Null> performWork() => new Future.value(null);
+}
+
+class MockChannel implements PluginCommunicationChannel {
+ bool _closed = false;
+
+ void Function(Request) _onRequest;
+ Function _onError;
+ void Function() _onDone;
+
+ int idCounter = 0;
+
+ Map<String, Completer<Response>> completers = <String, Completer<Response>>{};
+
+ @override
+ void close() {
+ _closed = true;
+ }
+
+ @override
+ void listen(void onRequest(Request request),
+ {Function onError, void onDone()}) {
+ _onRequest = onRequest;
+ _onError = onError;
+ _onDone = onDone;
+ }
+
+ void sendDone() {
+ _onDone();
+ }
+
+ void sendError(Object exception, StackTrace stackTrace) {
+ _onError(exception, stackTrace);
+ }
+
+ @override
+ void sendNotification(Notification notification) {
+ if (_closed) {
+ throw new StateError('Sent a notification to a closed channel');
+ }
+ fail('Unexpected invocation of sendNotification');
+ }
+
+ Future<Response> sendRequest(RequestParams params) {
+ String id = (idCounter++).toString();
+ Request request = params.toRequest(id);
+ Completer<Response> completer = new Completer<Response>();
+ completers[request.id] = completer;
+ _onRequest(request);
+ return completer.future;
+ }
+
+ @override
+ void sendResponse(Response response) {
+ if (_closed) {
+ throw new StateError('Sent a response to a closed channel');
+ }
+ Completer<Response> completer = completers.remove(response.id);
+ completer.complete(response);
+ }
+}
+
+/**
+ * A concrete implementation of a server plugin that is suitable for testing.
+ */
+class MockServerPlugin extends ServerPlugin {
+ MockServerPlugin(ResourceProvider resourceProvider) : super(resourceProvider);
+
+ @override
+ List<String> get fileGlobsToAnalyze => <String>['*.dart'];
+
+ @override
+ String get name => 'Test Plugin';
+
+ @override
+ String get version => '0.1.0';
+
+ @override
+ AnalysisDriverGeneric createAnalysisDriver(ContextRoot contextRoot) {
+ return new MockAnalysisDriver();
+ }
+
+ @override
+ void sendNotificationsForSubscriptions(
+ Map<String, List<AnalysisService>> subscriptions) {}
+}
+
+class MockSource implements Source {
+ @override
+ TimestampedData<String> get contents => null;
+
+ @override
+ String get encoding => null;
+
+ @override
+ String get fullName => '/pkg/lib/test.dart';
+
+ @override
+ bool get isInSystemLibrary => false;
+
+ @override
+ Source get librarySource => this;
+
+ @override
+ int get modificationStamp => 0;
+
+ @override
+ String get shortName => 'test.dart';
+
+ @override
+ Source get source => this;
+
+ @override
+ Uri get uri => Uri.parse('package:test/test.dart');
+
+ @override
+ UriKind get uriKind => UriKind.PACKAGE_URI;
+
+ @override
+ bool exists() => true;
+}
« no previous file with comments | « pkg/analyzer_plugin/test/plugin/fix_mixin_test.dart ('k') | pkg/analyzer_plugin/test/plugin/navigation_mixin_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698