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; }