@@ -669,6 +669,198 @@ public void Can_Where_using_And_Equal_Conditional_filter()
669
669
Assert . That ( target . Count , Is . EqualTo ( 2 ) ) ;
670
670
}
671
671
672
+ [ Test ]
673
+ public void Can_Where_using_Constant_in_Conditional_filter1 ( )
674
+ {
675
+ var i = 0 ;
676
+ System . Linq . Expressions . Expression < Func < TestType , bool > > filter = x => i > 0 ? x . BoolCol : x . TextCol . Contains ( "qwer" ) ;
677
+ var q = Db . From < TestType > ( ) . Where ( filter ) ;
678
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Not . Contain ( "=" ) ) ;
679
+
680
+ var target = Db . Select ( q ) ;
681
+ Assert . That ( target . Count , Is . EqualTo ( 2 ) ) ;
682
+ }
683
+
684
+ [ Test ]
685
+ public void Can_Where_using_Constant_in_Conditional_filter2 ( )
686
+ {
687
+ var i = 10 ;
688
+ System . Linq . Expressions . Expression < Func < TestType , bool > > filter = x => i > 0 ? x . BoolCol : x . TextCol . Contains ( "qwer" ) ;
689
+ var q = Db . From < TestType > ( ) . Where ( filter ) ;
690
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Contain ( "=" ) ) ;
691
+
692
+ var target = Db . Select ( q ) ;
693
+ Assert . That ( target . Count , Is . EqualTo ( 2 ) ) ;
694
+ }
695
+
696
+ [ Test ]
697
+ public void Can_Where_using_Constant_in_Conditional_filter3 ( )
698
+ {
699
+ var i = 0 ;
700
+ var fake = 1 ;
701
+ System . Linq . Expressions . Expression < Func < TestType , bool > > filter = x => x . Id > 0 ? fake != fake : x . TextCol . Contains ( "zxcv" ) ;
702
+ var q = Db . From < TestType > ( ) . Where ( filter ) ;
703
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Contain ( "=" ) ) ;
704
+
705
+ var target = Db . Select ( q ) ;
706
+ Assert . That ( target . Count , Is . EqualTo ( 0 ) ) ;
707
+ }
708
+
709
+ [ Test ]
710
+ public void Can_Where_using_Constant_in_Conditional_filter4 ( )
711
+ {
712
+ var i = 10 ;
713
+ var fake = 1 ;
714
+ System . Linq . Expressions . Expression < Func < TestType , bool > > filter = x => i > 0 ? fake != fake : x . TextCol . Contains ( "qwer" ) ;
715
+ var q = Db . From < TestType > ( ) . Where ( filter ) ;
716
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Contain ( "=" ) ) ;
717
+
718
+ var target = Db . Select ( q ) ;
719
+ Assert . That ( target . Count , Is . EqualTo ( 0 ) ) ;
720
+ }
721
+
722
+
723
+ [ Test ]
724
+ public void Can_Where_using_Constant_in_Conditional_filter5 ( )
725
+ {
726
+ var i = 10 ;
727
+ var fake = 1 ;
728
+ System . Linq . Expressions . Expression < Func < TestType , bool > > filter = x => i > 0 ? x . Id == x . Id : x . TextCol . Contains ( "qwer" ) ;
729
+ var q = Db . From < TestType > ( ) . Where ( filter ) ;
730
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Contain ( "=" ) ) ;
731
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Not . Contain ( "=1" ) ) ;
732
+
733
+ var target = Db . Select ( q ) ;
734
+ Assert . That ( target . Count , Is . EqualTo ( 4 ) ) ;
735
+ }
736
+
737
+ [ Test ]
738
+ public void Can_Where_using_Conditional_order1 ( )
739
+ {
740
+ var i = 0 ;
741
+ var fake = 1 ;
742
+ System . Linq . Expressions . Expression < Func < TestType , object > > order = x => x . Id > 2 ? x . BoolCol : x . TextCol . Contains ( "qwer" ) ;
743
+ var q = Db . From < TestType > ( ) . OrderBy ( order ) . ThenBy ( x => x . Id ) ;
744
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Not . Contain ( "=" ) ) ;
745
+
746
+ var target = Db . Select ( q ) ;
747
+ Assert . That ( target . Count , Is . EqualTo ( 4 ) ) ;
748
+ var text = target [ 0 ] . TextCol ;
749
+ Assert . AreEqual ( "asdf" , text ) ;
750
+ }
751
+
752
+ [ Test ]
753
+ public void Can_Where_using_Constant_in_Conditional_order1 ( )
754
+ {
755
+ var i = 0 ;
756
+ var fake = 1 ;
757
+ System . Linq . Expressions . Expression < Func < TestType , object > > order = x => i > 0 ? x . BoolCol : x . TextCol . Contains ( "qwer" ) ;
758
+ var q = Db . From < TestType > ( ) . OrderBy ( order ) . ThenBy ( x => x . Id ) ;
759
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Not . Contain ( "=" ) ) ;
760
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Contain ( " like " ) ) ;
761
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Contain ( "case when " ) ) ;
762
+
763
+ var target = Db . Select ( q ) ;
764
+ Assert . That ( target . Count , Is . EqualTo ( 4 ) ) ;
765
+ var text = target [ 0 ] . TextCol ;
766
+ Assert . AreEqual ( "asdf" , text ) ;
767
+ }
768
+
769
+ [ Test ]
770
+ public void Can_Where_using_Constant_in_Conditional_order2 ( )
771
+ {
772
+ var i = 10 ;
773
+ var fake = 1 ;
774
+ System . Linq . Expressions . Expression < Func < TestType , object > > order = x => i > 0 ? x . BoolCol : x . TextCol . Contains ( "qwer" ) ;
775
+ var q = Db . From < TestType > ( ) . OrderBy ( order ) . ThenBy ( x => x . Id ) ;
776
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Not . Contain ( "=" ) ) ;
777
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Contain ( "order by \" boolcol\" " ) ) ;
778
+
779
+ var target = Db . Select ( q ) ;
780
+ Assert . That ( target . Count , Is . EqualTo ( 4 ) ) ;
781
+ var text = target [ 0 ] . TextCol ;
782
+ Assert . AreEqual ( "qwer" , text ) ;
783
+ }
784
+
785
+ [ Test ]
786
+ public void Can_Where_using_Constant_in_Conditional_order3 ( )
787
+ {
788
+ var i = 0 ;
789
+ var fake = 1 ;
790
+ System . Linq . Expressions . Expression < Func < TestType , object > > order = x => i > 0 ? false : x . TextCol . Contains ( "qwer" ) ;
791
+ var q = Db . From < TestType > ( ) . OrderBy ( order ) . ThenBy ( x => x . Id ) ;
792
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Not . Contain ( "=" ) ) ;
793
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Contain ( "@0" ) ) ;
794
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Contain ( "case when " ) ) ;
795
+
796
+ var target = Db . Select ( q ) ;
797
+ Assert . That ( target . Count , Is . EqualTo ( 4 ) ) ;
798
+ var text = target [ 0 ] . TextCol ;
799
+ Assert . AreEqual ( "asdf" , text ) ;
800
+ }
801
+
802
+ [ Test ]
803
+ public void Can_Where_using_Constant_in_Conditional_order4 ( )
804
+ {
805
+ var i = 10 ;
806
+ var fake = 1 ;
807
+ System . Linq . Expressions . Expression < Func < TestType , object > > order = x => i > 0 ? false : x . TextCol . Contains ( "qwer" ) ;
808
+ var q = Db . From < TestType > ( ) . OrderBy ( order ) . ThenBy ( x => x . Id ) ;
809
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Not . Contain ( "=" ) ) ;
810
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Not . Contain ( "@0" ) ) ;
811
+
812
+ var target = Db . Select ( q ) ;
813
+ Assert . That ( target . Count , Is . EqualTo ( 4 ) ) ;
814
+ var text = target [ 0 ] . TextCol ;
815
+ Assert . AreEqual ( "asdf" , text ) ;
816
+ }
817
+
818
+ [ Test ]
819
+ public void Can_Where_using_Constant_in_Conditional_order5 ( )
820
+ {
821
+ var i = 0 ;
822
+ System . Linq . Expressions . Expression < Func < TestType , object > > order = x => i > 0 ? x . TextCol : "www" ;
823
+ var q = Db . From < TestType > ( ) . OrderBy ( order ) . ThenBy ( x => x . Id ) ;
824
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Not . Contain ( "=" ) ) ;
825
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Not . Contain ( "@0" ) ) ;
826
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Contain ( "order by \" id\" " ) ) ;
827
+
828
+ var target = Db . Select ( q ) ;
829
+ Assert . That ( target . Count , Is . EqualTo ( 4 ) ) ;
830
+ var text = target [ 0 ] . TextCol ;
831
+ Assert . AreEqual ( "asdf" , text ) ;
832
+ }
833
+
834
+ [ Test ]
835
+ public void Can_Where_using_Constant_in_Conditional_order6 ( )
836
+ {
837
+ var i = 10 ;
838
+ System . Linq . Expressions . Expression < Func < TestType , object > > order = x => i > 0 ? x . TextCol : "www" ;
839
+ var q = Db . From < TestType > ( ) . OrderBy ( order ) . ThenBy ( x => x . Id ) ;
840
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Not . Contain ( "=" ) ) ;
841
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Not . Contain ( "@0" ) ) ;
842
+
843
+ var target = Db . Select ( q ) ;
844
+ Assert . That ( target . Count , Is . EqualTo ( 4 ) ) ;
845
+ var text = target [ 0 ] . TextCol ;
846
+ Assert . AreEqual ( "asdf" , text ) ;
847
+ }
848
+
849
+ [ Test ]
850
+ public void Can_Where_using_Constant_in_Conditional_order7 ( )
851
+ {
852
+ var i = 10 ;
853
+ System . Linq . Expressions . Expression < Func < TestType , object > > order = x => x . Id > 0 ? x . TextCol : "www" ;
854
+ var q = Db . From < TestType > ( ) . OrderBy ( order ) . ThenBy ( x => x . Id ) ;
855
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Not . Contain ( "=" ) ) ;
856
+ Assert . That ( q . ToSelectStatement ( ) . ToLower ( ) , Does . Contain ( "@0" ) ) ;
857
+
858
+ var target = Db . Select ( q ) ;
859
+ Assert . That ( target . Count , Is . EqualTo ( 4 ) ) ;
860
+ var text = target [ 0 ] . TextCol ;
861
+ Assert . AreEqual ( "asdf" , text ) ;
862
+ }
863
+
672
864
private int MethodReturningInt ( int val )
673
865
{
674
866
return val ;
0 commit comments