@@ -11,6 +11,8 @@ namespace System.Linq.Dynamic.Core.Tests
11
11
{
12
12
public class DynamicExpressionParserTests
13
13
{
14
+
15
+
14
16
private class MyClass
15
17
{
16
18
public int Foo ( )
@@ -452,5 +454,39 @@ public void ParseLambda_With_InnerStringLiteral()
452
454
object result = del . DynamicInvoke ( String . Empty ) ;
453
455
Check . That ( result ) . IsEqualTo ( originalTrueValue ) ;
454
456
}
457
+
458
+ [ Fact ]
459
+ public void ParseLambda_With_If_Guid_Null ( )
460
+ {
461
+ var objContext = new User ( ) ;
462
+ var guidEmpty = Guid . Empty ;
463
+ var someId = Guid . NewGuid ( ) ;
464
+ var expressionText = $ "iif(@0.{ nameof ( objContext . Id ) } == null, @0.{ nameof ( objContext . Id ) } == Guid.Parse(\" { someId } \" ), { nameof ( objContext . Id ) } ={ nameof ( objContext . Id ) } )";
465
+
466
+ var lambda = System . Linq . Dynamic . Core . DynamicExpressionParser . ParseLambda ( typeof ( User ) , null , expressionText , objContext ) ;
467
+ var boolLambda = lambda as Expression < Func < User , bool > > ;
468
+ Check . That ( boolLambda ) . IsNotEqualTo ( null ) ;
469
+
470
+ var del = lambda . Compile ( ) ;
471
+ object result = del . DynamicInvoke ( objContext ) ;
472
+ Check . That ( result ) . IsEqualTo ( true ) ;
473
+ }
474
+
475
+ [ Fact ]
476
+ public void ParseLambda_With_If_Null_Guid ( )
477
+ {
478
+ var objContext = new User ( ) ;
479
+ var guidEmpty = Guid . Empty ;
480
+ var someId = Guid . NewGuid ( ) ;
481
+ var expressionText = $ "iif(null == @0.{ nameof ( objContext . Id ) } , @0.{ nameof ( objContext . Id ) } == Guid.Parse(\" { someId } \" ), { nameof ( objContext . Id ) } ={ nameof ( objContext . Id ) } )";
482
+
483
+ var lambda = System . Linq . Dynamic . Core . DynamicExpressionParser . ParseLambda ( typeof ( User ) , null , expressionText , objContext ) ;
484
+ var boolLambda = lambda as Expression < Func < User , bool > > ;
485
+ Check . That ( boolLambda ) . IsNotEqualTo ( null ) ;
486
+
487
+ var del = lambda . Compile ( ) ;
488
+ object result = del . DynamicInvoke ( objContext ) ;
489
+ Check . That ( result ) . IsEqualTo ( true ) ;
490
+ }
455
491
}
456
492
}
0 commit comments