public async Task ReadContinuously_Changes_As_Expected(string username, IPEndPoint endpoint) { bool b = false; var streamMock = new Mock <INetworkStream>(); streamMock.Setup(s => s.ReadAsync(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <CancellationToken>())) .Callback <byte[], int, int, CancellationToken>((bytes, offset, length, token) => { b = true; }) .Throws(new Exception()); var tcpMock = new Mock <ITcpClient>(); using (var socket = new Socket(SocketType.Stream, ProtocolType.IP)) { tcpMock.Setup(m => m.Client).Returns(socket); tcpMock.Setup(s => s.Connected).Returns(true); tcpMock.Setup(s => s.GetStream()).Returns(streamMock.Object); using (var c = new MessageConnection(username, endpoint, tcpClient: tcpMock.Object)) { var a = c.ReadingContinuously; await Record.ExceptionAsync(() => c.InvokeMethod <Task>("ReadContinuouslyAsync")); Assert.False(a); Assert.True(b); Assert.False(c.ReadingContinuously); } } streamMock.Verify(m => m.ReadAsync(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <CancellationToken>()), Times.Once); }
public async Task ReadContinuously_Returns_If_Already_Reading(string username, IPEndPoint endpoint) { var streamMock = new Mock <INetworkStream>(); streamMock.Setup(s => s.ReadAsync(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <CancellationToken>())) .Throws(new Exception()); var tcpMock = new Mock <ITcpClient>(); using (var socket = new Socket(SocketType.Stream, ProtocolType.IP)) { tcpMock.Setup(m => m.Client).Returns(socket); tcpMock.Setup(s => s.Connected).Returns(true); tcpMock.Setup(s => s.GetStream()).Returns(streamMock.Object); using (var c = new MessageConnection(username, endpoint, tcpClient: tcpMock.Object)) { c.SetProperty("ReadingContinuously", true); await c.InvokeMethod <Task>("ReadContinuouslyAsync"); } } streamMock.Verify(m => m.ReadAsync(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <CancellationToken>()), Times.Never); }
public async Task ReadingContinuously_Returns_Expected_Values(string username, IPAddress ipAddress, int port) { bool b = false; var streamMock = new Mock <INetworkStream>(); streamMock.Setup(s => s.ReadAsync(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <CancellationToken>())) .Callback <byte[], int, int, CancellationToken>((bytes, offset, length, token) => { b = true; }) .Throws(new Exception()); var tcpMock = new Mock <ITcpClient>(); tcpMock.Setup(m => m.Client).Returns(new Socket(SocketType.Stream, ProtocolType.IP)); tcpMock.Setup(s => s.Connected).Returns(true); tcpMock.Setup(s => s.GetStream()).Returns(streamMock.Object); var c = new MessageConnection(username, ipAddress, port, tcpClient: tcpMock.Object); var a = c.ReadingContinuously; await Record.ExceptionAsync(async() => await c.InvokeMethod <Task>("ReadContinuouslyAsync")); Assert.False(a); Assert.True(b); Assert.False(c.ReadingContinuously); }