public void AsPolicy_LoggerNull_Throws()
        {
            var config = new AdvancedCircuitBreakerConfig
            {
                BreakDuration     = 1.0d,
                FailureThreshold  = 0.75d,
                MinimumThroughput = 15,
                SamplingDuration  = 3.2d
            };

            Assert.ThrowsException <ArgumentNullException>(
                () => config.AsTypeModel(null));
        }
        public void AsPolicy_InvalidSamplingDuration_Throws()
        {
            var logger = new Mock <ILogger>(MockBehavior.Loose);
            var config = new AdvancedCircuitBreakerConfig
            {
                BreakDuration     = 1.0d,
                FailureThreshold  = 0.6d,
                MinimumThroughput = 15,
                SamplingDuration  = 0.01d
            };

            Assert.ThrowsException <InvalidOperationException>(
                () => config.AsTypeModel(logger.Object));
        }
        public void AsPolicy_AllValuesInitialized_ReturnsPolicy()
        {
            var logger = new Mock <ILogger>(MockBehavior.Loose);
            var config = new AdvancedCircuitBreakerConfig
            {
                BreakDuration     = 1.0d,
                FailureThreshold  = 0.5d,
                MinimumThroughput = 15,
                SamplingDuration  = 3.2d
            };

            IAsyncPolicy <HttpResponseMessage> policy = config.AsTypeModel(logger.Object);

            Assert.IsNotNull(policy);
            Assert.IsInstanceOfType(policy, typeof(AsyncCircuitBreakerPolicy <HttpResponseMessage>));
        }