Skip to content

Commit 2d7b8ee

Browse files
nothrowStefH
authored andcommitted
op_Compare also for single "equals" token (#276)
* Added tests for just single '=' in equality * Single '=' is also op_Equality
1 parent 95d15ca commit 2d7b8ee

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

src/System.Linq.Dynamic.Core/Parser/ExpressionParser.cs

+1
Original file line numberDiff line numberDiff line change
@@ -1902,6 +1902,7 @@ static string GetOverloadedOperationName(TokenId tokenId)
19021902
switch (tokenId)
19031903
{
19041904
case TokenId.DoubleEqual:
1905+
case TokenId.Equal:
19051906
return "op_Equality";
19061907
case TokenId.ExclamationEqual:
19071908
return "op_Inequality";

test/System.Linq.Dynamic.Core.Tests/DynamicExpressionParserTests.cs

+5-3
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,10 @@ public void DynamicExpressionParser_ParseLambda_UseParameterizedNamesInDynamicQu
143143
Check.That(value).IsEqualTo("x");
144144
}
145145

146-
[Fact]
147-
public void DynamicExpressionParser_ParseLambda_WithStructWithEquality()
146+
[Theory]
147+
[InlineData("Where(x => x.SnowflakeId == {0})")]
148+
[InlineData("Where(x => x.SnowflakeId = {0})")]
149+
public void DynamicExpressionParser_ParseLambda_WithStructWithEquality(string query)
148150
{
149151
// Assign
150152
var testList = User.GenerateSampleModels(51);
@@ -153,7 +155,7 @@ public void DynamicExpressionParser_ParseLambda_WithStructWithEquality()
153155
// Act
154156
ulong expectedX = (ulong) long.MaxValue + 3;
155157

156-
string query = $"Where(x => x.SnowflakeId == {expectedX})";
158+
query = string.Format(query, expectedX);
157159
LambdaExpression expression = DynamicExpressionParser.ParseLambda(qry.GetType(), null, query);
158160
Delegate del = expression.Compile();
159161
IEnumerable<dynamic> result = del.DynamicInvoke(qry) as IEnumerable<dynamic>;

test/System.Linq.Dynamic.Core.Tests/ExpressionTests.cs

+7-1
Original file line numberDiff line numberDiff line change
@@ -1704,14 +1704,18 @@ public void ExpressionTests_Type_StructWithIntegerEquality()
17041704

17051705
// Act
17061706
var resultL = valuesL.Where("it == 100");
1707+
var resultLs = valuesL.Where("it = 100");
17071708
var resultNL = valuesL.Where("it != 1 && it != 5");
17081709
var resultArg = valuesL.Where("it == @0", 100);
1710+
var resultArgs = valuesL.Where("it = @0", 100);
17091711
var resultIn = valuesL.Where("it in (100)");
17101712

17111713
// Assert
17121714
Assert.Equal(resultValuesL.ToArray(), resultL);
1715+
Assert.Equal(resultValuesL.ToArray(), resultLs);
17131716
Assert.Equal(resultValuesL.ToArray(), resultNL);
17141717
Assert.Equal(resultValuesL.ToArray(), resultArg);
1718+
Assert.Equal(resultValuesL.ToArray(), resultArgs);
17151719
Assert.Equal(resultValuesL.ToArray(), resultIn);
17161720
}
17171721

@@ -1743,13 +1747,15 @@ public void ExpressionTests_Type_StructWithIntegerEquality_BothVariablesInStruct
17431747
Id = new SnowflakeId(1L),
17441748
Var = 1
17451749
}
1746-
}.AsQueryable();
1750+
}.AsQueryable().ToArray();
17471751

17481752
// Act
17491753
var resultL = valuesL.Where("it.Id == it.Var");
1754+
var resultLs = valuesL.Where("it.Id = it.Var");
17501755

17511756
// Assert
17521757
Assert.Equal(resultValuesL.ToArray(), resultL);
1758+
Assert.Equal(resultValuesL.ToArray(), resultLs);
17531759
}
17541760

17551761
[Fact]

0 commit comments

Comments
 (0)