@@ -262,6 +262,11 @@ public static class StaticHelper
262
262
{
263
263
return Guid . NewGuid ( ) ;
264
264
}
265
+
266
+ public static string Filter ( string filter )
267
+ {
268
+ return filter ;
269
+ }
265
270
}
266
271
267
272
public class TestCustomTypeProvider : AbstractDynamicLinqCustomTypeProvider , IDynamicLinkCustomTypeProvider
@@ -1379,14 +1384,58 @@ public void DynamicExpressionParser_ParseLambda_Operator_Less_Greater_With_Guids
1379
1384
1380
1385
// Act
1381
1386
var lambda = DynamicExpressionParser . ParseLambda ( config , typeof ( User ) , null , expressionText , user ) ;
1382
- var guidLambda = lambda as Expression < Func < User , Guid > > ;
1383
- Assert . NotNull ( guidLambda ) ;
1387
+ var guidLambda = ( Expression < Func < User , Guid > > ) lambda ;
1384
1388
1385
- var del = lambda . Compile ( ) ;
1386
- var result = ( Guid ) del . DynamicInvoke ( user ) ;
1389
+ var del = guidLambda . Compile ( ) ;
1390
+ var result = ( Guid ? ) del . DynamicInvoke ( user ) ;
1387
1391
1388
1392
// Assert
1389
- Assert . Equal ( anotherId , result ) ;
1393
+ result . Should ( ) . Be ( anotherId ) ;
1394
+ }
1395
+
1396
+ [ Fact ]
1397
+ public void DynamicExpressionParser_ParseLambda_CustomType_Method_With_ExpressionString ( )
1398
+ {
1399
+ // Arrange
1400
+ var config = new ParsingConfig
1401
+ {
1402
+ CustomTypeProvider = new TestCustomTypeProvider ( )
1403
+ } ;
1404
+
1405
+ var user = new User ( ) ;
1406
+
1407
+ // Act : char
1408
+ var expressionTextChar = "StaticHelper.Filter(\" C == 'x'\" )" ;
1409
+ var lambdaChar = DynamicExpressionParser . ParseLambda ( config , typeof ( User ) , null , expressionTextChar , user ) ;
1410
+ var funcChar = ( Expression < Func < User , string > > ) lambdaChar ;
1411
+
1412
+ var delegateChar = funcChar . Compile ( ) ;
1413
+ var resultChar = ( string ? ) delegateChar . DynamicInvoke ( user ) ;
1414
+
1415
+ // Assert : int
1416
+ resultChar . Should ( ) . Be ( "C == 'x'" ) ;
1417
+
1418
+ // Act : int
1419
+ var expressionTextIncome = "StaticHelper.Filter(\" Income == 5\" )" ;
1420
+ var lambdaIncome = DynamicExpressionParser . ParseLambda ( config , typeof ( User ) , null , expressionTextIncome , user ) ;
1421
+ var funcIncome = ( Expression < Func < User , string > > ) lambdaIncome ;
1422
+
1423
+ var delegateIncome = funcIncome . Compile ( ) ;
1424
+ var resultIncome = ( string ? ) delegateIncome . DynamicInvoke ( user ) ;
1425
+
1426
+ // Assert : int
1427
+ resultIncome . Should ( ) . Be ( "Income == 5" ) ;
1428
+
1429
+ // Act : string
1430
+ var expressionTextUserName = "StaticHelper.Filter(\" UserName == \" \" x\" \" \" )" ;
1431
+ var lambdaUserName = DynamicExpressionParser . ParseLambda ( config , typeof ( User ) , null , expressionTextUserName , user ) ;
1432
+ var funcUserName = ( Expression < Func < User , string > > ) lambdaUserName ;
1433
+
1434
+ var delegateUserName = funcUserName . Compile ( ) ;
1435
+ var resultUserName = ( string ? ) delegateUserName . DynamicInvoke ( user ) ;
1436
+
1437
+ // Assert : string
1438
+ resultUserName . Should ( ) . Be ( @"UserName == ""x""""""" ) ;
1390
1439
}
1391
1440
1392
1441
[ Theory ]
0 commit comments