public DeviceMonitorWithExpiry( [NotNull] ILogger logger, [NotNull] IDateTimeOffset dateTimeOffset, [NotNull] IDeviceMonitor deviceMonitor, [NotNull] ISubject <IDevice> deviceExpired, [NotNull] IObservableTimerFactory factory, [NotNull] IScheduler scheduler) { Guard.ArgumentNotNull(logger, nameof(logger)); Guard.ArgumentNotNull(dateTimeOffset, nameof(dateTimeOffset)); Guard.ArgumentNotNull(deviceMonitor, nameof(deviceMonitor)); Guard.ArgumentNotNull(deviceExpired, nameof(deviceExpired)); Guard.ArgumentNotNull(factory, nameof(factory)); Guard.ArgumentNotNull(scheduler, nameof(scheduler)); _logger = logger; _dateTimeOffset = dateTimeOffset; _deviceMonitor = deviceMonitor; _deviceExpired = deviceExpired; _timer = factory.Create(TimeOut, scheduler) .SubscribeOn(scheduler) .Subscribe(CleanUp, OnError, OnCompleted); }
public void Constructor_ForFactoryNull_Throws( Lazy <DeviceMonitorWithExpiry> sut, [BeNull] IObservableTimerFactory factory) { // ReSharper disable once UnusedVariable Action action = () => { var test = sut.Value; }; action.Should() .Throw <ArgumentNullException>() .WithParameter(nameof(factory)); }
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(); }