Exemple #1
0
        public async Task Deferred_Messages_Are_Sent_On_Connected(IPAddress ipAddress, int port)
        {
            var streamMock = new Mock <INetworkStream>();

            streamMock.Setup(s => s.ReadAsync(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <CancellationToken>()))
            .Returns(Task.Run(() => 1));

            var tcpMock = new Mock <ITcpClient>();

            tcpMock.Setup(s => s.Connected).Returns(true);
            tcpMock.Setup(s => s.GetStream()).Returns(streamMock.Object);

            var msg = new MessageBuilder()
                      .Code(MessageCode.PeerBrowseRequest)
                      .Build();

            var c = new MessageConnection(MessageConnectionType.Server, ipAddress, port, tcpClient: tcpMock.Object);

            await c.WriteMessageAsync(msg);

            await c.WriteMessageAsync(msg);

            var deferred1 = c.GetProperty <ConcurrentQueue <Message> >("DeferredMessages").Count;

            await c.ConnectAsync();

            var deferred2 = c.GetProperty <ConcurrentQueue <Message> >("DeferredMessages");

            Assert.Equal(2, deferred1);
            Assert.Empty(deferred2);

            streamMock.Verify(s => s.WriteAsync(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <CancellationToken>()), Times.Exactly(2));
        }
Exemple #2
0
        public async Task WriteMessageAsync_Defers_When_Pending(string username, IPAddress ipAddress, int port)
        {
            var msg = new MessageBuilder()
                      .Code(MessageCode.PeerBrowseRequest)
                      .Build();

            var c = new MessageConnection(MessageConnectionType.Peer, username, ipAddress, port);

            await c.WriteMessageAsync(msg);

            var deferred = c.GetProperty <ConcurrentQueue <Message> >("DeferredMessages");

            Assert.Single(deferred);
        }