public void When_state_never_exists_It_fails_after_timeout_waiting_before_retry()
        {
            var toTry = new CountTriesAction(options);
            var until = new ThrowsThenSubsequentlySucceedsPredicateQuery(true, true, 2, new Options { Timeout = TimeSpan.FromMilliseconds(250), RetryInterval = TimeSpan.FromMilliseconds(200) });

            var timeout1 = TimeSpan.FromMilliseconds(200);
            Assert.Throws<TestException>(() => _retryUntilTimeoutTimingStrategy.TryUntil(toTry, until, new Options { Timeout = timeout1 }));
        }
        public void When_state_exists_after_three_tries_It_tries_three_times()
        {
            options.RetryInterval = TimeSpan.FromMilliseconds(10);
            var toTry = new CountTriesAction(options);
            var until = new ThrowsThenSubsequentlySucceedsPredicateQuery(true, true, 2, TimeSpan.FromMilliseconds(1000), options.RetryInterval);

            retryUntilTimeoutRobustWrapper.TryUntil(toTry, until, TimeSpan.FromMilliseconds(100), options.RetryInterval);

            Assert.That(toTry.Tries, Is.EqualTo(3));
        }
        public void When_state_exists_after_three_tries_It_tries_three_times()
        {
            options.RetryInterval = TimeSpan.FromMilliseconds(1000);
            var toTry = new CountTriesAction(options);

            var until = new ThrowsThenSubsequentlySucceedsPredicateQuery(true, true, 2, new Options { Timeout = TimeSpan.FromMilliseconds(1000), RetryInterval = options.RetryInterval });

            _retryUntilTimeoutTimingStrategy.TryUntil(toTry, until, new Options{Timeout = TimeSpan.FromMilliseconds(200)});

            Assert.That(toTry.Tries, Is.EqualTo(3));
        }