added NotEqualTo
All checks were successful
.NET Test / test (push) Successful in 1m21s
.NET Publish / publish (push) Successful in 52s

This commit is contained in:
2024-02-11 00:31:22 +04:00
parent e909eeae10
commit f2f0221f76

View File

@@ -70,6 +70,10 @@ public sealed class EnsureExtensionsExecutor : IGeneratorExecutor
errorGenerationDefinitions.ForEach(def => GenerateEqualToExtensions(sb, def.ErrorParameterDecl, def.ErrorValueExpr)); errorGenerationDefinitions.ForEach(def => GenerateEqualToExtensions(sb, def.ErrorParameterDecl, def.ErrorValueExpr));
sb.AppendLine("#endregion"); sb.AppendLine("#endregion");
sb.AppendLine("#region NotEqualTo");
errorGenerationDefinitions.ForEach(def => GenerateNotEqualToExtensions(sb, def.ErrorParameterDecl, def.ErrorValueExpr));
sb.AppendLine("#endregion");
sb.AppendLine("#region LessThan"); sb.AppendLine("#region LessThan");
errorGenerationDefinitions.ForEach(def => GenerateLessThanExtensions(sb, def.ErrorParameterDecl, def.ErrorValueExpr)); errorGenerationDefinitions.ForEach(def => GenerateLessThanExtensions(sb, def.ErrorParameterDecl, def.ErrorValueExpr));
sb.AppendLine("#endregion"); sb.AppendLine("#endregion");
@@ -393,6 +397,27 @@ public sealed class EnsureExtensionsExecutor : IGeneratorExecutor
"""); """);
} }
private void GenerateNotEqualToExtensions(StringBuilder sb, string errorParameterDecl, string errorValueExpr)
{
string defaultErrorExpr = "?? Error.New(DefaultErrorType, $\"Value {{{ensure.ValueExpression}}} is equal to requirement.\")";
sb.AppendLine($$"""
[PureAttribute]
[GeneratedCodeAttribute("{{nameof(EnsureExtensionsExecutor)}}", "1.0.0.0")]
public static Ensure<T> NotEqualTo<T>(this in Ensure<T> ensure, T requirement, {{errorParameterDecl}})
where T : IEquatable<T>
{
return ensure.State switch
{
ResultState.Success => !ensure.Value.Equals(requirement)
? new(ensure.Value, ensure.ValueExpression)
: new({{errorValueExpr}} {{defaultErrorExpr}}, ensure.ValueExpression),
ResultState.Error => new(ensure.Error!, ensure.ValueExpression),
_ => throw new EnsureNotInitializedException(nameof(ensure))
};
}
""");
}
private void GenerateLessThanExtensions(StringBuilder sb, string errorParameterDecl, string errorValueExpr) private void GenerateLessThanExtensions(StringBuilder sb, string errorParameterDecl, string errorValueExpr)
{ {
string defaultErrorExpr = "?? Error.New(DefaultErrorType, $\"Value {{{ensure.ValueExpression}}} is not less than requirement.\")"; string defaultErrorExpr = "?? Error.New(DefaultErrorType, $\"Value {{{ensure.ValueExpression}}} is not less than requirement.\")";