Skip to content

Commit

Permalink
kill mutants
Browse files Browse the repository at this point in the history
  • Loading branch information
martintmk committed Aug 10, 2023
1 parent 3130cc4 commit 7c6cc04
Showing 1 changed file with 32 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ namespace Polly.RateLimiting.Tests;

public class RateLimiterCompositeStrategyBuilderExtensionsTests
{
public static readonly TheoryData<Action<CompositeStrategyBuilder<int>>> Data = new()
public static readonly TheoryData<Action<CompositeStrategyBuilder>> Data = new()
{
builder =>
{
builder.AddConcurrencyLimiter(2, 2);
AssertRateLimiterStrategy(builder);
AssertRateLimiterStrategy(builder, strategy => strategy.Limiter.Limiter.Should().BeOfType<ConcurrencyLimiter>());
},
builder =>
{
Expand All @@ -23,21 +23,21 @@ public class RateLimiterCompositeStrategyBuilderExtensionsTests
QueueLimit = 2
});
AssertRateLimiterStrategy(builder);
AssertRateLimiterStrategy(builder, strategy => strategy.Limiter.Limiter.Should().BeOfType<ConcurrencyLimiter>());
},
builder =>
{
var expected = Substitute.For<RateLimiter>();
builder.AddRateLimiter(expected);
AssertRateLimiterStrategy(builder);
AssertRateLimiterStrategy(builder, strategy => strategy.Limiter.Limiter.Should().Be(expected));
}
};

[MemberData(nameof(Data))]
[Theory(Skip = "https://github.com/stryker-mutator/stryker-net/issues/2144")]
public void AddRateLimiter_Extensions_Ok(Action<CompositeStrategyBuilder<int>> configure)
public void AddRateLimiter_Extensions_Ok(Action<CompositeStrategyBuilder> configure)
{
var builder = new CompositeStrategyBuilder<int>();
var builder = new CompositeStrategyBuilder();

configure(builder);

Expand All @@ -61,13 +61,13 @@ public void AddConcurrencyLimiter_InvalidOptions_Throws()
[Fact]
public void AddRateLimiter_AllExtensions_Ok()
{
foreach (var configure in Data.Select(v => v[0]).Cast<Action<CompositeStrategyBuilder<int>>>())
foreach (var configure in Data.Select(v => v[0]).Cast<Action<CompositeStrategyBuilder>>())
{
var builder = new CompositeStrategyBuilder<int>();
var builder = new CompositeStrategyBuilder();

configure(builder);

builder.Build().GetInnerStrategies().Strategies.Single().StrategyType.Should().Be(typeof(RateLimiterResilienceStrategy));
AssertRateLimiterStrategy(builder);
}
}

Expand Down Expand Up @@ -136,8 +136,29 @@ public void AddRateLimiter_Options_Ok()
.Be<RateLimiterResilienceStrategy>();
}

private static void AssertRateLimiterStrategy(CompositeStrategyBuilder<int> builder)
private static void AssertRateLimiterStrategy(CompositeStrategyBuilder builder, Action<RateLimiterResilienceStrategy>? assert = null, bool hasEvents = false)
{
ResilienceStrategy strategy = builder.Build();
var limiterStrategy = GetResilienceStrategy(strategy);
assert?.Invoke(limiterStrategy);

if (hasEvents)
{
limiterStrategy.OnLeaseRejected.Should().NotBeNull();
limiterStrategy
.OnLeaseRejected!(new OnRateLimiterRejectedArguments(ResilienceContextPool.Shared.Get(), Substitute.For<RateLimitLease>(), null))
.Preserve().GetAwaiter().GetResult();
}
else
{
limiterStrategy.OnLeaseRejected.Should().BeNull();
}

strategy.GetInnerStrategies().Strategies.Single().StrategyType.Should().Be(typeof(RateLimiterResilienceStrategy));
}

private static RateLimiterResilienceStrategy GetResilienceStrategy(ResilienceStrategy strategy)
{
builder.Build().GetInnerStrategies().Strategies.Single().StrategyType.Should().Be(typeof(RateLimiterResilienceStrategy));
return (RateLimiterResilienceStrategy)strategy.GetType().GetRuntimeProperty("Strategy")!.GetValue(strategy)!;
}
}

0 comments on commit 7c6cc04

Please sign in to comment.