@@ -147,6 +147,71 @@ public async Task StandardAdoNet_DateTimeParameter_ShouldWork()
147147 Assert . Equal ( now , ( DateTime ) result ! ) ;
148148 }
149149
150+ [ Fact ]
151+ public async Task StandardAdoNet_AllDataTypes_ShouldWork ( )
152+ {
153+ if ( ShouldSkip ) return ;
154+
155+ using var conn = new MsSqlConnection ( ConnectionString ) ;
156+ await conn . OpenAsync ( ) ;
157+
158+ using var cmd = conn . CreateCommand ( ) ;
159+ cmd . CommandText = @"
160+ SELECT
161+ @p_bool AS v_bool,
162+ @p_byte AS v_byte,
163+ @p_short AS v_short,
164+ @p_int AS v_int,
165+ @p_long AS v_long,
166+ @p_float AS v_float,
167+ @p_double AS v_double,
168+ @p_decimal AS v_decimal,
169+ @p_string AS v_string,
170+ @p_guid AS v_guid,
171+ @p_date AS v_date,
172+ @p_bin AS v_bin,
173+ @p_null AS v_null" ;
174+
175+ var guid = Guid . NewGuid ( ) ;
176+ var date = new DateTime ( 2023 , 12 , 25 , 10 , 30 , 0 ) ;
177+ var bin = new byte [ ] { 0xDE , 0xAD , 0xBE , 0xEF } ;
178+
179+ cmd . Parameters . AddWithValue ( "p_bool" , true ) ;
180+ cmd . Parameters . AddWithValue ( "p_byte" , ( byte ) 255 ) ;
181+ cmd . Parameters . AddWithValue ( "p_short" , ( short ) 32767 ) ;
182+ cmd . Parameters . AddWithValue ( "p_int" , 123456789 ) ;
183+ cmd . Parameters . AddWithValue ( "p_long" , 9876543210L ) ;
184+ cmd . Parameters . AddWithValue ( "p_float" , 1.23f ) ;
185+ cmd . Parameters . AddWithValue ( "p_double" , 4.5678 ) ;
186+ cmd . Parameters . AddWithValue ( "p_decimal" , 12345.6789m ) ;
187+ cmd . Parameters . AddWithValue ( "p_string" , "Hello Comprehensive Test" ) ;
188+ cmd . Parameters . AddWithValue ( "p_guid" , guid ) ;
189+ cmd . Parameters . AddWithValue ( "p_date" , date ) ;
190+ cmd . Parameters . AddWithValue ( "p_bin" , bin ) ;
191+ cmd . Parameters . AddWithValue ( "p_null" , DBNull . Value ) ;
192+
193+ using var reader = await cmd . ExecuteReaderAsync ( ) ;
194+ Assert . True ( await reader . ReadAsync ( ) ) ;
195+
196+ Assert . True ( reader . GetBoolean ( 0 ) ) ;
197+ Assert . Equal ( 255 , reader . GetInt32 ( 1 ) ) ;
198+ Assert . Equal ( ( short ) 32767 , reader . GetInt16 ( 2 ) ) ;
199+ Assert . Equal ( 123456789 , reader . GetInt32 ( 3 ) ) ;
200+ Assert . Equal ( 9876543210L , reader . GetInt64 ( 4 ) ) ;
201+ Assert . Equal ( 1.23f , reader . GetFloat ( 5 ) ) ;
202+ Assert . Equal ( 4.5678 , reader . GetDouble ( 6 ) ) ;
203+ Assert . Equal ( 12345.6789m , reader . GetDecimal ( 7 ) ) ;
204+ Assert . Equal ( "Hello Comprehensive Test" , reader . GetString ( 8 ) ) ;
205+ Assert . Equal ( guid , reader . GetGuid ( 9 ) ) ;
206+ Assert . Equal ( date , reader . GetDateTime ( 10 ) ) ;
207+
208+ var actualBin = new byte [ 4 ] ;
209+ reader . GetBytes ( 11 , 0 , actualBin , 0 , 4 ) ;
210+ Assert . Equal ( bin , actualBin ) ;
211+
212+ Assert . True ( await reader . IsDBNullAsync ( 12 ) ) ;
213+ }
214+
150215 [ Fact ]
151216 public async Task StandardAdoNet_Transactions_ShouldWork ( )
152217 {
0 commit comments