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

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

Issue 813563002: Convert analysis_server_test.dart to use reflective tests. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analysis_server/test/analysis_server_test.dart
diff --git a/pkg/analysis_server/test/analysis_server_test.dart b/pkg/analysis_server/test/analysis_server_test.dart
index 60a49847e17f0ac865efbf49b6fcf938c4b0964c..6e7ada51830e301a39fffb4a083cd98dacb032a5 100644
--- a/pkg/analysis_server/test/analysis_server_test.dart
+++ b/pkg/analysis_server/test/analysis_server_test.dart
@@ -4,6 +4,8 @@
library test.analysis_server;
+import 'dart:async';
+
import 'package:analysis_server/src/analysis_server.dart';
import 'package:analysis_server/src/constants.dart';
import 'package:analysis_server/src/domain_server.dart';
@@ -19,197 +21,193 @@ import 'package:unittest/unittest.dart';
import 'mock_sdk.dart';
import 'mocks.dart';
+import 'reflective_tests.dart';
main() {
- group('AnalysisServer', () {
- test('server.status notifications', () {
- AnalysisServerTestHelper helper = new AnalysisServerTestHelper();
- MockAnalysisContext context = new MockAnalysisContext('context');
- MockSource source = new MockSource('source');
- when(source.fullName).thenReturn('foo.dart');
- when(source.isInSystemLibrary).thenReturn(false);
- ChangeNoticeImpl notice = new ChangeNoticeImpl(source);
- notice.setErrors([], new LineInfo([0]));
- AnalysisResult firstResult = new AnalysisResult([notice], 0, '', 0);
- AnalysisResult lastResult = new AnalysisResult(null, 1, '', 1);
- when(
- context.performAnalysisTask).thenReturnList(
- [firstResult, firstResult, firstResult, lastResult]);
- helper.server.serverServices.add(ServerService.STATUS);
- helper.server.schedulePerformAnalysisOperation(context);
- // Pump the event queue to make sure the server has finished any
- // analysis.
- return pumpEventQueue().then((_) {
- List<Notification> notifications = helper.channel.notificationsReceived;
- expect(notifications, isNotEmpty);
- // expect at least one notification indicating analysis is in progress
- expect(notifications.any((Notification notification) {
- if (notification.event == SERVER_STATUS) {
- var params = new ServerStatusParams.fromNotification(notification);
- return params.analysis.isAnalyzing;
- }
- return false;
- }), isTrue);
- // the last notification should indicate that analysis is complete
- Notification notification = notifications[notifications.length - 1];
- var params = new ServerStatusParams.fromNotification(notification);
- expect(params.analysis.isAnalyzing, isFalse);
- });
- });
+ groupSep = ' | ';
+ runReflectiveTests(AnalysisServerTest);
+}
- test('echo', () {
- AnalysisServerTestHelper helper = new AnalysisServerTestHelper();
- helper.server.handlers = [new EchoHandler()];
- var request = new Request('my22', 'echo');
- return helper.channel.sendRequest(request).then((Response response) {
- expect(response.id, equals('my22'));
- expect(response.error, isNull);
- });
- });
+@ReflectiveTestCase()
+class AnalysisServerTest {
+ MockServerChannel channel;
+ AnalysisServer server;
+ MemoryResourceProvider resourceProvider;
- test('shutdown', () {
- AnalysisServerTestHelper helper = new AnalysisServerTestHelper();
- helper.server.handlers = [new ServerDomainHandler(helper.server)];
- var request = new Request('my28', SERVER_SHUTDOWN);
- return helper.channel.sendRequest(request).then((Response response) {
- expect(response.id, equals('my28'));
- expect(response.error, isNull);
- });
+ void setUp() {
+ channel = new MockServerChannel();
+ resourceProvider = new MemoryResourceProvider();
+ server = new AnalysisServer(
+ channel,
+ resourceProvider,
+ new MockPackageMapProvider(),
+ null,
+ new AnalysisServerOptions(),
+ new MockSdk(),
+ InstrumentationService.NULL_SERVICE,
+ rethrowExceptions: true);
+ }
+
+ Future test_contextsChangedEvent() {
+ resourceProvider.newFolder('/foo');
+
+ bool wasAdded = false;
+ bool wasChanged = false;
+ bool wasRemoved = false;
+ server.onContextsChanged.listen((ContextsChangedEvent event) {
+ wasAdded = event.added.length == 1;
+ if (wasAdded) {
+ expect(event.added[0], isNotNull);
+ }
+ wasChanged = event.changed.length == 1;
+ if (wasChanged) {
+ expect(event.changed[0], isNotNull);
+ }
+ wasRemoved = event.removed.length == 1;
+ if (wasRemoved) {
+ expect(event.removed[0], isNotNull);
+ }
});
- test('unknownRequest', () {
- AnalysisServerTestHelper helper = new AnalysisServerTestHelper();
- helper.server.handlers = [new EchoHandler()];
- var request = new Request('my22', 'randomRequest');
- return helper.channel.sendRequest(request).then((Response response) {
- expect(response.id, equals('my22'));
- expect(response.error, isNotNull);
+ server.setAnalysisRoots('0', ['/foo'], [], {});
+ return pumpEventQueue().then((_) {
+ expect(wasAdded, isTrue);
+ expect(wasChanged, isFalse);
+ expect(wasRemoved, isFalse);
+
+ wasAdded = false;
+ wasChanged = false;
+ wasRemoved = false;
+ server.setAnalysisRoots('0', ['/foo'], [], {
+ '/foo': '/bar'
});
+ return pumpEventQueue();
+ }).then((_) {
+ expect(wasAdded, isFalse);
+ expect(wasChanged, isTrue);
+ expect(wasRemoved, isFalse);
+
+ wasAdded = false;
+ wasChanged = false;
+ wasRemoved = false;
+ server.setAnalysisRoots('0', [], [], {});
+ return pumpEventQueue();
+ }).then((_) {
+ expect(wasAdded, isFalse);
+ expect(wasChanged, isFalse);
+ expect(wasRemoved, isTrue);
});
+ }
- test('rethrow exceptions', () {
- AnalysisServerTestHelper helper = new AnalysisServerTestHelper();
- Exception exceptionToThrow = new Exception('test exception');
- MockServerOperation operation =
- new MockServerOperation(ServerOperationPriority.ANALYSIS, (_) {
- throw exceptionToThrow;
- });
- helper.server.operationQueue.add(operation);
- helper.server.performOperationPending = true;
- try {
- helper.server.performOperation();
- fail('exception not rethrown');
- } on AnalysisException catch (exception) {
- expect(exception.cause.exception, equals(exceptionToThrow));
- }
+ Future test_echo() {
+ server.handlers = [new EchoHandler()];
+ var request = new Request('my22', 'echo');
+ return channel.sendRequest(request).then((Response response) {
+ expect(response.id, equals('my22'));
+ expect(response.error, isNull);
});
+ }
- test('contexts changed event', () {
- AnalysisServerTestHelper helper = new AnalysisServerTestHelper();
- helper.resourceProvider.newFolder('/foo');
-
- bool wasAdded = false;
- bool wasChanged = false;
- bool wasRemoved = false;
- helper.server.onContextsChanged.listen((ContextsChangedEvent event) {
- wasAdded = event.added.length == 1;
- if (wasAdded) {
- expect(event.added[0], isNotNull);
- }
- wasChanged = event.changed.length == 1;
- if (wasChanged) {
- expect(event.changed[0], isNotNull);
- }
- wasRemoved = event.removed.length == 1;
- if (wasRemoved) {
- expect(event.removed[0], isNotNull);
- }
- });
+ Future test_prioritySourcesChangedEvent() {
+ resourceProvider.newFolder('/foo');
- helper.server.setAnalysisRoots('0', ['/foo'], [], {});
- return pumpEventQueue().then((_) {
- expect(wasAdded, isTrue);
- expect(wasChanged, isFalse);
- expect(wasRemoved, isFalse);
-
- wasAdded = false;
- wasChanged = false;
- wasRemoved = false;
- helper.server.setAnalysisRoots('0', ['/foo'], [], {
- '/foo': '/bar'
- });
- return pumpEventQueue();
- }).then((_) {
- expect(wasAdded, isFalse);
- expect(wasChanged, isTrue);
- expect(wasRemoved, isFalse);
-
- wasAdded = false;
- wasChanged = false;
- wasRemoved = false;
- helper.server.setAnalysisRoots('0', [], [], {});
- return pumpEventQueue();
- }).then((_) {
- expect(wasAdded, isFalse);
- expect(wasChanged, isFalse);
- expect(wasRemoved, isTrue);
- });
+ int eventCount = 0;
+ Source firstSource = null;
+ server.onPriorityChange.listen((PriorityChangeEvent event) {
+ ++eventCount;
+ firstSource = event.firstSource;
});
- test('priority sources changed event', () {
- AnalysisServerTestHelper helper = new AnalysisServerTestHelper();
- helper.resourceProvider.newFolder('/foo');
+ server.setAnalysisRoots('0', ['/foo'], [], {});
+ return pumpEventQueue().then((_) {
+ expect(eventCount, 0);
+
+ server.setPriorityFiles('1', ['/foo/bar.dart']);
+ return pumpEventQueue();
+ }).then((_) {
+ expect(eventCount, 1);
+ expect(firstSource.fullName, '/foo/bar.dart');
+
+ server.setPriorityFiles('2', ['/foo/b1.dart', '/foo/b2.dart']);
+ return pumpEventQueue();
+ }).then((_) {
+ expect(eventCount, 2);
+ expect(firstSource.fullName, '/foo/b1.dart');
+
+ server.setPriorityFiles('17', []);
+ return pumpEventQueue();
+ }).then((_) {
+ expect(eventCount, 3);
+ expect(firstSource, isNull);
+ });
+ }
- int eventCount = 0;
- Source firstSource = null;
- helper.server.onPriorityChange.listen((PriorityChangeEvent event) {
- ++eventCount;
- firstSource = event.firstSource;
- });
+ void test_rethrowExceptions() {
+ Exception exceptionToThrow = new Exception('test exception');
+ MockServerOperation operation =
+ new MockServerOperation(ServerOperationPriority.ANALYSIS, (_) {
+ throw exceptionToThrow;
+ });
+ server.operationQueue.add(operation);
+ server.performOperationPending = true;
+ try {
+ server.performOperation();
+ fail('exception not rethrown');
+ } on AnalysisException catch (exception) {
+ expect(exception.cause.exception, equals(exceptionToThrow));
+ }
+ }
- helper.server.setAnalysisRoots('0', ['/foo'], [], {});
- return pumpEventQueue().then((_) {
- expect(eventCount, 0);
-
- helper.server.setPriorityFiles('1', ['/foo/bar.dart']);
- return pumpEventQueue();
- }).then((_) {
- expect(eventCount, 1);
- expect(firstSource.fullName, '/foo/bar.dart');
-
- helper.server.setPriorityFiles('2', ['/foo/b1.dart', '/foo/b2.dart']);
- return pumpEventQueue();
- }).then((_) {
- expect(eventCount, 2);
- expect(firstSource.fullName, '/foo/b1.dart');
-
- helper.server.setPriorityFiles('17', []);
- return pumpEventQueue();
- }).then((_) {
- expect(eventCount, 3);
- expect(firstSource, isNull);
- });
+ Future test_serverStatusNotifications() {
+ MockAnalysisContext context = new MockAnalysisContext('context');
+ MockSource source = new MockSource('source');
+ when(source.fullName).thenReturn('foo.dart');
+ when(source.isInSystemLibrary).thenReturn(false);
+ ChangeNoticeImpl notice = new ChangeNoticeImpl(source);
+ notice.setErrors([], new LineInfo([0]));
+ AnalysisResult firstResult = new AnalysisResult([notice], 0, '', 0);
+ AnalysisResult lastResult = new AnalysisResult(null, 1, '', 1);
+ when(
+ context.performAnalysisTask).thenReturnList(
+ [firstResult, firstResult, firstResult, lastResult]);
+ server.serverServices.add(ServerService.STATUS);
+ server.schedulePerformAnalysisOperation(context);
+ // Pump the event queue to make sure the server has finished any
+ // analysis.
+ return pumpEventQueue().then((_) {
+ List<Notification> notifications = channel.notificationsReceived;
+ expect(notifications, isNotEmpty);
+ // expect at least one notification indicating analysis is in progress
+ expect(notifications.any((Notification notification) {
+ if (notification.event == SERVER_STATUS) {
+ var params = new ServerStatusParams.fromNotification(notification);
+ return params.analysis.isAnalyzing;
+ }
+ return false;
+ }), isTrue);
+ // the last notification should indicate that analysis is complete
+ Notification notification = notifications[notifications.length - 1];
+ var params = new ServerStatusParams.fromNotification(notification);
+ expect(params.analysis.isAnalyzing, isFalse);
});
- });
-}
+ }
-class AnalysisServerTestHelper {
- MockServerChannel channel;
- AnalysisServer server;
- MemoryResourceProvider resourceProvider;
+ Future test_shutdown() {
+ server.handlers = [new ServerDomainHandler(server)];
+ var request = new Request('my28', SERVER_SHUTDOWN);
+ return channel.sendRequest(request).then((Response response) {
+ expect(response.id, equals('my28'));
+ expect(response.error, isNull);
+ });
+ }
- AnalysisServerTestHelper({bool rethrowExceptions: true}) {
- channel = new MockServerChannel();
- resourceProvider = new MemoryResourceProvider();
- server = new AnalysisServer(
- channel,
- resourceProvider,
- new MockPackageMapProvider(),
- null,
- new AnalysisServerOptions(),
- new MockSdk(),
- InstrumentationService.NULL_SERVICE,
- rethrowExceptions: rethrowExceptions);
+ Future test_unknownRequest() {
+ server.handlers = [new EchoHandler()];
+ var request = new Request('my22', 'randomRequest');
+ return channel.sendRequest(request).then((Response response) {
+ expect(response.id, equals('my22'));
+ expect(response.error, isNotNull);
+ });
}
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698