@@ -580,14 +580,82 @@ public void CastAnyPropertyTest()
580580 public void QueryUnmppedEntityTest ( )
581581 {
582582 var query = session . Query < IEntity < int > > ( ) . Select ( o => o . Id ) ;
583- AssertFalse ( query , null , null , o => o == null ) ;
583+ AssertTrueNotNull ( query , typeof ( User ) . FullName , "Id" , o => o is Int32Type ) ;
584584 }
585585
586586 [ Test ]
587- public void NotSupportedConditionalExpressionTest ( )
587+ public void ConditionalExpressionTest ( )
588588 {
589589 var query = db . Users . Select ( o => ( o . Name == "Test" ? o . RegisteredAt : o . LastLoginDate ) ) ;
590- AssertFalse ( query , false , null , null , o => o == null ) ;
590+ AssertTrue ( query , false , typeof ( User ) . FullName , "RegisteredAt" , o => o is DateTimeType ) ;
591+ }
592+
593+ [ Test ]
594+ public void ConditionalIfFalseExpressionTest ( )
595+ {
596+ var query = db . Users . Select ( o => ( o . Name == "Test" ? DateTime . Today : o . LastLoginDate ) ) ;
597+ AssertTrue ( query , false , typeof ( User ) . FullName , "LastLoginDate" , o => o is DateTimeType ) ;
598+ }
599+
600+ [ Test ]
601+ public void ConditionalMemberExpressionTest ( )
602+ {
603+ var query = db . Users . Select ( o => ( o . Name == "Test" ? o . NotMappedRole : o . Role ) . IsActive ) ;
604+ AssertTrue ( query , false , typeof ( Role ) . FullName , "IsActive" , o => o is BooleanType ) ;
605+ }
606+
607+ [ Test ]
608+ public void ConditionalNestedExpressionTest ( )
609+ {
610+ var query = db . Users . Select ( o => ( o . Name == "Test" ? o . Component . OtherComponent . OtherProperty1 : o . Component . Property1 ) ) ;
611+ AssertTrue (
612+ query ,
613+ false ,
614+ typeof ( User ) . FullName ,
615+ "Component.OtherComponent.OtherProperty1" ,
616+ o => o is AnsiStringType ,
617+ o => o ? . Name == "component[OtherProperty1]" ) ;
618+ }
619+
620+ [ Test ]
621+ public void CoalesceExpressionTest ( )
622+ {
623+ var query = db . Users . Select ( o => o . LastLoginDate ?? o . RegisteredAt ) ;
624+ AssertTrue ( query , false , typeof ( User ) . FullName , "LastLoginDate" , o => o is DateTimeType ) ;
625+ }
626+
627+ [ Test ]
628+ public void CoalesceRightExpressionTest ( )
629+ {
630+ var query = db . Users . Select ( o => ( ( DateTime ? ) DateTime . Now ) ?? o . RegisteredAt ) ;
631+ AssertTrue ( query , false , typeof ( User ) . FullName , "RegisteredAt" , o => o is DateTimeType ) ;
632+ }
633+
634+ [ Test ]
635+ public void CoalesceMemberExpressionTest ( )
636+ {
637+ var query = db . Users . Select ( o => ( o . NotMappedRole ?? o . Role ) . IsActive ) ;
638+ AssertTrue ( query , false , typeof ( Role ) . FullName , "IsActive" , o => o is BooleanType ) ;
639+ }
640+
641+ [ Test ]
642+ public void CoalesceNestedExpressionTest ( )
643+ {
644+ var query = db . Users . Select ( o => o . Component . OtherComponent . OtherProperty1 ?? o . Component . Property1 ) ;
645+ AssertTrue (
646+ query ,
647+ false ,
648+ typeof ( User ) . FullName ,
649+ "Component.OtherComponent.OtherProperty1" ,
650+ o => o is AnsiStringType ,
651+ o => o ? . Name == "component[OtherProperty1]" ) ;
652+ }
653+
654+ [ Test ]
655+ public void CoalesceConditionalMemberExpressionTest ( )
656+ {
657+ var query = db . Users . Select ( o => ( o . Name == "Test" ? o . NotMappedRole : ( o . NotMappedRole ?? new Role ( ) ?? o . Role ) ) . IsActive ) ;
658+ AssertTrue ( query , false , typeof ( Role ) . FullName , "IsActive" , o => o is BooleanType ) ;
591659 }
592660
593661 [ Test ]
@@ -615,6 +683,20 @@ public void NotNullComponentPropertyTest()
615683 o => o ? . Name == "component[FirstName,LastName]" ) ;
616684 }
617685
686+ [ Test ]
687+ public void NotRelatedTypeTest ( )
688+ {
689+ var query = session . Query < Expression > ( ) . Select ( o => o . CanReduce ) ;
690+ AssertFalse ( query , null , null , o => o == null ) ;
691+ }
692+
693+ [ Test ]
694+ public void NotNhQueryableTest ( )
695+ {
696+ var query = new List < User > ( ) . AsQueryable ( ) . Select ( o => o . Name ) ;
697+ AssertFalse ( query , false , null , null , o => o == null ) ;
698+ }
699+
618700 private void AssertFalse (
619701 IQueryable query ,
620702 string expectedEntityName ,
0 commit comments