@@ -48,7 +48,9 @@ public void Bar()
48
48
Name = nameof ( Foo ) ;
49
49
}
50
50
51
- public string Name { get ; set ; }
51
+ public string ? Name { get ; set ; }
52
+
53
+ public string ? Description { get ; set ; }
52
54
53
55
public MyClass Child { get ; set ; }
54
56
}
@@ -1683,24 +1685,53 @@ public void DynamicExpressionParser_ParseLambda_StringEquals_WithCombinedConditi
1683
1685
1684
1686
// #803
1685
1687
[ Fact ]
1686
- public void DynamicExpressionParser_ParseLambda_StringEquals_WithConstantString ( )
1688
+ public void DynamicExpressionParser_ParseLambda_Calling_Equals_On_ConstantString ( )
1687
1689
{
1688
1690
// Arrange
1689
1691
var parameters = new [ ]
1690
1692
{
1691
1693
Expression . Parameter ( typeof ( MyClass ) , "myClass" )
1692
1694
} ;
1693
1695
1694
- var invokerArguments = new List < object >
1696
+ var invokerArguments = new object [ ]
1695
1697
{
1696
1698
new MyClass { Name = "Foo" }
1697
1699
} ;
1698
1700
1699
1701
// Act
1700
- var expression = "Name == \" test\" || \" foo\" .Equals(it.Name, StringComparison.OrdinalIgnoreCase)" ;
1702
+ var expression = "Name == \" test\" || Name.ToLower() == \" abc \" or \" foo\" .Equals(it.Name, StringComparison.OrdinalIgnoreCase)" ;
1701
1703
var lambdaExpression = DynamicExpressionParser . ParseLambda ( parameters , null , expression ) ;
1702
1704
var del = lambdaExpression . Compile ( ) ;
1703
- var result = del . DynamicInvoke ( invokerArguments . ToArray ( ) ) ;
1705
+ var result = del . DynamicInvoke ( invokerArguments ) ;
1706
+
1707
+ // Assert
1708
+ result . Should ( ) . Be ( true ) ;
1709
+ }
1710
+
1711
+ // #810
1712
+ [ Fact ]
1713
+ public void DynamicExpressionParser_ParseLambda_Calling_ToLower_On_String ( )
1714
+ {
1715
+ // Arrange
1716
+ var parameters = new [ ]
1717
+ {
1718
+ Expression . Parameter ( typeof ( MyClass ) , "myClass" )
1719
+ } ;
1720
+
1721
+ var invokerArguments = new object [ ]
1722
+ {
1723
+ new MyClass
1724
+ {
1725
+ Name = "Foo" ,
1726
+ Description = "Bar"
1727
+ }
1728
+ } ;
1729
+
1730
+ // Act
1731
+ var expression = "(Name != null && Convert.ToString(Name).ToLower().Contains(\" foo\" )) or (Description != null && Convert.ToString(Description).ToLower().Contains(\" bar\" ))" ;
1732
+ var lambdaExpression = DynamicExpressionParser . ParseLambda ( parameters , null , expression ) ;
1733
+ var del = lambdaExpression . Compile ( ) ;
1734
+ var result = del . DynamicInvoke ( invokerArguments ) ;
1704
1735
1705
1736
// Assert
1706
1737
result . Should ( ) . Be ( true ) ;
0 commit comments