// 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. library test.socket.server; import 'dart:async'; import 'mocks.dart'; import 'package:analysis_server/src/analysis_server.dart'; import 'package:analysis_server/src/domain_server.dart'; import 'package:analysis_server/src/protocol.dart'; import 'package:analysis_server/src/socket_server.dart'; import 'package:unittest/unittest.dart'; main() { group('SocketServer', () { test('createAnalysisServer_successful', SocketServerTest.createAnalysisServer_successful); test('createAnalysisServer_alreadyStarted', SocketServerTest.createAnalysisServer_alreadyStarted); }); } class SocketServerTest { static Future createAnalysisServer_successful() { SocketServer server = new SocketServer(); MockServerChannel channel = new MockServerChannel(); server.createAnalysisServer(channel); channel.expectMsgCount(notificationCount: 1); expect(channel.notificationsReceived[0].event, equals( AnalysisServer.CONNECTED_NOTIFICATION)); expect(channel.notificationsReceived[0].params, isEmpty); return channel.sendRequest(new Request('0', ServerDomainHandler.SHUTDOWN_METHOD)).then((Response response) { expect(response.id, equals('0')); expect(response.error, isNull); channel.expectMsgCount(responseCount: 1, notificationCount: 1); }); } static void createAnalysisServer_alreadyStarted() { SocketServer server = new SocketServer(); MockServerChannel channel1 = new MockServerChannel(); MockServerChannel channel2 = new MockServerChannel(); server.createAnalysisServer(channel1); expect(channel1.notificationsReceived[0].event, equals( AnalysisServer.CONNECTED_NOTIFICATION)); expect(channel1.notificationsReceived[0].params, isEmpty); server.createAnalysisServer(channel2); channel1.expectMsgCount(notificationCount: 1); channel2.expectMsgCount(responseCount: 1); expect(channel2.responsesReceived[0].id, equals('')); expect(channel2.responsesReceived[0].error, isNotNull); expect(channel2.responsesReceived[0].error.code, equals( RequestError.CODE_SERVER_ALREADY_STARTED)); channel2.sendRequest(new Request('0', ServerDomainHandler.SHUTDOWN_METHOD) ).then((Response response) { expect(response.id, equals('0')); expect(response.error, isNotNull); expect(response.error.code, equals( RequestError.CODE_SERVER_ALREADY_STARTED)); channel2.expectMsgCount(responseCount: 2); }); } }