public void Should_Resume_After_Stopped()
        {
            // Given
            var            testScheduler     = new TestScheduler();
            var            schedulerProvider = new SchedulerProviderFixture().WithTestScheduler(testScheduler);
            DecrementTimer sut   = new DecrementTimerFixture().WithProvider(schedulerProvider);
            var            timer = TimeSpan.Zero;

            sut.Subscribe(x =>
            {
                timer = x;
            });

            sut.Start(TimeSpan.FromMinutes(1));
            testScheduler.AdvanceByMs(InitialMilliseconds);
            sut.Stop();
            testScheduler.AdvanceByMs(OneThousandMilliseconds);

            // When
            sut.Start();
            testScheduler.AdvanceByMs(OneThousandMilliseconds);

            // Then
            timer.Should().Be(TimeSpan.FromSeconds(58));
        }
        public void Should_Not_Be_Running_When_Constructed()
        {
            // Given, When
            DecrementTimer sut = new DecrementTimerFixture();

            // Then
            sut.IsRunning.Should().BeFalse();
        }
        public void Should_Be_Running_When_Started()
        {
            // Given
            var testScheduler = new TestScheduler();
            SchedulerProvider schedulerProvider = new SchedulerProviderFixture().WithTestScheduler(testScheduler);
            DecrementTimer    sut = new DecrementTimerFixture().WithProvider(schedulerProvider);

            // When
            sut.Start(TimeSpan.FromMinutes(25));
            testScheduler.AdvanceByMs(InitialMilliseconds);

            // Then
            sut.IsRunning.Should().BeTrue();
        }