public void Initialize_WithReadyToUseIpAddressTwice() { var calledCreateWithAddress = false; var calledCreateWithAddressAndPort = false; _broadcastImplMock.Setup(broadcast => broadcast.LocalEndPoint).Returns(new IPEndPoint(_ipAddress, 0)); _networkUtilityMock.Setup(utility => utility.IsReadyToUse(_ipAddress)).Returns(true); _broadcastFactoryMock.Setup(factory => factory.Create(_ipAddress)) .Returns(() => _broadcastImplMock.Object) .Callback(() => calledCreateWithAddress = true); _broadcastFactoryMock.Setup(factory => factory.Create(_ipAddress, It.IsAny <int>())) .Returns(() => _broadcastImplMock.Object) .Callback(() => calledCreateWithAddressAndPort = true); var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); var firstInitResult = broadcastService.Initialize(_ipAddress); var secondInitResult = broadcastService.Initialize(_ipAddress); Assert.True(firstInitResult); Assert.True(secondInitResult); Assert.True(broadcastService.IsReady); Assert.True(calledCreateWithAddress ^ calledCreateWithAddressAndPort); _broadcastFactoryMock.Verify(factory => factory.Create(_ipAddress), Times.AtMostOnce); _broadcastFactoryMock.Verify(factory => factory.Create(_ipAddress, 0), Times.AtMostOnce); }
public void Initialize_WithReadyToUseIpAddress() { var calledCreateWithAddress = false; var calledCreateWithAddressAndPort = false; _networkUtilityMock.Setup(utility => utility.IsReadyToUse(_ipAddress)) .Returns((IPAddress ipAddress) => Equals(ipAddress, _ipAddress)); _broadcastFactoryMock.Setup(factory => factory.Create(It.IsAny <IPAddress>())) .Returns(() => _broadcastImplMock.Object) .Callback(() => calledCreateWithAddress = true); _broadcastFactoryMock.Setup(factory => factory.Create(It.IsAny <IPAddress>(), It.IsAny <int>())) .Returns(() => _broadcastImplMock.Object) .Callback(() => calledCreateWithAddressAndPort = true); var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); var result = broadcastService.Initialize(_ipAddress); Assert.True(result); Assert.True(broadcastService.IsReady); Assert.True(calledCreateWithAddress ^ calledCreateWithAddressAndPort); _broadcastFactoryMock.Verify(factory => factory.Create(_ipAddress), Times.AtMostOnce); _broadcastFactoryMock.Verify(factory => factory.Create(_ipAddress, 0), Times.AtMostOnce); }
public void Initialize_WithNullAddress() { var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); Assert.Throws <ArgumentNullException>(() => broadcastService.Initialize(null)); }
public async Task ReceiveAsync_ReceiveData() { var bytesToReceive = RandomizeByteSequence(1024); var receivedData = new List <byte[]>(); _networkUtilityMock.Setup(utility => utility.IsReadyToUse(_ipAddress)).Returns(true); _broadcastImplMock.SetupSequence(broadcast => broadcast.ReceiveAsync(It.IsAny <CancellationToken>())) .ReturnsAsync(bytesToReceive).ReturnsAsync(() => { Task.Delay(5000).Wait(); return(Array.Empty <byte>()); }); var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); broadcastService.DataReceived += (_, args) => receivedData.Add(args.Data); broadcastService.Initialize(_ipAddress); var stopAfterDelay = Task.Run(() => { Task.Delay(20).Wait(); broadcastService.CancelReceive(); }); var receiving = broadcastService.StartReceiveAsync(); await Task.WhenAll(stopAfterDelay, receiving); Assert.Single(receivedData); Assert.True(bytesToReceive.SequenceEqual(receivedData.First())); }
public void Initialize_AfterDispose() { var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); broadcastService.Dispose(); Assert.Throws <ObjectDisposedException>(() => broadcastService.Initialize(IPAddress.Any)); }
public async Task SendAsync_ThrowOnDisposed() { _networkUtilityMock.Setup(utility => utility.IsReadyToUse(_ipAddress)).Returns(true); var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); broadcastService.Initialize(_ipAddress); var data = RandomizeByteSequence(1024); broadcastService.Dispose(); await Assert.ThrowsAsync <ObjectDisposedException>(() => broadcastService.SendAsync(data)); }
public async Task ReceiveAsync_ThrowOnDisposed() { _networkUtilityMock.Setup(utility => utility.IsReadyToUse(_ipAddress)).Returns(true); var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); broadcastService.Initialize(_ipAddress); broadcastService.Dispose(); await Assert.ThrowsAsync <ObjectDisposedException>(() => broadcastService.StartReceiveAsync()); Assert.False(broadcastService.IsReceiving); }
public void Initialize_WithNotReadyToUseIpAddress() { _networkUtilityMock.Setup(utility => utility.IsReadyToUse(It.IsAny <IPAddress>())).Returns(false); var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); var result = broadcastService.Initialize(_ipAddress); Assert.False(result); Assert.False(broadcastService.IsReady); _broadcastFactoryMock.Verify(factory => factory.Create(_ipAddress), Times.Never); _broadcastFactoryMock.Verify(factory => factory.Create(_ipAddress, It.IsAny <int>()), Times.Never); }
public async void CancelReceive() { _networkUtilityMock.Setup(utility => utility.IsReadyToUse(It.IsAny <IPAddress>())).Returns(true); var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); broadcastService.Initialize(_ipAddress); var receiveTask = broadcastService.StartReceiveAsync(); broadcastService.CancelReceive(); await receiveTask; Assert.False(broadcastService.IsReceiving); }
public async Task SendAsync_SendData() { _networkUtilityMock.Setup(utility => utility.IsReadyToUse(_ipAddress)).Returns(true); var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); broadcastService.Initialize(_ipAddress); var data = RandomizeByteSequence(1024); var bytesSent = await broadcastService.SendAsync(data); Assert.Equal(data.Length, bytesSent); _broadcastImplMock.Verify(broadcast => broadcast.SendAsync(It.IsAny <byte[]>())); }
public void Initialize_WithReadyToUseIpAddressAndPort() { const int port = 50100; _networkUtilityMock.Setup(utility => utility.IsReadyToUse(_ipAddress)).Returns(true); var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); var result = broadcastService.Initialize(_ipAddress, port); Assert.True(result); Assert.True(broadcastService.IsReady); _broadcastFactoryMock.Verify(factory => factory.Create(It.IsAny <IPAddress>()), Times.Never); _broadcastFactoryMock.Verify(factory => factory.Create(_ipAddress, port), Times.Once); }
public void ConnectionLost_DontRaiseOnDisconnectNotUsedAdapter() { var isConnectionLostInvoked = false; _networkUtilityMock.Setup(utility => utility.IsReadyToUse(_ipAddress)).Returns(true); _broadcastImplMock.SetupGet(broadcast => broadcast.LocalEndPoint).Returns(new IPEndPoint(_ipAddress, 0)); var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); broadcastService.ConnectionLost += (_, _) => isConnectionLostInvoked = true; broadcastService.Initialize(_ipAddress); _networkWatcherMock.Raise(watcher => watcher.NetworkStateChanged -= null, EventArgs.Empty); Assert.False(isConnectionLostInvoked); Assert.True(broadcastService.IsReady); }