@@ -162,7 +162,15 @@ public async Task CompareIntegralParametersAndColumnsAsync()
162162 3 ,
163163 sql =>
164164 {
165- Assert . That ( sql , Does . Not . Contain ( "cast" ) ) ;
165+ if ( Sfi . Dialect is FirebirdDialect )
166+ {
167+ Assert . That ( sql , Does . Contain ( "cast" ) ) ;
168+ }
169+ else
170+ {
171+ Assert . That ( sql , Does . Not . Contain ( "cast" ) ) ;
172+ }
173+
166174 Assert . That ( GetTotalOccurrences ( sql , $ "Type: { pair . Value } ") , Is . EqualTo ( 3 ) ) ;
167175 } ) ) ;
168176 }
@@ -203,7 +211,15 @@ public async Task CompareIntegralParametersWithFloatingPointColumnsAsync()
203211 3 ,
204212 sql =>
205213 {
206- Assert . That ( sql , Does . Not . Contain ( "cast" ) ) ;
214+ if ( Sfi . Dialect is FirebirdDialect )
215+ {
216+ Assert . That ( sql , Does . Contain ( "cast" ) ) ;
217+ }
218+ else
219+ {
220+ Assert . That ( sql , Does . Not . Contain ( "cast" ) ) ;
221+ }
222+
207223 Assert . That ( GetTotalOccurrences ( sql , $ "Type: { pair . Value } ") , Is . EqualTo ( 3 ) ) ;
208224 } ) ) ;
209225 }
@@ -245,7 +261,15 @@ public async Task CompareFloatingPointParametersAndColumnsAsync()
245261 totalParameters ,
246262 sql =>
247263 {
248- Assert . That ( sql , Does . Not . Contain ( "cast" ) ) ;
264+ if ( Sfi . Dialect is FirebirdDialect )
265+ {
266+ Assert . That ( sql , Does . Contain ( "cast" ) ) ;
267+ }
268+ else
269+ {
270+ Assert . That ( sql , Does . Not . Contain ( "cast" ) ) ;
271+ }
272+
249273 Assert . That ( GetTotalOccurrences ( sql , $ "Type: { pair . Value } ") , Is . EqualTo ( totalParameters ) ) ;
250274 } ) ) ;
251275 }
@@ -368,8 +392,17 @@ public async Task CompareFloatingPointParameterWithDifferentFloatingPointColumns
368392 var matches = pair . Value == "Double"
369393 ? Regex . Matches ( sql , @"cast\([\w\d]+\..+\)" )
370394 : Regex . Matches ( sql , @"cast\(((@|\?|:)p\d+|\?)\s+as.*\)" ) ;
371- // SQLiteDialect uses sql cast for transparentcast method
372- Assert . That ( matches . Count , Is . EqualTo ( sameType && ! ( Sfi . Dialect is SQLiteDialect ) ? 0 : 1 ) ) ;
395+ if ( Sfi . Dialect is FirebirdDialect )
396+ {
397+ // Additional casts are added by FirebirdClientDriver
398+ Assert . That ( matches . Count , Is . EqualTo ( pair . Value == "Double" ? 1 : 2 ) ) ;
399+ }
400+ else
401+ {
402+ // SQLiteDialect uses sql cast for transparentcast method
403+ Assert . That ( matches . Count , Is . EqualTo ( sameType && ! ( Sfi . Dialect is SQLiteDialect ) ? 0 : 1 ) ) ;
404+ }
405+
373406 Assert . That ( GetTotalOccurrences ( sql , $ "Type: { pair . Value } ") , Is . EqualTo ( 1 ) ) ;
374407 } ) ) ;
375408 }
@@ -408,7 +441,7 @@ public async Task CompareIntegralParameterWithIntegralAndFloatingPointColumnsAsy
408441 sql =>
409442 {
410443 var matches = Regex . Matches ( sql , @"cast\(((@|\?|:)p\d+|\?)\s+as.*\)" ) ;
411- Assert . That ( matches . Count , Is . EqualTo ( 1 ) ) ;
444+ Assert . That ( matches . Count , Is . EqualTo ( Sfi . Dialect is FirebirdDialect ? 2 : 1 ) ) ;
412445 Assert . That ( GetTotalOccurrences ( sql , $ "Type: { pair . Value } ") , Is . EqualTo ( 1 ) ) ;
413446 } ) ) ;
414447 }
@@ -447,7 +480,17 @@ public async Task UsingValueTypeParameterOfDifferentTypeAsync()
447480 await ( AssertTotalParametersAsync (
448481 query ,
449482 1 ,
450- sql => Assert . That ( sql , Does . Not . Contain ( "cast" ) ) ) ) ;
483+ sql =>
484+ {
485+ if ( Sfi . Dialect is FirebirdDialect )
486+ {
487+ Assert . That ( sql , Does . Contain ( "cast" ) ) ;
488+ }
489+ else
490+ {
491+ Assert . That ( sql , Does . Not . Contain ( "cast" ) ) ;
492+ }
493+ } ) ) ;
451494 }
452495
453496 queriables = new List < IQueryable < NumericEntity > >
@@ -476,7 +519,16 @@ public async Task UsingValueTypeParameterOfDifferentTypeAsync()
476519 sql => {
477520 // SQLiteDialect uses sql cast for transparentcast method
478521 Assert . That ( sql , ! sameType || Sfi . Dialect is SQLiteDialect ? Does . Match ( "where\\ s+cast" ) : ( IResolveConstraint ) Does . Not . Contain ( "cast" ) ) ;
479- Assert . That ( GetTotalOccurrences ( sql , "cast" ) , Is . EqualTo ( ! sameType || Sfi . Dialect is SQLiteDialect ? 1 : 0 ) ) ;
522+ if ( Sfi . Dialect is FirebirdDialect )
523+ {
524+ // Additional casts are added by FirebirdClientDriver
525+ Assert . That ( GetTotalOccurrences ( sql , "cast" ) , Is . EqualTo ( 3 ) ) ;
526+ }
527+ else
528+ {
529+ // SQLiteDialect uses sql cast for transparentcast method
530+ Assert . That ( GetTotalOccurrences ( sql , "cast" ) , Is . EqualTo ( ! sameType || Sfi . Dialect is SQLiteDialect ? 1 : 0 ) ) ;
531+ }
480532 } ) ) ;
481533 }
482534 }
@@ -489,7 +541,7 @@ public async Task UsingValueTypeParameterTwiceOnNullablePropertyAsync()
489541 db . NumericEntities . Where ( o => o . NullableShort == value && o . NullableShort != value && o . Short == value ) ,
490542 1 , sql => {
491543
492- Assert . That ( GetTotalOccurrences ( sql , "cast" ) , Is . EqualTo ( 0 ) ) ;
544+ Assert . That ( GetTotalOccurrences ( sql , "cast" ) , Is . EqualTo ( Sfi . Dialect is FirebirdDialect ? 3 : 0 ) ) ;
493545 } ) ) ;
494546 }
495547
0 commit comments