@@ -11,6 +11,8 @@ namespace System.Linq.Dynamic.Core.Tests
1111{
1212 public class DynamicExpressionParserTests
1313 {
14+
15+
1416 private class MyClass
1517 {
1618 public int Foo ( )
@@ -452,5 +454,39 @@ public void ParseLambda_With_InnerStringLiteral()
452454 object result = del . DynamicInvoke ( String . Empty ) ;
453455 Check . That ( result ) . IsEqualTo ( originalTrueValue ) ;
454456 }
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+ }
455491 }
456492}
0 commit comments