diff --git a/src/GuardClauses/GuardAgainstExpressionExtensions.cs b/src/GuardClauses/GuardAgainstExpressionExtensions.cs index 7b770d3..103661f 100644 --- a/src/GuardClauses/GuardAgainstExpressionExtensions.cs +++ b/src/GuardClauses/GuardAgainstExpressionExtensions.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading.Tasks; using System.Runtime.CompilerServices; @@ -27,7 +27,6 @@ public static T Expression(this IGuardClause guardClause, string message, [CallerArgumentExpression("input")] string? parameterName = null, Func? exceptionCreator = null) - where T : struct { if (func(input)) { @@ -60,7 +59,6 @@ public static async Task ExpressionAsync(this IGuardClause guardClause, string message, [CallerArgumentExpression("input")] string? parameterName = null, Func? exceptionCreator = null) - where T : struct { if (await func(input)) { diff --git a/test/GuardClauses.UnitTests/GuardAgainstExpression.cs b/test/GuardClauses.UnitTests/GuardAgainstExpression.cs index 4c9c51c..d1dc9e0 100644 --- a/test/GuardClauses.UnitTests/GuardAgainstExpression.cs +++ b/test/GuardClauses.UnitTests/GuardAgainstExpression.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using Ardalis.GuardClauses; using Xunit; @@ -98,7 +98,25 @@ public void ErrorIncludesParamNameIfProvided() var exception = Assert.Throws(() => Guard.Against.Expression(x => x == 2, 2, "custom message", paramName)); Assert.NotNull(exception); Assert.NotNull(exception.Message); - Assert.Equal(paramName, exception.ParamName); + Assert.Contains(paramName, exception.Message); } + public class CustomClass + { + public string Name { get; set; } = string.Empty; + } + + [Fact] + public void GivenReferenceTypeWhenTheExpressionEvaluatesToTrueThrowsException() + { + var testCase = new CustomClass { Name = "Test" }; + Assert.Throws(() => Guard.Against.Expression((x) => x.Name == "Test", testCase, "Name cannot be Test")); + } + + [Fact] + public void GivenReferenceTypeWhenTheExpressionEvaluatesToFalseDoesNothing() + { + var testCase = new CustomClass { Name = "Test" }; + Guard.Against.Expression((x) => x.Name == "Other", testCase, "Name cannot be Other"); + } }