using Polly.Simmy.Fault; namespace Polly.Core.Tests.Simmy.Fault; public class FaultGeneratorTests { [Fact] public void AddException_Generic_Ok() { var generator = new FaultGenerator(); generator.AddException(); Generate(generator).ShouldBeOfType(); } [Fact] public void AddException_Factory_Ok() { var generator = new FaultGenerator(); generator.AddException(() => new InvalidOperationException()); Generate(generator).ShouldBeOfType(); } [Fact] public void AddException_FactoryWithResilienceContext_Ok() { var generator = new FaultGenerator(); generator.AddException(context => { context.ShouldNotBeNull(); return new InvalidOperationException(); }); Generate(generator).ShouldBeOfType(); } [Fact] public void NoExceptionRegistered_ShouldReturnNull() { var generator = new FaultGenerator(); Generate(generator).ShouldBeNull(); } [Fact] public void AllWeightsZero_ShouldReturnNull() { var generator = new FaultGenerator(); generator.AddException(weight: 0); Generate(generator).ShouldBeNull(); } private static Exception? Generate(FaultGenerator generator) { Func> func = generator; return func( new FaultGeneratorArguments( ResilienceContextPool.Shared.Get(TestCancellation.Token))).AsTask().Result; } }