@@ -580,14 +580,82 @@ public void CastAnyPropertyTest()
580
580
public void QueryUnmppedEntityTest ( )
581
581
{
582
582
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 ) ;
584
584
}
585
585
586
586
[ Test ]
587
- public void NotSupportedConditionalExpressionTest ( )
587
+ public void ConditionalExpressionTest ( )
588
588
{
589
589
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 ) ;
591
659
}
592
660
593
661
[ Test ]
@@ -615,6 +683,20 @@ public void NotNullComponentPropertyTest()
615
683
o => o ? . Name == "component[FirstName,LastName]" ) ;
616
684
}
617
685
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
+
618
700
private void AssertFalse (
619
701
IQueryable query ,
620
702
string expectedEntityName ,
0 commit comments