namespace Raliway.Tests.EnsureExtensions; public class Satisfy { [Fact] public void WhenRequirementWasSatisfied_ShouldBeSuccessful() { var result = Ensure.That(69) .Satisfies(i => i < 100) .LessThan(100) .Result(); result.IsSuccess.ShouldBeTrue(); result.Value.ShouldBe(69); } [Fact] public void WhenRequirementWasNotSatisfied_ShouldBeFailureWithDefaultError() { var error = Error.New(Ensure.DefaultErrorType, "Value {69} does not satisfy the requirement."); var result = Ensure.That(69) .Satisfies(i => i > 100) .GreaterThan(100) .Result(); result.IsFailure.ShouldBeTrue(); result.Error.ShouldBe(error); } [Fact] public void WhenAllRequirementsWasSatisfied_ShouldBeSuccessful() { var result = Ensure.That("69") .NotNull() .NotEmpty() .NotWhitespace() .Satisfies(s => s == "69") .EqualTo("69") .Result(); result.IsSuccess.ShouldBeTrue(); result.Value.ShouldBe("69"); } [Fact] public void WhenAnyRequirementWasNotSatisfied_ShouldBeFailureWithFirstError() { var error = Error.New(Ensure.DefaultErrorType, "Value {(string?)\" \"} is empty or consists exclusively of white-space characters."); var result = Ensure.That((string?)" ") .NotNull() .NotEmpty() .NotWhitespace() .Satisfies(s => s == "69") .EqualTo("69") .Result(); result.IsFailure.ShouldBeTrue(); result.Error.ShouldBe(error); } }