From a953ce64cbfc17ac508c79f7f9db1994eccc94b6 Mon Sep 17 00:00:00 2001 From: Vita Tauer Date: Fri, 14 Jun 2019 13:58:03 +0200 Subject: [PATCH 1/2] Added tests for just single '=' in equality --- .../DynamicExpressionParserTests.cs | 8 +++++--- test/System.Linq.Dynamic.Core.Tests/ExpressionTests.cs | 8 +++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/test/System.Linq.Dynamic.Core.Tests/DynamicExpressionParserTests.cs b/test/System.Linq.Dynamic.Core.Tests/DynamicExpressionParserTests.cs index c7afd439..513d668d 100644 --- a/test/System.Linq.Dynamic.Core.Tests/DynamicExpressionParserTests.cs +++ b/test/System.Linq.Dynamic.Core.Tests/DynamicExpressionParserTests.cs @@ -143,8 +143,10 @@ public void DynamicExpressionParser_ParseLambda_UseParameterizedNamesInDynamicQu Check.That(value).IsEqualTo("x"); } - [Fact] - public void DynamicExpressionParser_ParseLambda_WithStructWithEquality() + [Theory] + [InlineData("Where(x => x.SnowflakeId == {0})")] + [InlineData("Where(x => x.SnowflakeId = {0})")] + public void DynamicExpressionParser_ParseLambda_WithStructWithEquality(string query) { // Assign var testList = User.GenerateSampleModels(51); @@ -153,7 +155,7 @@ public void DynamicExpressionParser_ParseLambda_WithStructWithEquality() // Act ulong expectedX = (ulong) long.MaxValue + 3; - string query = $"Where(x => x.SnowflakeId == {expectedX})"; + query = string.Format(query, expectedX); LambdaExpression expression = DynamicExpressionParser.ParseLambda(qry.GetType(), null, query); Delegate del = expression.Compile(); IEnumerable result = del.DynamicInvoke(qry) as IEnumerable; diff --git a/test/System.Linq.Dynamic.Core.Tests/ExpressionTests.cs b/test/System.Linq.Dynamic.Core.Tests/ExpressionTests.cs index fbff5835..98a32a6f 100644 --- a/test/System.Linq.Dynamic.Core.Tests/ExpressionTests.cs +++ b/test/System.Linq.Dynamic.Core.Tests/ExpressionTests.cs @@ -1704,14 +1704,18 @@ public void ExpressionTests_Type_StructWithIntegerEquality() // Act var resultL = valuesL.Where("it == 100"); + var resultLs = valuesL.Where("it = 100"); var resultNL = valuesL.Where("it != 1 && it != 5"); var resultArg = valuesL.Where("it == @0", 100); + var resultArgs = valuesL.Where("it = @0", 100); var resultIn = valuesL.Where("it in (100)"); // Assert Assert.Equal(resultValuesL.ToArray(), resultL); + Assert.Equal(resultValuesL.ToArray(), resultLs); Assert.Equal(resultValuesL.ToArray(), resultNL); Assert.Equal(resultValuesL.ToArray(), resultArg); + Assert.Equal(resultValuesL.ToArray(), resultArgs); Assert.Equal(resultValuesL.ToArray(), resultIn); } @@ -1743,13 +1747,15 @@ public void ExpressionTests_Type_StructWithIntegerEquality_BothVariablesInStruct Id = new SnowflakeId(1L), Var = 1 } - }.AsQueryable(); + }.AsQueryable().ToArray(); // Act var resultL = valuesL.Where("it.Id == it.Var"); + var resultLs = valuesL.Where("it.Id = it.Var"); // Assert Assert.Equal(resultValuesL.ToArray(), resultL); + Assert.Equal(resultValuesL.ToArray(), resultLs); } [Fact] From 845e043da86c3ea88affb5bce362938d6a0ab839 Mon Sep 17 00:00:00 2001 From: Vita Tauer Date: Fri, 14 Jun 2019 14:00:08 +0200 Subject: [PATCH 2/2] Single '=' is also op_Equality --- src/System.Linq.Dynamic.Core/Parser/ExpressionParser.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/System.Linq.Dynamic.Core/Parser/ExpressionParser.cs b/src/System.Linq.Dynamic.Core/Parser/ExpressionParser.cs index ff3d2ea5..b51cc964 100644 --- a/src/System.Linq.Dynamic.Core/Parser/ExpressionParser.cs +++ b/src/System.Linq.Dynamic.Core/Parser/ExpressionParser.cs @@ -1902,6 +1902,7 @@ static string GetOverloadedOperationName(TokenId tokenId) switch (tokenId) { case TokenId.DoubleEqual: + case TokenId.Equal: return "op_Equality"; case TokenId.ExclamationEqual: return "op_Inequality";