コード例 #1
0
        public void Update_WhenStatusChanged_TotalTimeEqualsSum(IRestingMonitorConfiguration configuration, TimeSpan[] elapseds)
        {
            if (configuration is null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            if (elapseds is null)
            {
                throw new ArgumentNullException(nameof(elapseds));
            }

            var otherStatus = configuration.InitialStatus switch
            {
                InteractionStatus.Busy => InteractionStatus.Idle,
                InteractionStatus.Idle => InteractionStatus.Busy,
                _ => throw new NotImplementedException()
            };

            configuration.RestingTime.Returns(TimeSpan.MaxValue);

            _userIdleMonitor.GetStatus().Returns(otherStatus);

            var sut = new RestingMonitor(configuration, _userIdleMonitor);

            foreach (var elapsed in elapseds)
            {
                sut.Update(elapsed);
            }

            Assert.Equal(otherStatus, sut.LastStatus);

            // Skip the first one when the time zeroes out.
            Assert.Equal(elapseds.Skip(1).Aggregate(TimeSpan.Zero, (acc, cur) => acc + cur), sut.TimeSinceLastStatus);
        }
コード例 #2
0
        public void Update_WhenTotalBusyLesserThanMaxBusyTime_ThenMustRestIsFalse(IRestingMonitorConfiguration configuration)
        {
            if (configuration is null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            _userIdleMonitor.GetStatus().Returns(InteractionStatus.Busy);
            configuration.InitialStatus.Returns(InteractionStatus.Busy);

            var sut = new RestingMonitor(configuration, _userIdleMonitor);

            // Adds lots of busy time
            sut.Update(configuration.MaxBusyTime + new TimeSpan(-1));

            Assert.False(sut.MustRest);
        }
コード例 #3
0
        public void Update_WhenTotalBusyLargerThanMaxBusyTime_ThenMustRestIsTrue(IRestingMonitorConfiguration configuration)
        {
            if (configuration is null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            configuration.InitialStatus.Returns(InteractionStatus.Busy);
            configuration.RestingTime.Returns(TimeSpan.MaxValue);

            _userIdleMonitor.GetStatus().Returns(InteractionStatus.Busy);

            var sut = new RestingMonitor(configuration, _userIdleMonitor);

            // Adds lots of busy time
            sut.Update(configuration.MaxBusyTime + TimeSpan.FromSeconds(1));

            Assert.True(sut.MustRest);
        }
コード例 #4
0
        public void Update_WhenStatusAlwaysBusy_TotalTimeEqualsElapsed(IRestingMonitorConfiguration configuration, TimeSpan elapsed)
        {
            if (configuration is null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            configuration.InitialStatus.Returns(InteractionStatus.Busy);
            configuration.MaxBusyTime.Returns(elapsed);
            configuration.RestingTime.Returns(TimeSpan.MaxValue);

            _userIdleMonitor.GetStatus().Returns(InteractionStatus.Busy);

            var sut = new RestingMonitor(configuration, _userIdleMonitor);

            sut.Update(elapsed);

            Assert.Equal(configuration.InitialStatus, sut.LastStatus);
            Assert.Equal(elapsed, sut.TimeSinceLastStatus);
        }
コード例 #5
0
        public void Update_StatusChanged_TotalTimeEqualsZero(IRestingMonitorConfiguration configuration, TimeSpan elapsed)
        {
            if (configuration is null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            var otherStatus = configuration.InitialStatus switch
            {
                InteractionStatus.Busy => InteractionStatus.Idle,
                InteractionStatus.Idle => InteractionStatus.Busy,
                _ => throw new NotImplementedException()
            };

            _userIdleMonitor.GetStatus().Returns(otherStatus);

            var sut = new RestingMonitor(configuration, _userIdleMonitor);

            sut.Update(elapsed);

            Assert.Equal(otherStatus, sut.LastStatus);
            Assert.Equal(TimeSpan.Zero, sut.TimeSinceLastStatus);
        }
コード例 #6
0
        public void Update_WhenInitialStatusIsIdleAndThenIdleAgain_TotalIdleTimeIsZero(IRestingMonitorConfiguration configuration, TimeSpan elapsed)
        {
            if (configuration is null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            configuration.InitialStatus.Returns(InteractionStatus.Idle);
            _userIdleMonitor.GetStatus().Returns(InteractionStatus.Idle);

            var sut = new RestingMonitor(configuration, _userIdleMonitor);

            sut.Update(elapsed);

            Assert.Equal(TimeSpan.Zero, sut.TotalIdleTimeSinceRested);
        }