diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index c6031df8..9d998db8 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -22,8 +22,10 @@ + + diff --git a/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=Contains.verified.txt b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=Contains.verified.txt new file mode 100644 index 00000000..bcf356ce --- /dev/null +++ b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=Contains.verified.txt @@ -0,0 +1,18 @@ +{ + Type: Exception, + Message: Failed to build expression. Path: Member.Length, Comparison: Contains, Negate: False, , + InnerException: { + $type: Exception, + Type: Exception, + Message: Cannot perform Contains on System.Int32., + StackTrace: +at WhereValidator.ValidateObject(Type propertyType, Comparison comparison) +at WhereValidator.ValidateSingleObject(Type propertyType, Comparison comparison) +at GraphQL.EntityFramework.ExpressionBuilder`1.GetExpression(String path, Comparison comparison, String[] values) +at GraphQL.EntityFramework.ExpressionBuilder`1.MakePredicateBody(String path, Comparison comparison, String[] values, Boolean negate) + }, + StackTrace: +at GraphQL.EntityFramework.ExpressionBuilder`1.MakePredicateBody(String path, Comparison comparison, String[] values, Boolean negate) +at GraphQL.EntityFramework.ExpressionBuilder`1.BuildPredicate(String path, Comparison comparison, String[] values, Boolean negate) +at ExpressionBuilderTests.BuildPredicate_Comparison(Comparison comparison) +} \ No newline at end of file diff --git a/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=EndsWith.verified.txt b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=EndsWith.verified.txt new file mode 100644 index 00000000..f9430192 --- /dev/null +++ b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=EndsWith.verified.txt @@ -0,0 +1,18 @@ +{ + Type: Exception, + Message: Failed to build expression. Path: Member.Length, Comparison: EndsWith, Negate: False, , + InnerException: { + $type: Exception, + Type: Exception, + Message: Cannot perform EndsWith on System.Int32., + StackTrace: +at WhereValidator.ValidateObject(Type propertyType, Comparison comparison) +at WhereValidator.ValidateSingleObject(Type propertyType, Comparison comparison) +at GraphQL.EntityFramework.ExpressionBuilder`1.GetExpression(String path, Comparison comparison, String[] values) +at GraphQL.EntityFramework.ExpressionBuilder`1.MakePredicateBody(String path, Comparison comparison, String[] values, Boolean negate) + }, + StackTrace: +at GraphQL.EntityFramework.ExpressionBuilder`1.MakePredicateBody(String path, Comparison comparison, String[] values, Boolean negate) +at GraphQL.EntityFramework.ExpressionBuilder`1.BuildPredicate(String path, Comparison comparison, String[] values, Boolean negate) +at ExpressionBuilderTests.BuildPredicate_Comparison(Comparison comparison) +} \ No newline at end of file diff --git a/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=Equal.verified.txt b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=Equal.verified.txt new file mode 100644 index 00000000..1f8c6d82 --- /dev/null +++ b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=Equal.verified.txt @@ -0,0 +1 @@ +Param_0 => (Param_0.Member.Length == 2) \ No newline at end of file diff --git a/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=GreaterThan.verified.txt b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=GreaterThan.verified.txt new file mode 100644 index 00000000..aa3be598 --- /dev/null +++ b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=GreaterThan.verified.txt @@ -0,0 +1 @@ +Param_0 => (Param_0.Member.Length > 2) \ No newline at end of file diff --git a/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=GreaterThanOrEqual.verified.txt b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=GreaterThanOrEqual.verified.txt new file mode 100644 index 00000000..bdcac522 --- /dev/null +++ b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=GreaterThanOrEqual.verified.txt @@ -0,0 +1 @@ +Param_0 => (Param_0.Member.Length >= 2) \ No newline at end of file diff --git a/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=In.verified.txt b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=In.verified.txt new file mode 100644 index 00000000..fc8b7157 --- /dev/null +++ b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=In.verified.txt @@ -0,0 +1 @@ +Param_0 => value(System.Collections.Generic.List`1[System.Int32]).Contains(Param_0.Member.Length) \ No newline at end of file diff --git a/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=LessThan.verified.txt b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=LessThan.verified.txt new file mode 100644 index 00000000..1ba184cb --- /dev/null +++ b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=LessThan.verified.txt @@ -0,0 +1 @@ +Param_0 => (Param_0.Member.Length < 2) \ No newline at end of file diff --git a/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=LessThanOrEqual.verified.txt b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=LessThanOrEqual.verified.txt new file mode 100644 index 00000000..9db40764 --- /dev/null +++ b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=LessThanOrEqual.verified.txt @@ -0,0 +1 @@ +Param_0 => (Param_0.Member.Length <= 2) \ No newline at end of file diff --git a/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=Like.verified.txt b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=Like.verified.txt new file mode 100644 index 00000000..c4aee7db --- /dev/null +++ b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=Like.verified.txt @@ -0,0 +1,18 @@ +{ + Type: Exception, + Message: Failed to build expression. Path: Member.Length, Comparison: Like, Negate: False, , + InnerException: { + $type: Exception, + Type: Exception, + Message: Cannot perform Like on System.Int32., + StackTrace: +at WhereValidator.ValidateObject(Type propertyType, Comparison comparison) +at WhereValidator.ValidateSingleObject(Type propertyType, Comparison comparison) +at GraphQL.EntityFramework.ExpressionBuilder`1.GetExpression(String path, Comparison comparison, String[] values) +at GraphQL.EntityFramework.ExpressionBuilder`1.MakePredicateBody(String path, Comparison comparison, String[] values, Boolean negate) + }, + StackTrace: +at GraphQL.EntityFramework.ExpressionBuilder`1.MakePredicateBody(String path, Comparison comparison, String[] values, Boolean negate) +at GraphQL.EntityFramework.ExpressionBuilder`1.BuildPredicate(String path, Comparison comparison, String[] values, Boolean negate) +at ExpressionBuilderTests.BuildPredicate_Comparison(Comparison comparison) +} \ No newline at end of file diff --git a/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=NotEqual.verified.txt b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=NotEqual.verified.txt new file mode 100644 index 00000000..03dc6c9f --- /dev/null +++ b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=NotEqual.verified.txt @@ -0,0 +1 @@ +Param_0 => (Param_0.Member.Length != 2) \ No newline at end of file diff --git a/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=NotIn.verified.txt b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=NotIn.verified.txt new file mode 100644 index 00000000..eb7bd8e7 --- /dev/null +++ b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=NotIn.verified.txt @@ -0,0 +1 @@ +Param_0 => Not(value(System.Collections.Generic.List`1[System.Int32]).Contains(Param_0.Member.Length)) \ No newline at end of file diff --git a/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=StartsWith.verified.txt b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=StartsWith.verified.txt new file mode 100644 index 00000000..a69eb005 --- /dev/null +++ b/src/Tests/ExpressionBuilderTests.BuildPredicate_Comparison_comparison=StartsWith.verified.txt @@ -0,0 +1,18 @@ +{ + Type: Exception, + Message: Failed to build expression. Path: Member.Length, Comparison: StartsWith, Negate: False, , + InnerException: { + $type: Exception, + Type: Exception, + Message: Cannot perform StartsWith on System.Int32., + StackTrace: +at WhereValidator.ValidateObject(Type propertyType, Comparison comparison) +at WhereValidator.ValidateSingleObject(Type propertyType, Comparison comparison) +at GraphQL.EntityFramework.ExpressionBuilder`1.GetExpression(String path, Comparison comparison, String[] values) +at GraphQL.EntityFramework.ExpressionBuilder`1.MakePredicateBody(String path, Comparison comparison, String[] values, Boolean negate) + }, + StackTrace: +at GraphQL.EntityFramework.ExpressionBuilder`1.MakePredicateBody(String path, Comparison comparison, String[] values, Boolean negate) +at GraphQL.EntityFramework.ExpressionBuilder`1.BuildPredicate(String path, Comparison comparison, String[] values, Boolean negate) +at ExpressionBuilderTests.BuildPredicate_Comparison(Comparison comparison) +} \ No newline at end of file diff --git a/src/Tests/ExpressionBuilderTests.cs b/src/Tests/ExpressionBuilderTests.cs index 19dcba47..c70111d8 100644 --- a/src/Tests/ExpressionBuilderTests.cs +++ b/src/Tests/ExpressionBuilderTests.cs @@ -1,5 +1,21 @@ public class ExpressionBuilderTests { + [Theory, CombinatorialData] + public Task BuildPredicate_Comparison(Comparison comparison) + { + object result; + try + { + result = ExpressionBuilder.BuildPredicate("Member.Length", comparison, ["2"]); + } + catch (Exception exception) + { + result = exception; + } + + return Verify(result); + } + public class Target { public string? Member { get; set; } diff --git a/src/Tests/Tests.csproj b/src/Tests/Tests.csproj index 326097c1..d690b44c 100644 --- a/src/Tests/Tests.csproj +++ b/src/Tests/Tests.csproj @@ -10,7 +10,9 @@ + +