diff --git a/test/Polly.Core.Tests/PredicateBuilderTests.cs b/test/Polly.Core.Tests/PredicateBuilderTests.cs index 230ff961fb..afb573dd1a 100644 --- a/test/Polly.Core.Tests/PredicateBuilderTests.cs +++ b/test/Polly.Core.Tests/PredicateBuilderTests.cs @@ -1,3 +1,8 @@ +using Polly.CircuitBreaker; +using Polly.Fallback; +using Polly.Hedging; +using Polly.Retry; + namespace Polly.Core.Tests; public class PredicateBuilderTests @@ -24,6 +29,13 @@ public class PredicateBuilderTests { builder => builder.HandleInner(e => e.Message == "x"), Outcome.FromException(new InvalidOperationException("dummy", new FormatException("m") )), false }, }; + [Fact] + public void Ctor_Ok() + { + new PredicateBuilder().Should().NotBeNull(); + new PredicateBuilder().Should().NotBeNull(); + } + [MemberData(nameof(HandleResultData))] [Theory] public void HandleResult_Ok(Action> configure, Outcome value, bool handled) @@ -45,4 +57,56 @@ public void CreatePredicate_NotConfigured_Throws() .Throw() .WithMessage("No predicates were configured. There must be at least one predicate added."); } + + [Fact] + public async Task Operator_RetryStrategyOptions_Ok() + { + var options = new RetryStrategyOptions + { + ShouldHandle = new PredicateBuilder().HandleResult("error") + }; + + var handled = await options.ShouldHandle(new(ResilienceContext.Get(), Outcome.FromResult("error"), new RetryPredicateArguments(0))); + + handled.Should().BeTrue(); + } + + [Fact] + public async Task Operator_FallbackStrategyOptions_Ok() + { + var options = new FallbackStrategyOptions + { + ShouldHandle = new PredicateBuilder().HandleResult("error") + }; + + var handled = await options.ShouldHandle(new(ResilienceContext.Get(), Outcome.FromResult("error"), new FallbackPredicateArguments())); + + handled.Should().BeTrue(); + } + + [Fact] + public async Task Operator_HedgingStrategyOptions_Ok() + { + var options = new HedgingStrategyOptions + { + ShouldHandle = new PredicateBuilder().HandleResult("error") + }; + + var handled = await options.ShouldHandle(new(ResilienceContext.Get(), Outcome.FromResult("error"), new HedgingPredicateArguments())); + + handled.Should().BeTrue(); + } + + [Fact] + public async Task Operator_AdvancedCircuitBreakerStrategyOptions_Ok() + { + var options = new AdvancedCircuitBreakerStrategyOptions + { + ShouldHandle = new PredicateBuilder().HandleResult("error") + }; + + var handled = await options.ShouldHandle(new(ResilienceContext.Get(), Outcome.FromResult("error"), new CircuitBreakerPredicateArguments())); + + handled.Should().BeTrue(); + } }