@@ -17,8 +17,8 @@ public static class DataReaderStreamsTest
17
17
{
18
18
[ SkipOnTargetFramework ( TargetFrameworkMonikers . NetFramework ) ]
19
19
[ ConditionalTheory ( typeof ( DataTestUtility ) , nameof ( DataTestUtility . AreConnStringsSetup ) ) ]
20
- [ MemberData ( nameof ( GetCommandBehaviours ) ) ]
21
- public static async Task GetFieldValueAsync_OfStream ( CommandBehavior behavior )
20
+ [ MemberData ( nameof ( GetCommandBehavioursAndIsAsync ) ) ]
21
+ public static async Task GetFieldValueAsync_OfStream ( CommandBehavior behavior , bool isExecuteAsync )
22
22
{
23
23
const int PacketSize = 512 ; // force minimun packet size so that the test data spans multiple packets to test sequential access spanning
24
24
string connectionString = SetConnectionStringPacketSize ( DataTestUtility . TCPConnectionString , PacketSize ) ;
@@ -31,9 +31,9 @@ public static async Task GetFieldValueAsync_OfStream(CommandBehavior behavior)
31
31
using ( SqlCommand command = new SqlCommand ( query , connection ) )
32
32
{
33
33
connection . Open ( ) ;
34
- using ( SqlDataReader reader = command . ExecuteReader ( behavior ) )
34
+ using ( SqlDataReader reader = await ExecuteReader ( command , behavior , isExecuteAsync ) )
35
35
{
36
- if ( reader . Read ( ) )
36
+ if ( await Read ( reader , isExecuteAsync ) )
37
37
{
38
38
using ( MemoryStream buffer = new MemoryStream ( originalData . Length ) )
39
39
using ( Stream stream = await reader . GetFieldValueAsync < Stream > ( 1 ) )
@@ -54,8 +54,8 @@ public static async Task GetFieldValueAsync_OfStream(CommandBehavior behavior)
54
54
55
55
[ SkipOnTargetFramework ( TargetFrameworkMonikers . NetFramework ) ]
56
56
[ ConditionalTheory ( typeof ( DataTestUtility ) , nameof ( DataTestUtility . AreConnStringsSetup ) ) ]
57
- [ MemberData ( nameof ( GetCommandBehaviours ) ) ]
58
- public static async Task GetFieldValueAsync_OfXmlReader ( CommandBehavior behavior )
57
+ [ MemberData ( nameof ( GetCommandBehavioursAndIsAsync ) ) ]
58
+ public static async Task GetFieldValueAsync_OfXmlReader ( CommandBehavior behavior , bool isExecuteAsync )
59
59
{
60
60
const int PacketSize = 512 ; // force minimun packet size so that the test data spans multiple packets to test sequential access spanning
61
61
string connectionString = SetConnectionStringPacketSize ( DataTestUtility . TCPConnectionString , PacketSize ) ;
@@ -68,9 +68,9 @@ public static async Task GetFieldValueAsync_OfXmlReader(CommandBehavior behavior
68
68
using ( SqlCommand command = new SqlCommand ( query , connection ) )
69
69
{
70
70
connection . Open ( ) ;
71
- using ( SqlDataReader reader = command . ExecuteReader ( behavior ) )
71
+ using ( SqlDataReader reader = await ExecuteReader ( command , behavior , isExecuteAsync ) )
72
72
{
73
- if ( reader . Read ( ) )
73
+ if ( await Read ( reader , isExecuteAsync ) )
74
74
{
75
75
using ( XmlReader xmlReader = await reader . GetFieldValueAsync < XmlReader > ( 1 ) )
76
76
{
@@ -89,8 +89,8 @@ public static async Task GetFieldValueAsync_OfXmlReader(CommandBehavior behavior
89
89
90
90
[ SkipOnTargetFramework ( TargetFrameworkMonikers . NetFramework ) ]
91
91
[ ConditionalTheory ( typeof ( DataTestUtility ) , nameof ( DataTestUtility . AreConnStringsSetup ) ) ]
92
- [ MemberData ( nameof ( GetCommandBehaviours ) ) ]
93
- public static async Task GetFieldValueAsync_OfTextReader ( CommandBehavior behavior )
92
+ [ MemberData ( nameof ( GetCommandBehavioursAndIsAsync ) ) ]
93
+ public static async Task GetFieldValueAsync_OfTextReader ( CommandBehavior behavior , bool isExecuteAsync )
94
94
{
95
95
const int PacketSize = 512 ; // force minimun packet size so that the test data spans multiple packets to test sequential access spanning
96
96
string connectionString = SetConnectionStringPacketSize ( DataTestUtility . TCPConnectionString , PacketSize ) ;
@@ -103,9 +103,9 @@ public static async Task GetFieldValueAsync_OfTextReader(CommandBehavior behavio
103
103
using ( SqlCommand command = new SqlCommand ( query , connection ) )
104
104
{
105
105
connection . Open ( ) ;
106
- using ( SqlDataReader reader = command . ExecuteReader ( behavior ) )
106
+ using ( SqlDataReader reader = await ExecuteReader ( command , behavior , isExecuteAsync ) )
107
107
{
108
- if ( reader . Read ( ) )
108
+ if ( await Read ( reader , isExecuteAsync ) )
109
109
{
110
110
using ( TextReader textReader = await reader . GetFieldValueAsync < TextReader > ( 1 ) )
111
111
{
@@ -124,8 +124,8 @@ public static async Task GetFieldValueAsync_OfTextReader(CommandBehavior behavio
124
124
125
125
[ SkipOnTargetFramework ( TargetFrameworkMonikers . NetFramework ) ]
126
126
[ ConditionalTheory ( typeof ( DataTestUtility ) , nameof ( DataTestUtility . AreConnStringsSetup ) ) ]
127
- [ MemberData ( nameof ( GetCommandBehaviours ) ) ]
128
- public static void GetFieldValue_OfXmlReader ( CommandBehavior behavior )
127
+ [ MemberData ( nameof ( GetCommandBehavioursAndIsAsync ) ) ]
128
+ public static async void GetFieldValue_OfXmlReader ( CommandBehavior behavior , bool isExecuteAsync )
129
129
{
130
130
const int PacketSize = 512 ; // force minimun packet size so that the test data spans multiple packets to test sequential access spanning
131
131
string connectionString = SetConnectionStringPacketSize ( DataTestUtility . TCPConnectionString , PacketSize ) ;
@@ -138,9 +138,9 @@ public static void GetFieldValue_OfXmlReader(CommandBehavior behavior)
138
138
using ( SqlCommand command = new SqlCommand ( query , connection ) )
139
139
{
140
140
connection . Open ( ) ;
141
- using ( SqlDataReader reader = command . ExecuteReader ( behavior ) )
141
+ using ( SqlDataReader reader = await ExecuteReader ( command , behavior , isExecuteAsync ) )
142
142
{
143
- if ( reader . Read ( ) )
143
+ if ( await Read ( reader , isExecuteAsync ) )
144
144
{
145
145
using ( XmlReader xmlReader = reader . GetFieldValue < XmlReader > ( 1 ) )
146
146
{
@@ -159,8 +159,8 @@ public static void GetFieldValue_OfXmlReader(CommandBehavior behavior)
159
159
160
160
[ SkipOnTargetFramework ( TargetFrameworkMonikers . NetFramework ) ]
161
161
[ ConditionalTheory ( typeof ( DataTestUtility ) , nameof ( DataTestUtility . AreConnStringsSetup ) ) ]
162
- [ MemberData ( nameof ( GetCommandBehaviours ) ) ]
163
- public static void GetFieldValue_OfStream ( CommandBehavior behavior )
162
+ [ MemberData ( nameof ( GetCommandBehavioursAndIsAsync ) ) ]
163
+ public static async void GetFieldValue_OfStream ( CommandBehavior behavior , bool isExecuteAsync )
164
164
{
165
165
const int PacketSize = 512 ; // force minimun packet size so that the test data spans multiple packets to test sequential access spanning
166
166
string connectionString = SetConnectionStringPacketSize ( DataTestUtility . TCPConnectionString , PacketSize ) ;
@@ -173,9 +173,9 @@ public static void GetFieldValue_OfStream(CommandBehavior behavior)
173
173
using ( SqlCommand command = new SqlCommand ( query , connection ) )
174
174
{
175
175
connection . Open ( ) ;
176
- using ( SqlDataReader reader = command . ExecuteReader ( behavior ) )
176
+ using ( SqlDataReader reader = await ExecuteReader ( command , behavior , isExecuteAsync ) )
177
177
{
178
- if ( reader . Read ( ) )
178
+ if ( await Read ( reader , isExecuteAsync ) )
179
179
{
180
180
using ( Stream stream = reader . GetFieldValue < Stream > ( 1 ) )
181
181
{
@@ -193,8 +193,8 @@ public static void GetFieldValue_OfStream(CommandBehavior behavior)
193
193
194
194
[ SkipOnTargetFramework ( TargetFrameworkMonikers . NetFramework ) ]
195
195
[ ConditionalTheory ( typeof ( DataTestUtility ) , nameof ( DataTestUtility . AreConnStringsSetup ) ) ]
196
- [ MemberData ( nameof ( GetCommandBehaviours ) ) ]
197
- public static void GetFieldValue_OfTextReader ( CommandBehavior behavior )
196
+ [ MemberData ( nameof ( GetCommandBehavioursAndIsAsync ) ) ]
197
+ public static async void GetFieldValue_OfTextReader ( CommandBehavior behavior , bool isExecuteAsync )
198
198
{
199
199
const int PacketSize = 512 ; // force minimun packet size so that the test data spans multiple packets to test sequential access spanning
200
200
string connectionString = SetConnectionStringPacketSize ( DataTestUtility . TCPConnectionString , PacketSize ) ;
@@ -207,9 +207,9 @@ public static void GetFieldValue_OfTextReader(CommandBehavior behavior)
207
207
using ( SqlCommand command = new SqlCommand ( query , connection ) )
208
208
{
209
209
connection . Open ( ) ;
210
- using ( SqlDataReader reader = command . ExecuteReader ( behavior ) )
210
+ using ( SqlDataReader reader = await ExecuteReader ( command , behavior , isExecuteAsync ) )
211
211
{
212
- if ( reader . Read ( ) )
212
+ if ( await Read ( reader , isExecuteAsync ) )
213
213
{
214
214
using ( TextReader textReader = reader . GetFieldValue < TextReader > ( 1 ) )
215
215
{
@@ -228,8 +228,8 @@ public static void GetFieldValue_OfTextReader(CommandBehavior behavior)
228
228
229
229
[ SkipOnTargetFramework ( TargetFrameworkMonikers . NetFramework ) ]
230
230
[ ConditionalTheory ( typeof ( DataTestUtility ) , nameof ( DataTestUtility . AreConnStringsSetup ) ) ]
231
- [ MemberData ( nameof ( GetCommandBehaviours ) ) ]
232
- public static void GetStream ( CommandBehavior behavior )
231
+ [ MemberData ( nameof ( GetCommandBehavioursAndIsAsync ) ) ]
232
+ public static async void GetStream ( CommandBehavior behavior , bool isExecuteAsync )
233
233
{
234
234
const int PacketSize = 512 ; // force minimun packet size so that the test data spans multiple packets to test sequential access spanning
235
235
string connectionString = SetConnectionStringPacketSize ( DataTestUtility . TCPConnectionString , PacketSize ) ;
@@ -242,9 +242,9 @@ public static void GetStream(CommandBehavior behavior)
242
242
using ( SqlCommand command = new SqlCommand ( query , connection ) )
243
243
{
244
244
connection . Open ( ) ;
245
- using ( SqlDataReader reader = command . ExecuteReader ( behavior ) )
245
+ using ( SqlDataReader reader = await ExecuteReader ( command , behavior , isExecuteAsync ) )
246
246
{
247
- if ( reader . Read ( ) )
247
+ if ( await Read ( reader , isExecuteAsync ) )
248
248
{
249
249
using ( MemoryStream buffer = new MemoryStream ( originalData . Length ) )
250
250
using ( Stream stream = reader . GetStream ( 1 ) )
@@ -265,8 +265,8 @@ public static void GetStream(CommandBehavior behavior)
265
265
266
266
[ SkipOnTargetFramework ( TargetFrameworkMonikers . NetFramework ) ]
267
267
[ ConditionalTheory ( typeof ( DataTestUtility ) , nameof ( DataTestUtility . AreConnStringsSetup ) ) ]
268
- [ MemberData ( nameof ( GetCommandBehaviours ) ) ]
269
- public static void GetXmlReader ( CommandBehavior behavior )
268
+ [ MemberData ( nameof ( GetCommandBehavioursAndIsAsync ) ) ]
269
+ public static async void GetXmlReader ( CommandBehavior behavior , bool isExecuteAsync )
270
270
{
271
271
const int PacketSize = 512 ; // force minimun packet size so that the test data spans multiple packets to test sequential access spanning
272
272
string connectionString = SetConnectionStringPacketSize ( DataTestUtility . TCPConnectionString , PacketSize ) ;
@@ -279,9 +279,9 @@ public static void GetXmlReader(CommandBehavior behavior)
279
279
using ( SqlCommand command = new SqlCommand ( query , connection ) )
280
280
{
281
281
connection . Open ( ) ;
282
- using ( SqlDataReader reader = command . ExecuteReader ( behavior ) )
282
+ using ( SqlDataReader reader = await ExecuteReader ( command , behavior , isExecuteAsync ) )
283
283
{
284
- if ( reader . Read ( ) )
284
+ if ( await Read ( reader , isExecuteAsync ) )
285
285
{
286
286
using ( XmlReader xmlReader = reader . GetXmlReader ( 1 ) )
287
287
{
@@ -300,8 +300,8 @@ public static void GetXmlReader(CommandBehavior behavior)
300
300
301
301
[ SkipOnTargetFramework ( TargetFrameworkMonikers . NetFramework ) ]
302
302
[ ConditionalTheory ( typeof ( DataTestUtility ) , nameof ( DataTestUtility . AreConnStringsSetup ) ) ]
303
- [ MemberData ( nameof ( GetCommandBehaviours ) ) ]
304
- public static void GetTextReader ( CommandBehavior behavior )
303
+ [ MemberData ( nameof ( GetCommandBehavioursAndIsAsync ) ) ]
304
+ public static async void GetTextReader ( CommandBehavior behavior , bool isExecuteAsync )
305
305
{
306
306
const int PacketSize = 512 ; // force minimun packet size so that the test data spans multiple packets to test sequential access spanning
307
307
string connectionString = SetConnectionStringPacketSize ( DataTestUtility . TCPConnectionString , PacketSize ) ;
@@ -314,9 +314,9 @@ public static void GetTextReader(CommandBehavior behavior)
314
314
using ( SqlCommand command = new SqlCommand ( query , connection ) )
315
315
{
316
316
connection . Open ( ) ;
317
- using ( SqlDataReader reader = command . ExecuteReader ( behavior ) )
317
+ using ( SqlDataReader reader = await ExecuteReader ( command , behavior , isExecuteAsync ) )
318
318
{
319
- if ( reader . Read ( ) )
319
+ if ( await Read ( reader , isExecuteAsync ) )
320
320
{
321
321
using ( TextReader textReader = reader . GetTextReader ( 1 ) )
322
322
{
@@ -407,7 +407,7 @@ public static void NullStreamProperties(CommandBehavior behavior, AccessorType a
407
407
408
408
using ( TextReader textReader = GetValue < TextReader > ( reader , 1 , accessorType ) )
409
409
{
410
- Assert . Equal ( textReader . ReadToEnd ( ) , string . Empty ) ;
410
+ Assert . Equal ( textReader . ReadToEnd ( ) , string . Empty ) ;
411
411
}
412
412
413
413
using ( Stream stream = GetValue < Stream > ( reader , 2 , accessorType ) )
@@ -420,6 +420,12 @@ public static void NullStreamProperties(CommandBehavior behavior, AccessorType a
420
420
421
421
}
422
422
423
+ private static async Task < SqlDataReader > ExecuteReader ( SqlCommand command , CommandBehavior behavior , bool isExecuteAsync )
424
+ => isExecuteAsync ? await command . ExecuteReaderAsync ( behavior ) : command . ExecuteReader ( behavior ) ;
425
+
426
+ private static async Task < bool > Read ( SqlDataReader reader , bool isExecuteAsync )
427
+ => isExecuteAsync ? await reader . ReadAsync ( ) : reader . Read ( ) ;
428
+
423
429
public static IEnumerable < object [ ] > GetCommandBehaviourAndAccessorTypes ( )
424
430
{
425
431
foreach ( CommandBehavior behavior in new CommandBehavior [ ] { CommandBehavior . Default , CommandBehavior . SequentialAccess } )
@@ -431,10 +437,13 @@ public static IEnumerable<object[]> GetCommandBehaviourAndAccessorTypes()
431
437
}
432
438
}
433
439
434
- public static IEnumerable < object [ ] > GetCommandBehaviours ( )
440
+ public static IEnumerable < object [ ] > GetCommandBehavioursAndIsAsync ( )
435
441
{
436
- yield return new object [ ] { CommandBehavior . Default } ;
437
- yield return new object [ ] { CommandBehavior . SequentialAccess } ;
442
+ foreach ( CommandBehavior behavior in new CommandBehavior [ ] { CommandBehavior . Default , CommandBehavior . SequentialAccess } )
443
+ {
444
+ yield return new object [ ] { behavior , true } ;
445
+ yield return new object [ ] { behavior , false } ;
446
+ }
438
447
}
439
448
440
449
public enum AccessorType
0 commit comments