コード例 #1
0
        public async Task SendMessageEvent_WhenMessageIsReceived()
        {
            await client.Start(ip, port);

            IAdminMessage msg      = new AdminServerPongMessage(32u);
            IAdminMessage received = null;

            client.MessageReceived += (_, r) => received = r;
            receiverMock.Raise(x => x.MessageReceived += null, this, msg);
            Assert.Equal(msg, received);
        }
コード例 #2
0
        public async Task ErrorOut_WhenPongMsgArgumentIsNotMatchingPing()
        {
            var       dog = new ConnectionWatchdog(TimeSpan.FromSeconds(0.1));
            Exception e   = null;

            dog.Errored += (_, ex) => e = ex;
            tcpClientMock.Setup(x => x.SendMessage(It.IsAny <IAdminMessage>()))
            .Callback((IAdminMessage msg) => {
                var pingMsg = (AdminPingMessage)msg;
                var pongMsg = new AdminServerPongMessage(pingMsg.Argument + 1);
                tcpClientMock.Object.SimulateMessageReceived(pongMsg);
            });
            dog.Start(tcpClientMock.Object);
            await Task.Delay(TimeSpan.FromSeconds(1));

            Assert.NotNull(e);
            Assert.False(dog.Enabled);
        }
コード例 #3
0
        public async Task BeAbleToStartAgain_AndWorkCorrect()
        {
            var       dog = new ConnectionWatchdog(TimeSpan.FromSeconds(0.1));
            Exception e   = null;

            dog.Errored += (_, ex) => e = ex;
            dog.Start(tcpClientMock.Object);
            dog.Stop();
            dog.Start(tcpClientMock.Object);
            tcpClientMock.Setup(x => x.SendMessage(It.IsAny <IAdminMessage>()))
            .Callback((IAdminMessage msg) => {
                var pingMsg = (AdminPingMessage)msg;
                var pongMsg = new AdminServerPongMessage(pingMsg.Argument);
                tcpClientMock.Object.SimulateMessageReceived(pongMsg);
            });
            await Task.Delay(TimeSpan.FromSeconds(1));

            Assert.Null(e);
            Assert.True(dog.Enabled);
        }