public void CleanUp_ForOneExpiredDeviceInCollection_NotifiesDeviceExpired( ILogger logger, IDateTimeOffset dateTimeOffset, IDeviceMonitor deviceMonitor, Subject <IDevice> deviceExpired, ObservableTimerFactory factory, TestScheduler scheduler, IDevice device) { var sut = new DeviceMonitorWithExpiry(logger, dateTimeOffset, deviceMonitor, deviceExpired, factory, scheduler); IDevice expiredDevice = null; using var disposable = sut.DeviceExpired .Subscribe(expired => expiredDevice = expired); deviceExpired.OnNext(device); scheduler.AdvanceBy(sut.TimeOut.Ticks); expiredDevice.Should() .Be(device); }
public void CleanUp_ForNotExpiredDeviceInCollection_DoesNotNotifyDeviceExpired( ILogger logger, IDateTimeOffset dateTimeOffset, IDeviceMonitor deviceMonitor, ISubject <IDevice> deviceExpired, ObservableTimerFactory factory, TestScheduler scheduler, IDevice device) { deviceMonitor.DiscoveredDevices .Returns(new[] { device }); var sut = new DeviceMonitorWithExpiry(logger, dateTimeOffset, deviceMonitor, deviceExpired, factory, scheduler); dateTimeOffset.Ticks .Returns(sut.TimeOut.Ticks); dateTimeOffset.Now .Returns(dateTimeOffset); device.BroadcastTime .Ticks .Returns(sut.TimeOut.Ticks / 2); scheduler.AdvanceBy(sut.TimeOut.Ticks); deviceExpired.DidNotReceive() .Publish(device); }
public void CleanUp_ForOneExpiredDeviceInCollection_RemovesDeviceFromCollection( ILogger logger, IDateTimeOffset dateTimeOffset, IDeviceMonitor deviceMonitor, ISubject <IDevice> deviceExpired, ObservableTimerFactory factory, TestScheduler scheduler, IDevice device) { deviceMonitor.DiscoveredDevices .Returns(new[] { device }); var sut = new DeviceMonitorWithExpiry(logger, dateTimeOffset, deviceMonitor, deviceExpired, factory, scheduler); dateTimeOffset.Ticks .Returns(sut.TimeOut.Ticks); dateTimeOffset.Now .Returns(dateTimeOffset); device.BroadcastTime .Ticks .Returns(0); scheduler.AdvanceBy(sut.TimeOut.Ticks + 1); deviceMonitor.Received() .RemoveDevice(device); }
public void Dispose_ForInvoked_DisposesTimer( DeviceMonitorWithExpiry sut, [Freeze] IDisposable timer) { sut.Dispose(); timer.Received() .Dispose(); }
public void Dispose_ForInvoked_DisposesMonitor( DeviceMonitorWithExpiry sut, [Freeze] IDeviceMonitor monitor) { sut.Dispose(); monitor.Received() .Dispose(); }
public void Stop_ForInvoked_CallsDeviceMonitor( DeviceMonitorWithExpiry sut, [Freeze] IDeviceMonitor monitor) { sut.Stop(); monitor.Received() .Stop(); }
public void RemoveDevice_ForInvoked_CallsDeviceMonitor( DeviceMonitorWithExpiry sut, [Freeze] IDeviceMonitor monitor, IDevice device) { sut.RemoveDevice(device); monitor.Received() .RemoveDevice(device); }
public void IsListening_ForInvoked_CallsDeviceMonitor( DeviceMonitorWithExpiry sut, [Freeze] IDeviceMonitor monitor) { monitor.IsListening .Returns(true); sut.IsListening .Should() .BeTrue(); }
public void TimeOut_ForValueGreaterZero_SetsTimeOut( DeviceMonitorWithExpiry sut) { var expected = TimeSpan.FromHours(1.23); sut.TimeOut = expected; sut.TimeOut .Should() .Be(expected); }
public void DeviceNameUpdated_ForInvoked_CallsDeviceMonitor( DeviceMonitorWithExpiry sut, [Freeze] IDeviceMonitor monitor, IObservable <IDevice> observable) { monitor.DeviceNameUpdated .Returns(observable); sut.DeviceNameUpdated .Should() .Be(observable); }
public void DiscoveredDevices_ForInvoked_CallsDeviceMonitor( DeviceMonitorWithExpiry sut, [Freeze] IDeviceMonitor monitor, IReadOnlyCollection <IDevice> collection) { monitor.DiscoveredDevices .Returns(collection); sut.DiscoveredDevices .Should() .BeEquivalentTo(collection); }
public void OnError_ForInvoked_CallsStop( ILogger logger, IDateTimeOffset dateTimeOffset, IDeviceMonitor deviceMonitor, ISubject <IDevice> deviceExpired, IObservableTimerFactory factory, TestScheduler scheduler) { factory.Create(Arg.Any <TimeSpan>(), Arg.Any <IScheduler>()) .Returns(Observable.Throw <long>(new Exception())); var sut = new DeviceMonitorWithExpiry(logger, dateTimeOffset, deviceMonitor, deviceExpired, factory, scheduler); scheduler.AdvanceBy(sut.TimeOut.Ticks); deviceMonitor.Received() .Stop(); }
public void TimeOut_ForValueLessThanZero_SetsTimeOut( DeviceMonitorWithExpiry sut) { sut.TimeOut = TimeSpan.FromHours(-0.1); }