@@ -310,6 +310,257 @@ public void Test_MSSQL_FetchData_Entity_Strict_Error_Check()
310
310
311
311
#endregion
312
312
313
+ #region Execute Scalar Tests - << string ExecuteScalar(string sqlStatement); >>
314
+
315
+ [ TestMethod ]
316
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
317
+ public void Test_MSSQL_ExecuteScalar_As_StringReturn_Scalar_Queries ( )
318
+ {
319
+ var countOfRecords = Queries . MSSQLQueries . TestDB . ScalarQueries . Count_Of_Records ;
320
+ var max = Queries . MSSQLQueries . TestDB . ScalarQueries . Max ;
321
+ var min = Queries . MSSQLQueries . TestDB . ScalarQueries . Min ;
322
+ var sum = Queries . MSSQLQueries . TestDB . ScalarQueries . Sum ;
323
+ var avg = Queries . MSSQLQueries . TestDB . ScalarQueries . Avg ;
324
+ var singleValueSelect = Queries . MSSQLQueries . TestDB . ScalarQueries . Single_Value_Select ;
325
+
326
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
327
+
328
+ var count = dbContext . ExecuteScalar ( countOfRecords ) ;
329
+ Assert . AreEqual ( "12" , count ) ;
330
+ var maxValue = dbContext . ExecuteScalar ( max ) ;
331
+ Assert . AreEqual ( "10000.00" , maxValue ) ;
332
+ var minValue = dbContext . ExecuteScalar ( min ) ;
333
+ Assert . AreEqual ( "3000.00" , minValue ) ;
334
+ var sumValue = dbContext . ExecuteScalar ( sum ) ;
335
+ Assert . AreEqual ( "161000.00" , sumValue ) ;
336
+ var avgValue = dbContext . ExecuteScalar ( avg ) ;
337
+ Assert . AreEqual ( "6520.000000" , avgValue ) ;
338
+ var singleValue = dbContext . ExecuteScalar ( singleValueSelect ) ;
339
+ Assert . AreEqual ( "2" , singleValue ) ;
340
+ }
341
+
342
+ [ TestMethod ]
343
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
344
+ public void Test_MSSQL_ExecuteScalar_As_StringReturn_DefaultValue ( )
345
+ {
346
+ var noValueReturned = Queries . MSSQLQueries . TestDB . ScalarQueries . No_Value_Returned ;
347
+ var dBNullValue = Queries . MSSQLQueries . TestDB . ScalarQueries . DB_Null_Value ;
348
+
349
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
350
+
351
+ var result = dbContext . ExecuteScalar ( noValueReturned ) ;
352
+ Assert . IsInstanceOfType < string > ( result ) ;
353
+ Assert . AreEqual ( "" , result ) ;
354
+
355
+ result = dbContext . ExecuteScalar ( dBNullValue ) ;
356
+ Assert . IsInstanceOfType < string > ( result ) ;
357
+ Assert . AreEqual ( string . Empty , result ) ;
358
+ }
359
+
360
+ [ TestMethod ]
361
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
362
+ public void Test_MSSQL_ExecuteScalar_As_StringReturn_UnsupportedCommands ( )
363
+ {
364
+ var sqlStatements = new List < string >
365
+ {
366
+ Queries . MSSQLQueries . TestDB . DDL . Create_Table ,
367
+ Queries . MSSQLQueries . TestDB . DDL . Alter_Table ,
368
+ Queries . MSSQLQueries . TestDB . DDL . Comment_Table ,
369
+ Queries . MSSQLQueries . TestDB . DDL . Truncate_Table ,
370
+ Queries . MSSQLQueries . TestDB . DDL . Drop_Table ,
371
+
372
+ Queries . MSSQLQueries . TestDB . DML . InsertSql ,
373
+ Queries . MSSQLQueries . TestDB . DML . UpdateSql ,
374
+ Queries . MSSQLQueries . TestDB . DML . DeleteSql ,
375
+
376
+ Queries . MSSQLQueries . TestDB . DCL . GrantSql_Command_Table_User ,
377
+ Queries . MSSQLQueries . TestDB . DCL . RevokeSql_Command_Table_User
378
+ } ;
379
+
380
+ foreach ( var sqlStatement in sqlStatements )
381
+ {
382
+ try
383
+ {
384
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
385
+ dbContext . ExecuteScalar ( sqlStatement ) ;
386
+ Assert . Fail ( "No Exception" ) ;
387
+ }
388
+ catch ( QueryDBException ex )
389
+ {
390
+ Assert . AreEqual ( "Only SELECT queries are supported here." , ex . Message ) ;
391
+ Assert . AreEqual ( "UnsupportedCommand" , ex . ErrorType ) ;
392
+ Assert . AreEqual ( "'ExecuteScalar' only supports SELECT queries that have a scalar (single value) return." , ex . AdditionalInfo ) ;
393
+ }
394
+ }
395
+ }
396
+
397
+ #endregion
398
+
399
+ #region Execute Scalar Tests - << T ExecuteScalar<T>(string sqlStatement); >>
400
+
401
+ [ TestMethod ]
402
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
403
+ public void Test_MSSQL_ExecuteScalar_As_TypedReturn_Scalar_Queries ( )
404
+ {
405
+ var countOfRecords = Queries . MSSQLQueries . TestDB . ScalarQueries . Count_Of_Records ;
406
+ var max = Queries . MSSQLQueries . TestDB . ScalarQueries . Max ;
407
+ var min = Queries . MSSQLQueries . TestDB . ScalarQueries . Min ;
408
+ var sum = Queries . MSSQLQueries . TestDB . ScalarQueries . Sum ;
409
+ var avg = Queries . MSSQLQueries . TestDB . ScalarQueries . Avg ;
410
+ var singleValueSelect = Queries . MSSQLQueries . TestDB . ScalarQueries . Single_Value_Select ;
411
+
412
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
413
+
414
+ var count = dbContext . ExecuteScalar < int > ( countOfRecords ) ;
415
+ Assert . AreEqual ( 12 , count ) ;
416
+ var maxValue = dbContext . ExecuteScalar < float > ( max ) ;
417
+ Assert . AreEqual ( 10000.00 , maxValue ) ;
418
+ var minValue = dbContext . ExecuteScalar < float > ( min ) ;
419
+ Assert . AreEqual ( 3000.00 , minValue ) ;
420
+ var sumValue = dbContext . ExecuteScalar < float > ( sum ) ;
421
+ Assert . AreEqual ( 161000.00 , sumValue ) ;
422
+ var avgValue = dbContext . ExecuteScalar < decimal > ( avg ) ;
423
+ Assert . AreEqual ( ( decimal ) 6520.000000 , avgValue ) ;
424
+ var singleValue = dbContext . ExecuteScalar < string > ( singleValueSelect ) ;
425
+ Assert . AreEqual ( "2" , singleValue ) ;
426
+ }
427
+
428
+ [ TestMethod ]
429
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
430
+ public void Test_MSSQL_ExecuteScalar_As_TypedReturn_DefaultValue ( )
431
+ {
432
+ var dBNullValue = Queries . MSSQLQueries . TestDB . ScalarQueries . DB_Null_Value ;
433
+
434
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
435
+
436
+ dynamic result = dbContext . ExecuteScalar < int > ( dBNullValue ) ;
437
+ Assert . IsInstanceOfType < int > ( result ) ;
438
+ Assert . AreEqual ( default ( int ) , result ) ;
439
+
440
+ result = dbContext . ExecuteScalar < long > ( dBNullValue ) ;
441
+ Assert . IsInstanceOfType < long > ( result ) ;
442
+ Assert . AreEqual ( default ( long ) , result ) ;
443
+
444
+ result = dbContext . ExecuteScalar < short > ( dBNullValue ) ;
445
+ Assert . IsInstanceOfType < short > ( result ) ;
446
+ Assert . AreEqual ( default ( short ) , result ) ;
447
+
448
+ result = dbContext . ExecuteScalar < uint > ( dBNullValue ) ;
449
+ Assert . IsInstanceOfType < uint > ( result ) ;
450
+ Assert . AreEqual ( default ( uint ) , result ) ;
451
+
452
+ result = dbContext . ExecuteScalar < ulong > ( dBNullValue ) ;
453
+ Assert . IsInstanceOfType < ulong > ( result ) ;
454
+ Assert . AreEqual ( default ( ulong ) , result ) ;
455
+
456
+ result = dbContext . ExecuteScalar < ushort > ( dBNullValue ) ;
457
+ Assert . IsInstanceOfType < ushort > ( result ) ;
458
+ Assert . AreEqual ( default ( ushort ) , result ) ;
459
+
460
+ result = dbContext . ExecuteScalar < decimal > ( dBNullValue ) ;
461
+ Assert . IsInstanceOfType < decimal > ( result ) ;
462
+ Assert . AreEqual ( default ( decimal ) , result ) ;
463
+
464
+ result = dbContext . ExecuteScalar < double > ( dBNullValue ) ;
465
+ Assert . IsInstanceOfType < double > ( result ) ;
466
+ Assert . AreEqual ( default ( double ) , result ) ;
467
+
468
+ result = dbContext . ExecuteScalar < float > ( dBNullValue ) ;
469
+ Assert . IsInstanceOfType < float > ( result ) ;
470
+ Assert . AreEqual ( default ( float ) , result ) ;
471
+
472
+ result = dbContext . ExecuteScalar < byte > ( dBNullValue ) ;
473
+ Assert . IsInstanceOfType < byte > ( result ) ;
474
+ Assert . AreEqual ( default ( byte ) , result ) ;
475
+
476
+ result = dbContext . ExecuteScalar < bool > ( dBNullValue ) ;
477
+ Assert . IsInstanceOfType < bool > ( result ) ;
478
+ Assert . AreEqual ( default ( bool ) , result ) ;
479
+
480
+ result = dbContext . ExecuteScalar < DateTime > ( dBNullValue ) ;
481
+ Assert . IsInstanceOfType < DateTime > ( result ) ;
482
+ Assert . AreEqual ( default ( DateTime ) , result ) ;
483
+
484
+ result = dbContext . ExecuteScalar < Guid > ( dBNullValue ) ;
485
+ Assert . IsInstanceOfType < Guid > ( result ) ;
486
+ Assert . AreEqual ( default ( Guid ) , result ) ;
487
+
488
+ result = dbContext . ExecuteScalar < string > ( dBNullValue ) ;
489
+ Assert . IsNull ( result ) ;
490
+ Assert . AreEqual ( default ( string ) , result ) ;
491
+
492
+ result = dbContext . ExecuteScalar < int ? > ( dBNullValue ) ;
493
+ Assert . IsNull ( result ) ;
494
+ Assert . AreEqual ( default ( int ? ) , result ) ;
495
+
496
+ result = dbContext . ExecuteScalar < long ? > ( dBNullValue ) ;
497
+ Assert . IsNull ( result ) ;
498
+ Assert . AreEqual ( default ( long ? ) , result ) ;
499
+
500
+ result = dbContext . ExecuteScalar < short ? > ( dBNullValue ) ;
501
+ Assert . IsNull ( result ) ;
502
+ Assert . AreEqual ( default ( short ? ) , result ) ;
503
+
504
+ result = dbContext . ExecuteScalar < decimal ? > ( dBNullValue ) ;
505
+ Assert . IsNull ( result ) ;
506
+ Assert . AreEqual ( default ( decimal ? ) , result ) ;
507
+
508
+ result = dbContext . ExecuteScalar < double ? > ( dBNullValue ) ;
509
+ Assert . IsNull ( result ) ;
510
+ Assert . AreEqual ( default ( double ? ) , result ) ;
511
+
512
+ result = dbContext . ExecuteScalar < float ? > ( dBNullValue ) ;
513
+ Assert . IsNull ( result ) ;
514
+ Assert . AreEqual ( default ( float ? ) , result ) ;
515
+
516
+ result = dbContext . ExecuteScalar < bool ? > ( dBNullValue ) ;
517
+ Assert . IsNull ( result ) ;
518
+ Assert . AreEqual ( default ( bool ? ) , result ) ;
519
+
520
+ result = dbContext . ExecuteScalar < DateTime ? > ( dBNullValue ) ;
521
+ Assert . IsNull ( result ) ;
522
+ Assert . AreEqual ( default ( DateTime ? ) , result ) ;
523
+ }
524
+
525
+ [ TestMethod ]
526
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
527
+ public void Test_MSSQL_ExecuteScalar_As_TypedReturn_UnsupportedCommands ( )
528
+ {
529
+ var sqlStatements = new List < string >
530
+ {
531
+ Queries . MSSQLQueries . TestDB . DDL . Create_Table ,
532
+ Queries . MSSQLQueries . TestDB . DDL . Alter_Table ,
533
+ Queries . MSSQLQueries . TestDB . DDL . Comment_Table ,
534
+ Queries . MSSQLQueries . TestDB . DDL . Truncate_Table ,
535
+ Queries . MSSQLQueries . TestDB . DDL . Drop_Table ,
536
+
537
+ Queries . MSSQLQueries . TestDB . DML . InsertSql ,
538
+ Queries . MSSQLQueries . TestDB . DML . UpdateSql ,
539
+ Queries . MSSQLQueries . TestDB . DML . DeleteSql ,
540
+
541
+ Queries . MSSQLQueries . TestDB . DCL . GrantSql_Command_Table_User ,
542
+ Queries . MSSQLQueries . TestDB . DCL . RevokeSql_Command_Table_User
543
+ } ;
544
+
545
+ foreach ( var sqlStatement in sqlStatements )
546
+ {
547
+ try
548
+ {
549
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
550
+ dbContext . ExecuteScalar < string > ( sqlStatement ) ;
551
+ Assert . Fail ( "No Exception" ) ;
552
+ }
553
+ catch ( QueryDBException ex )
554
+ {
555
+ Assert . AreEqual ( "Only SELECT queries are supported here." , ex . Message ) ;
556
+ Assert . AreEqual ( "UnsupportedCommand" , ex . ErrorType ) ;
557
+ Assert . AreEqual ( "'ExecuteScalar' only supports SELECT queries that have a scalar (single value) return." , ex . AdditionalInfo ) ;
558
+ }
559
+ }
560
+ }
561
+
562
+ #endregion
563
+
313
564
#region Execute Command Tests - << int ExecuteCommand(string sqlStatement) >>
314
565
315
566
[ TestMethod ]
0 commit comments