示例#1
0
        public void Start_CallbackCalled_AcceptedClientRaisedWithTcpClient()
        {
            Smock.Run(context =>
            {
                // Arrange
                AsyncCallback callback = null;
                var expectedTcpClient  = new TcpClient();
                var asyncResultMock    = new Mock <IAsyncResult>();
                asyncResultMock.SetupGet(mock => mock.AsyncState).Returns(expectedTcpClient);
                IAsyncResult ar = new Mock <IAsyncResult>().Object;

                var tcpListenerMock = new Mock <ITcpListener>();
                tcpListenerMock
                .Setup(mock => mock.BeginAcceptTcpClient(It.IsAny <AsyncCallback>(), null))
                .Callback((AsyncCallback cb, object state) => callback = cb)
                .Returns(asyncResultMock.Object);
                tcpListenerMock
                .Setup(mock => mock.EndAcceptTcpClient(It.IsAny <IAsyncResult>()))
                .Returns(expectedTcpClient);

                context.Setup(() => MultiSourceTcpListener.Create(It.IsAny <int>()))
                .Returns(tcpListenerMock.Object);

                AcceptedTcpClient actualTcpClient = null;

                // Act
                var tcpServer             = new TcpServer(0);
                tcpServer.AcceptedClient += (sender, args) => actualTcpClient = args.TcpClient;
                tcpServer.Start();
                callback(ar);

                // Assert
                Assert.AreEqual(expectedTcpClient, actualTcpClient.TcpClient);
            });
        }
 public AcceptedClientEventArgs(AcceptedTcpClient client)
 {
     TcpClient = client;
 }