Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        public void Dispose_ForInvoked_DisposesTimer(
            DeviceMonitorWithExpiry sut,
            [Freeze] IDisposable timer)
        {
            sut.Dispose();

            timer.Received()
            .Dispose();
        }
Esempio n. 5
0
        public void Dispose_ForInvoked_DisposesMonitor(
            DeviceMonitorWithExpiry sut,
            [Freeze] IDeviceMonitor monitor)
        {
            sut.Dispose();

            monitor.Received()
            .Dispose();
        }
Esempio n. 6
0
        public void Stop_ForInvoked_CallsDeviceMonitor(
            DeviceMonitorWithExpiry sut,
            [Freeze] IDeviceMonitor monitor)
        {
            sut.Stop();

            monitor.Received()
            .Stop();
        }
Esempio n. 7
0
        public void RemoveDevice_ForInvoked_CallsDeviceMonitor(
            DeviceMonitorWithExpiry sut,
            [Freeze] IDeviceMonitor monitor,
            IDevice device)
        {
            sut.RemoveDevice(device);

            monitor.Received()
            .RemoveDevice(device);
        }
Esempio n. 8
0
        public void IsListening_ForInvoked_CallsDeviceMonitor(
            DeviceMonitorWithExpiry sut,
            [Freeze] IDeviceMonitor monitor)
        {
            monitor.IsListening
            .Returns(true);

            sut.IsListening
            .Should()
            .BeTrue();
        }
Esempio n. 9
0
        public void TimeOut_ForValueGreaterZero_SetsTimeOut(
            DeviceMonitorWithExpiry sut)
        {
            var expected = TimeSpan.FromHours(1.23);

            sut.TimeOut = expected;

            sut.TimeOut
            .Should()
            .Be(expected);
        }
Esempio n. 10
0
        public void DeviceNameUpdated_ForInvoked_CallsDeviceMonitor(
            DeviceMonitorWithExpiry sut,
            [Freeze] IDeviceMonitor monitor,
            IObservable <IDevice> observable)
        {
            monitor.DeviceNameUpdated
            .Returns(observable);

            sut.DeviceNameUpdated
            .Should()
            .Be(observable);
        }
Esempio n. 11
0
        public void DiscoveredDevices_ForInvoked_CallsDeviceMonitor(
            DeviceMonitorWithExpiry sut,
            [Freeze] IDeviceMonitor monitor,
            IReadOnlyCollection <IDevice> collection)
        {
            monitor.DiscoveredDevices
            .Returns(collection);

            sut.DiscoveredDevices
            .Should()
            .BeEquivalentTo(collection);
        }
Esempio n. 12
0
        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();
        }
Esempio n. 13
0
 public void TimeOut_ForValueLessThanZero_SetsTimeOut(
     DeviceMonitorWithExpiry sut)
 {
     sut.TimeOut = TimeSpan.FromHours(-0.1);
 }