@@ -257,6 +257,55 @@ public void Can_select_not_equals_null_espression()
257257 }
258258
259259 // Assume not equal works ;-)
260+
261+ [ Test ]
262+ public void Can_select_equals_coalesce_on_the_left_expression ( )
263+ {
264+ // ReSharper disable ConvertToConstant.Local
265+ object stringVal = "sometext" ;
266+ // ReSharper restore ConvertToConstant.Local
267+
268+ var expected = new TestType ( )
269+ {
270+ IntColumn = 12 ,
271+ BoolColumn = false ,
272+ StringColumn = "test" ,
273+ NullableCol = "sometext"
274+ } ;
275+
276+ EstablishContext ( 10 , expected ) ;
277+
278+ var actual = OpenDbConnection ( ) . Select < TestType > ( q => ( q . NullableCol ?? "othertext" ) == stringVal ) ;
279+
280+ Assert . IsNotNull ( actual ) ;
281+ Assert . AreEqual ( actual . Count , 1 ) ; // this passes, because PARAMS: @0=othertext, @1=sometext
282+ CollectionAssert . Contains ( actual , expected ) ;
283+ }
284+
285+ [ Test ]
286+ public void Can_select_equals_coalesce_on_the_right_expression ( )
287+ {
288+ // ReSharper disable ConvertToConstant.Local
289+ object stringVal = "sometext" ;
290+ // ReSharper restore ConvertToConstant.Local
291+
292+ var expected = new TestType ( )
293+ {
294+ IntColumn = 12 ,
295+ BoolColumn = false ,
296+ StringColumn = "test" ,
297+ NullableCol = "sometext"
298+ } ;
299+
300+ EstablishContext ( 10 , expected ) ;
301+
302+ var actual = OpenDbConnection ( ) . Select < TestType > ( q => stringVal == ( q . NullableCol ?? "othertext" ) ) ;
303+
304+ Assert . IsNotNull ( actual ) ;
305+ Assert . AreEqual ( actual . Count , 1 ) ; // this will fail for now, because PARAMS: @0=othertext, @1={Text:"COALESCE(""NullableCol"",@0)"}
306+ CollectionAssert . Contains ( actual , expected ) ; // this will fail as well
307+ }
308+
260309 #endregion
261310 }
262311}
0 commit comments