private static OperationPoller InjectZeroPoller()
        {
            OperationPoller poller = new OperationPoller();

            poller.GetType().GetField("_delayStrategy", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(poller, new ZeroPollingStrategy());
            return(poller);
        }
        public void ShouldDefaultToConstantFallback()
        {
            OperationPoller poller        = new OperationPoller();
            var             delayStrategy = poller.GetType().GetField("_delayStrategy", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(poller);

            Assert.IsNotNull(delayStrategy);
            Assert.AreEqual(typeof(RetryAfterDelayStrategy), delayStrategy.GetType());

            var fallbackStrategy = delayStrategy.GetType().GetField("_fallbackStrategy", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(delayStrategy);

            Assert.IsNotNull(delayStrategy);
            Assert.AreEqual(typeof(ConstantDelayStrategy), fallbackStrategy.GetType());
        }
        public void CanOverrideFallbackStrategy()
        {
            ExponentialDelayStrategy exponentialDelayStrategy = new ExponentialDelayStrategy();
            OperationPoller          poller = new OperationPoller(exponentialDelayStrategy);
            var delayStrategy = poller.GetType().GetField("_delayStrategy", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(poller);

            Assert.IsNotNull(delayStrategy);
            Assert.AreEqual(typeof(RetryAfterDelayStrategy), delayStrategy.GetType());

            var fallbackStrategy = delayStrategy.GetType().GetField("_fallbackStrategy", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(delayStrategy);

            Assert.IsNotNull(delayStrategy);
            Assert.AreEqual(exponentialDelayStrategy, fallbackStrategy);
        }