@@ -319,6 +319,66 @@ public static void TestParametersWithDatatablesTVPInsert()
319
319
}
320
320
321
321
#region Scaled Decimal Parameter & TVP Test
322
+ [ ConditionalTheory ( typeof ( DataTestUtility ) , nameof ( DataTestUtility . AreConnStringsSetup ) ) ]
323
+ [ InlineData ( "CAST(7.1234567890123456789012345678 as decimal(38, 35))" , "7.1234567890123456789012345678" ) ]
324
+ [ InlineData ( "CAST(-7.1234567890123456789012345678 as decimal(38, 35))" , "-7.1234567890123456789012345678" ) ]
325
+ [ InlineData ( "CAST(-0.1234567890123456789012345678 as decimal(38, 35))" , "-0.1234567890123456789012345678" ) ]
326
+ [ InlineData ( "CAST(4210862852.86 as decimal(38, 20))" , "4210862852.860000000000000000" ) ]
327
+ [ InlineData ( "CAST(0 as decimal(38, 36))" , "0.0000000000000000000000000000" ) ]
328
+ [ InlineData ( "CAST(79228162514264337593543950335 as decimal(38, 9))" , "79228162514264337593543950335" ) ]
329
+ [ InlineData ( "CAST(-79228162514264337593543950335 as decimal(38, 9))" , "-79228162514264337593543950335" ) ]
330
+ [ InlineData ( "CAST(0.4210862852 as decimal(38, 38))" , "0.4210862852000000000000000000" ) ]
331
+ [ InlineData ( "CAST(0.1234567890123456789012345678 as decimal(38, 38))" , "0.1234567890123456789012345678" ) ]
332
+ [ InlineData ( "CAST(249454727.14678312032280248320 as decimal(38, 20))" , "249454727.14678312032280248320" ) ]
333
+ [ InlineData ( "CAST(3961408124790879675.7769715711 as decimal(38, 10))" , "3961408124790879675.7769715711" ) ]
334
+ [ InlineData ( "CAST(3961408124790879675776971571.1 as decimal(38, 1))" , "3961408124790879675776971571.1" ) ]
335
+ [ InlineData ( "CAST(79228162514264337593543950335 as decimal(38, 0))" , "79228162514264337593543950335" ) ]
336
+ [ InlineData ( "CAST(-79228162514264337593543950335 as decimal(38, 0))" , "-79228162514264337593543950335" ) ]
337
+ [ InlineData ( "CAST(0.0000000000000000000000000001 as decimal(38, 38))" , "0.0000000000000000000000000001" ) ]
338
+ [ InlineData ( "CAST(-0.0000000000000000000000000001 as decimal(38, 38))" , "-0.0000000000000000000000000001" ) ]
339
+ public static void SqlDecimalConvertToDecimal_TestInRange ( string sqlDecimalValue , string expectedDecimalValue )
340
+ {
341
+ using ( SqlConnection cnn = new ( s_connString ) )
342
+ {
343
+ cnn . Open ( ) ;
344
+ using ( SqlCommand cmd = new ( $ "SELECT { sqlDecimalValue } val") )
345
+ {
346
+ cmd . Connection = cnn ;
347
+ using ( SqlDataReader rdr = cmd . ExecuteReader ( ) )
348
+ {
349
+ Assert . True ( rdr . Read ( ) , "SqlDataReader must have a value" ) ;
350
+ decimal retrunValue = rdr . GetDecimal ( 0 ) ;
351
+ Assert . Equal ( expectedDecimalValue , retrunValue . ToString ( ) ) ;
352
+ }
353
+ }
354
+ }
355
+ }
356
+
357
+ [ ConditionalTheory ( typeof ( DataTestUtility ) , nameof ( DataTestUtility . AreConnStringsSetup ) ) ]
358
+ [ InlineData ( "CAST(7.9999999999999999999999999999 as decimal(38, 35))" ) ]
359
+ [ InlineData ( "CAST(8.1234567890123456789012345678 as decimal(38, 35))" ) ]
360
+ [ InlineData ( "CAST(-8.1234567890123456789012345678 as decimal(38, 35))" ) ]
361
+ [ InlineData ( "CAST(123456789012345678901234567890 as decimal(38, 0))" ) ]
362
+ [ InlineData ( "CAST(7922816251426433759354395.9999 as decimal(38, 8))" ) ]
363
+ [ InlineData ( "CAST(-7922816251426433759354395.9999 as decimal(38, 8))" ) ]
364
+ [ InlineData ( "CAST(0.123456789012345678901234567890 as decimal(38, 36))" ) ]
365
+ public static void SqlDecimalConvertToDecimal_TestOutOfRange ( string sqlDecimalValue )
366
+ {
367
+ using ( SqlConnection cnn = new ( s_connString ) )
368
+ {
369
+ cnn . Open ( ) ;
370
+ using ( SqlCommand cmd = new ( $ "SELECT { sqlDecimalValue } val") )
371
+ {
372
+ cmd . Connection = cnn ;
373
+ using ( SqlDataReader rdr = cmd . ExecuteReader ( ) )
374
+ {
375
+ Assert . True ( rdr . Read ( ) , "SqlDataReader must have a value" ) ;
376
+ Assert . Throws < OverflowException > ( ( ) => rdr . GetDecimal ( 0 ) ) ;
377
+ }
378
+ }
379
+ }
380
+ }
381
+
322
382
[ Theory ]
323
383
[ ClassData ( typeof ( ConnectionStringsProvider ) ) ]
324
384
public static void TestScaledDecimalParameter_CommandInsert ( string connectionString , bool truncateScaledDecimal )
0 commit comments