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 async Task ReceiveAsync_ThrowOnNotInitialized() { _networkUtilityMock.Setup(utility => utility.IsReadyToUse(_ipAddress)).Returns(true); var broadcastService = new BroadcastService(_broadcastFactoryMock.Object, _networkWatcherMock.Object, _networkUtilityMock.Object); await Assert.ThrowsAsync <ServiceNotInitializedException>(() => broadcastService.StartReceiveAsync()); Assert.False(broadcastService.IsReceiving); }
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); }