@@ -678,6 +678,92 @@ public void Test_MSSQL_ExecuteScalar_As_StringReturn_UnsupportedCommands()
678
678
679
679
#endregion
680
680
681
+ #region Execute Scalar Async Tests - << Task<string> ExecuteScalarAsync(string sqlStatement) >>
682
+
683
+ [ TestMethod ]
684
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
685
+ public async Task Test_MSSQL_ExecuteScalarAsync_As_StringReturn_Scalar_Queries ( )
686
+ {
687
+ var countOfRecords = Queries . MSSQLQueries . TestDB . ScalarQueries . Count_Of_Records ;
688
+ var max = Queries . MSSQLQueries . TestDB . ScalarQueries . Max ;
689
+ var min = Queries . MSSQLQueries . TestDB . ScalarQueries . Min ;
690
+ var sum = Queries . MSSQLQueries . TestDB . ScalarQueries . Sum ;
691
+ var avg = Queries . MSSQLQueries . TestDB . ScalarQueries . Avg ;
692
+ var singleValueSelect = Queries . MSSQLQueries . TestDB . ScalarQueries . Single_Value_Select ;
693
+
694
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
695
+
696
+ var count = await dbContext . ExecuteScalarAsync ( countOfRecords ) ;
697
+ Assert . AreEqual ( "12" , count ) ;
698
+ var maxValue = await dbContext . ExecuteScalarAsync ( max ) ;
699
+ Assert . AreEqual ( "10000.00" , maxValue ) ;
700
+ var minValue = await dbContext . ExecuteScalarAsync ( min ) ;
701
+ Assert . AreEqual ( "3000.00" , minValue ) ;
702
+ var sumValue = await dbContext . ExecuteScalarAsync ( sum ) ;
703
+ Assert . AreEqual ( "161000.00" , sumValue ) ;
704
+ var avgValue = await dbContext . ExecuteScalarAsync ( avg ) ;
705
+ Assert . AreEqual ( "6520.000000" , avgValue ) ;
706
+ var singleValue = await dbContext . ExecuteScalarAsync ( singleValueSelect ) ;
707
+ Assert . AreEqual ( "2" , singleValue ) ;
708
+ }
709
+
710
+ [ TestMethod ]
711
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
712
+ public async Task Test_MSSQL_ExecuteScalarAsync_As_StringReturn_DefaultValue ( )
713
+ {
714
+ var noValueReturned = Queries . MSSQLQueries . TestDB . ScalarQueries . No_Value_Returned ;
715
+ var dBNullValue = Queries . MSSQLQueries . TestDB . ScalarQueries . DB_Null_Value ;
716
+
717
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
718
+
719
+ var result = await dbContext . ExecuteScalarAsync ( noValueReturned ) ;
720
+ Assert . IsInstanceOfType < string > ( result ) ;
721
+ Assert . AreEqual ( "" , result ) ;
722
+
723
+ result = await dbContext . ExecuteScalarAsync ( dBNullValue ) ;
724
+ Assert . IsInstanceOfType < string > ( result ) ;
725
+ Assert . AreEqual ( string . Empty , result ) ;
726
+ }
727
+
728
+ [ TestMethod ]
729
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
730
+ public async Task Test_MSSQL_ExecuteScalarAsync_As_StringReturn_UnsupportedCommands ( )
731
+ {
732
+ var sqlStatements = new List < string >
733
+ {
734
+ Queries . MSSQLQueries . TestDB . DDL . Create_Table ,
735
+ Queries . MSSQLQueries . TestDB . DDL . Alter_Table ,
736
+ Queries . MSSQLQueries . TestDB . DDL . Comment_Table ,
737
+ Queries . MSSQLQueries . TestDB . DDL . Truncate_Table ,
738
+ Queries . MSSQLQueries . TestDB . DDL . Drop_Table ,
739
+
740
+ Queries . MSSQLQueries . TestDB . DML . InsertSql ,
741
+ Queries . MSSQLQueries . TestDB . DML . UpdateSql ,
742
+ Queries . MSSQLQueries . TestDB . DML . DeleteSql ,
743
+
744
+ Queries . MSSQLQueries . TestDB . DCL . GrantSql_Command_Table_User ,
745
+ Queries . MSSQLQueries . TestDB . DCL . RevokeSql_Command_Table_User
746
+ } ;
747
+
748
+ foreach ( var sqlStatement in sqlStatements )
749
+ {
750
+ try
751
+ {
752
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
753
+ await dbContext . ExecuteScalarAsync ( sqlStatement ) ;
754
+ Assert . Fail ( "No Exception" ) ;
755
+ }
756
+ catch ( QueryDBException ex )
757
+ {
758
+ Assert . AreEqual ( "Only SELECT queries are supported here." , ex . Message ) ;
759
+ Assert . AreEqual ( "UnsupportedCommand" , ex . ErrorType ) ;
760
+ Assert . AreEqual ( "'ExecuteScalar' only supports SELECT queries that have a scalar (single value) return." , ex . AdditionalInfo ) ;
761
+ }
762
+ }
763
+ }
764
+
765
+ #endregion
766
+
681
767
#region Execute Scalar Tests - << T ExecuteScalar<T>(string sqlStatement) >>
682
768
683
769
[ TestMethod ]
@@ -843,6 +929,171 @@ public void Test_MSSQL_ExecuteScalar_As_TypedReturn_UnsupportedCommands()
843
929
844
930
#endregion
845
931
932
+ #region Execute Scalar Async Tests - << Task<T> ExecuteScalarAsync<T>(string sqlStatement) >>
933
+
934
+ [ TestMethod ]
935
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
936
+ public async Task Test_MSSQL_ExecuteScalarAsync_As_TypedReturn_Scalar_Queries ( )
937
+ {
938
+ var countOfRecords = Queries . MSSQLQueries . TestDB . ScalarQueries . Count_Of_Records ;
939
+ var max = Queries . MSSQLQueries . TestDB . ScalarQueries . Max ;
940
+ var min = Queries . MSSQLQueries . TestDB . ScalarQueries . Min ;
941
+ var sum = Queries . MSSQLQueries . TestDB . ScalarQueries . Sum ;
942
+ var avg = Queries . MSSQLQueries . TestDB . ScalarQueries . Avg ;
943
+ var singleValueSelect = Queries . MSSQLQueries . TestDB . ScalarQueries . Single_Value_Select ;
944
+
945
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
946
+
947
+ var count = await dbContext . ExecuteScalarAsync < int > ( countOfRecords ) ;
948
+ Assert . AreEqual ( 12 , count ) ;
949
+ var maxValue = await dbContext . ExecuteScalarAsync < float > ( max ) ;
950
+ Assert . AreEqual ( 10000.00 , maxValue ) ;
951
+ var minValue = await dbContext . ExecuteScalarAsync < float > ( min ) ;
952
+ Assert . AreEqual ( 3000.00 , minValue ) ;
953
+ var sumValue = await dbContext . ExecuteScalarAsync < float > ( sum ) ;
954
+ Assert . AreEqual ( 161000.00 , sumValue ) ;
955
+ var avgValue = await dbContext . ExecuteScalarAsync < decimal > ( avg ) ;
956
+ Assert . AreEqual ( ( decimal ) 6520.000000 , avgValue ) ;
957
+ var singleValue = await dbContext . ExecuteScalarAsync < string > ( singleValueSelect ) ;
958
+ Assert . AreEqual ( "2" , singleValue ) ;
959
+ }
960
+
961
+ [ TestMethod ]
962
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
963
+ public async Task Test_MSSQL_ExecuteScalarAsync_As_TypedReturn_DefaultValue ( )
964
+ {
965
+ var dBNullValue = Queries . MSSQLQueries . TestDB . ScalarQueries . DB_Null_Value ;
966
+
967
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
968
+
969
+ dynamic result = await dbContext . ExecuteScalarAsync < int > ( dBNullValue ) ;
970
+ Assert . IsInstanceOfType < int > ( result ) ;
971
+ Assert . AreEqual ( default ( int ) , result ) ;
972
+
973
+ result = await dbContext . ExecuteScalarAsync < long > ( dBNullValue ) ;
974
+ Assert . IsInstanceOfType < long > ( result ) ;
975
+ Assert . AreEqual ( default ( long ) , result ) ;
976
+
977
+ result = await dbContext . ExecuteScalarAsync < short > ( dBNullValue ) ;
978
+ Assert . IsInstanceOfType < short > ( result ) ;
979
+ Assert . AreEqual ( default ( short ) , result ) ;
980
+
981
+ result = await dbContext . ExecuteScalarAsync < uint > ( dBNullValue ) ;
982
+ Assert . IsInstanceOfType < uint > ( result ) ;
983
+ Assert . AreEqual ( default ( uint ) , result ) ;
984
+
985
+ result = await dbContext . ExecuteScalarAsync < ulong > ( dBNullValue ) ;
986
+ Assert . IsInstanceOfType < ulong > ( result ) ;
987
+ Assert . AreEqual ( default ( ulong ) , result ) ;
988
+
989
+ result = await dbContext . ExecuteScalarAsync < ushort > ( dBNullValue ) ;
990
+ Assert . IsInstanceOfType < ushort > ( result ) ;
991
+ Assert . AreEqual ( default ( ushort ) , result ) ;
992
+
993
+ result = await dbContext . ExecuteScalarAsync < decimal > ( dBNullValue ) ;
994
+ Assert . IsInstanceOfType < decimal > ( result ) ;
995
+ Assert . AreEqual ( default ( decimal ) , result ) ;
996
+
997
+ result = await dbContext . ExecuteScalarAsync < double > ( dBNullValue ) ;
998
+ Assert . IsInstanceOfType < double > ( result ) ;
999
+ Assert . AreEqual ( default ( double ) , result ) ;
1000
+
1001
+ result = await dbContext . ExecuteScalarAsync < float > ( dBNullValue ) ;
1002
+ Assert . IsInstanceOfType < float > ( result ) ;
1003
+ Assert . AreEqual ( default ( float ) , result ) ;
1004
+
1005
+ result = await dbContext . ExecuteScalarAsync < byte > ( dBNullValue ) ;
1006
+ Assert . IsInstanceOfType < byte > ( result ) ;
1007
+ Assert . AreEqual ( default ( byte ) , result ) ;
1008
+
1009
+ result = await dbContext . ExecuteScalarAsync < bool > ( dBNullValue ) ;
1010
+ Assert . IsInstanceOfType < bool > ( result ) ;
1011
+ Assert . AreEqual ( default ( bool ) , result ) ;
1012
+
1013
+ result = await dbContext . ExecuteScalarAsync < DateTime > ( dBNullValue ) ;
1014
+ Assert . IsInstanceOfType < DateTime > ( result ) ;
1015
+ Assert . AreEqual ( default ( DateTime ) , result ) ;
1016
+
1017
+ result = await dbContext . ExecuteScalarAsync < Guid > ( dBNullValue ) ;
1018
+ Assert . IsInstanceOfType < Guid > ( result ) ;
1019
+ Assert . AreEqual ( default ( Guid ) , result ) ;
1020
+
1021
+ result = await dbContext . ExecuteScalarAsync < string > ( dBNullValue ) ;
1022
+ Assert . IsNull ( result ) ;
1023
+ Assert . AreEqual ( default ( string ) , result ) ;
1024
+
1025
+ result = await dbContext . ExecuteScalarAsync < int ? > ( dBNullValue ) ;
1026
+ Assert . IsNull ( result ) ;
1027
+ Assert . AreEqual ( default ( int ? ) , result ) ;
1028
+
1029
+ result = await dbContext . ExecuteScalarAsync < long ? > ( dBNullValue ) ;
1030
+ Assert . IsNull ( result ) ;
1031
+ Assert . AreEqual ( default ( long ? ) , result ) ;
1032
+
1033
+ result = await dbContext . ExecuteScalarAsync < short ? > ( dBNullValue ) ;
1034
+ Assert . IsNull ( result ) ;
1035
+ Assert . AreEqual ( default ( short ? ) , result ) ;
1036
+
1037
+ result = await dbContext . ExecuteScalarAsync < decimal ? > ( dBNullValue ) ;
1038
+ Assert . IsNull ( result ) ;
1039
+ Assert . AreEqual ( default ( decimal ? ) , result ) ;
1040
+
1041
+ result = await dbContext . ExecuteScalarAsync < double ? > ( dBNullValue ) ;
1042
+ Assert . IsNull ( result ) ;
1043
+ Assert . AreEqual ( default ( double ? ) , result ) ;
1044
+
1045
+ result = await dbContext . ExecuteScalarAsync < float ? > ( dBNullValue ) ;
1046
+ Assert . IsNull ( result ) ;
1047
+ Assert . AreEqual ( default ( float ? ) , result ) ;
1048
+
1049
+ result = await dbContext . ExecuteScalarAsync < bool ? > ( dBNullValue ) ;
1050
+ Assert . IsNull ( result ) ;
1051
+ Assert . AreEqual ( default ( bool ? ) , result ) ;
1052
+
1053
+ result = await dbContext . ExecuteScalarAsync < DateTime ? > ( dBNullValue ) ;
1054
+ Assert . IsNull ( result ) ;
1055
+ Assert . AreEqual ( default ( DateTime ? ) , result ) ;
1056
+ }
1057
+
1058
+ [ TestMethod ]
1059
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
1060
+ public async Task Test_MSSQL_ExecuteScalarAsync_As_TypedReturn_UnsupportedCommands ( )
1061
+ {
1062
+ var sqlStatements = new List < string >
1063
+ {
1064
+ Queries . MSSQLQueries . TestDB . DDL . Create_Table ,
1065
+ Queries . MSSQLQueries . TestDB . DDL . Alter_Table ,
1066
+ Queries . MSSQLQueries . TestDB . DDL . Comment_Table ,
1067
+ Queries . MSSQLQueries . TestDB . DDL . Truncate_Table ,
1068
+ Queries . MSSQLQueries . TestDB . DDL . Drop_Table ,
1069
+
1070
+ Queries . MSSQLQueries . TestDB . DML . InsertSql ,
1071
+ Queries . MSSQLQueries . TestDB . DML . UpdateSql ,
1072
+ Queries . MSSQLQueries . TestDB . DML . DeleteSql ,
1073
+
1074
+ Queries . MSSQLQueries . TestDB . DCL . GrantSql_Command_Table_User ,
1075
+ Queries . MSSQLQueries . TestDB . DCL . RevokeSql_Command_Table_User
1076
+ } ;
1077
+
1078
+ foreach ( var sqlStatement in sqlStatements )
1079
+ {
1080
+ try
1081
+ {
1082
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
1083
+ await dbContext . ExecuteScalarAsync < string > ( sqlStatement ) ;
1084
+ Assert . Fail ( "No Exception" ) ;
1085
+ }
1086
+ catch ( QueryDBException ex )
1087
+ {
1088
+ Assert . AreEqual ( "Only SELECT queries are supported here." , ex . Message ) ;
1089
+ Assert . AreEqual ( "UnsupportedCommand" , ex . ErrorType ) ;
1090
+ Assert . AreEqual ( "'ExecuteScalar' only supports SELECT queries that have a scalar (single value) return." , ex . AdditionalInfo ) ;
1091
+ }
1092
+ }
1093
+ }
1094
+
1095
+ #endregion
1096
+
846
1097
#region Execute Command Tests - << int ExecuteCommand(string sqlStatement) >>
847
1098
848
1099
[ TestMethod ]
0 commit comments