public void GetNextDelayTest()
        {
            var strategy = new ExponentialRetryStrategy(1000);

            var delay01 = strategy.GetNextDelay();

            Assert.AreEqual(0, delay01);

            var delay02 = strategy.GetNextDelay();

            Assert.AreEqual(1000, delay02);

            var delay03 = strategy.GetNextDelay();

            Assert.AreEqual(2000, delay03);

            var delay04 = strategy.GetNextDelay();

            Assert.AreEqual(4000, delay04);

            var delay05 = strategy.GetNextDelay();

            Assert.AreEqual(8000, delay05);

            var delay06 = strategy.GetNextDelay();

            Assert.AreEqual(16000, delay06);
        }
        public void TestExponentialStrategy()
        {
            var strategy = new ExponentialRetryStrategy
            {
                MaxTries    = ATTEMPTS,
                Interval    = TimeSpan.FromMilliseconds(INTERVAL_MS),
                MaxInterval = TimeSpan.FromSeconds(2),
                MinInterval = TimeSpan.FromMilliseconds(500)
            };

            int expectedTimeMs = 0;

            for (int i = 0; i < ATTEMPTS; ++i)
            {
                int scale = 1 << i;
                expectedTimeMs += INTERVAL_MS * scale;
            }

            RunBasicTests(strategy, expectedTimeMs);
        }
        public void TestExponentialStrategy()
        {
            var strategy = new ExponentialRetryStrategy
            {
                MaxTries = ATTEMPTS,
                Interval = TimeSpan.FromMilliseconds(INTERVAL_MS),
                MaxInterval = TimeSpan.FromSeconds(2),
                MinInterval = TimeSpan.FromMilliseconds(500)
            };

            int expectedTimeMs = 0;

            for (int i = 0; i < ATTEMPTS; ++i)
            {
                int scale = 1 << i;
                expectedTimeMs += INTERVAL_MS * scale;
            }

            RunBasicTests(strategy, expectedTimeMs);
        }