@@ -159,17 +159,31 @@ private void TestClose(PartialStream stream)
159159 Assert . Throws < ObjectDisposedException > ( ( ) => stream . ReadByte ( ) ) ;
160160 Assert . Throws < ObjectDisposedException > ( ( ) => stream . Read ( _Array . Empty < byte > ( ) , 0 , 0 ) ) ;
161161 Assert . Throws < ObjectDisposedException > ( ( ) => stream . ReadAsync ( _Array . Empty < byte > ( ) , 0 , 0 ) ) ;
162+ #if SYSTEM_IO_STREAM_READASYNC_MEMORY_OF_BYTE
163+ Assert . Throws < ObjectDisposedException > ( ( ) => stream . ReadAsync ( Memory < byte > . Empty ) ) ;
164+ #endif
162165 Assert . Throws < ObjectDisposedException > ( ( ) => stream . WriteByte ( 0x00 ) ) ;
163166 Assert . Throws < ObjectDisposedException > ( ( ) => stream . Write ( _Array . Empty < byte > ( ) , 0 , 0 ) ) ;
164167 //Assert.Throws<ObjectDisposedException>(() => stream.WriteAsync(_Array.Empty<byte>(), 0, 0));
165168
166169 stream . Dispose ( ) ;
167170 }
168171
169- [ Test ] public Task TestRead_LengthSpecified ( ) => TestRead_LengthSpecified ( runAsync : false ) ;
170- [ Test ] public Task TestReadAsync_LengthSpecified ( ) => TestRead_LengthSpecified ( runAsync : true ) ;
172+ enum ReadMethod {
173+ Read ,
174+ ReadAsync ,
175+ #if SYSTEM_IO_STREAM_READASYNC_MEMORY_OF_BYTE
176+ ReadAsyncToMemory
177+ #endif
178+ }
179+
180+ [ Test ] public Task TestRead_LengthSpecified ( ) => TestRead_LengthSpecified ( ReadMethod . Read ) ;
181+ [ Test ] public Task TestReadAsync_LengthSpecified ( ) => TestRead_LengthSpecified ( ReadMethod . ReadAsync ) ;
182+ #if SYSTEM_IO_STREAM_READASYNC_MEMORY_OF_BYTE
183+ [ Test ] public Task TestReadAsync_ToMemory_LengthSpecified ( ) => TestRead_LengthSpecified ( ReadMethod . ReadAsyncToMemory ) ;
184+ #endif
171185
172- private async Task TestRead_LengthSpecified ( bool runAsync )
186+ private async Task TestRead_LengthSpecified ( ReadMethod readMethod )
173187 {
174188 var inner = new MemoryStream ( new byte [ ] { 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 } ) ;
175189 var stream = new PartialStream ( inner , 2 , 4 ) ;
@@ -180,15 +194,19 @@ private async Task TestRead_LengthSpecified(bool runAsync)
180194 Assert . AreEqual ( 4 , stream . Length ) ;
181195 Assert . AreEqual ( 0 , stream . Position ) ;
182196
183- var buffer = new byte [ 2 ] ;
197+ var buffer = new byte [ 3 ] ;
184198
185199 Assert . AreEqual (
186200 2 ,
187- runAsync
188- ? await stream . ReadAsync ( buffer , 0 , 2 )
189- : stream . Read ( buffer , 0 , 2 )
201+ readMethod switch {
202+ ReadMethod . ReadAsync => await stream . ReadAsync ( buffer , 0 , 2 ) ,
203+ #if SYSTEM_IO_STREAM_READASYNC_MEMORY_OF_BYTE
204+ ReadMethod . ReadAsyncToMemory => await stream. ReadAsync ( buffer . AsMemory ( 0 , 2 ) ) ,
205+ #endif
206+ _ => stream. Read ( buffer , 0 , 2 ) ,
207+ }
190208 ) ;
191- Assert . AreEqual ( new byte [ ] { 0x02 , 0x03 } , buffer ) ;
209+ Assert . AreEqual ( new byte [ ] { 0x02 , 0x03 , 0x00 } , buffer ) ;
192210
193211 Assert . AreEqual ( 4 , stream . InnerStream . Position ) ;
194212 Assert . AreEqual ( 2 , stream . Position ) ;
@@ -197,28 +215,39 @@ private async Task TestRead_LengthSpecified(bool runAsync)
197215
198216 Assert . AreEqual (
199217 1 ,
200- runAsync
201- ? await stream . ReadAsync ( buffer , 0 , 2 )
202- : stream . Read ( buffer , 0 , 2 )
218+ readMethod switch {
219+ ReadMethod . ReadAsync => await stream . ReadAsync ( buffer , 0 , 2 ) ,
220+ #if SYSTEM_IO_STREAM_READASYNC_MEMORY_OF_BYTE
221+ ReadMethod . ReadAsyncToMemory => await stream. ReadAsync ( buffer . AsMemory ( 0 , 2 ) ) ,
222+ #endif
223+ _ => stream. Read ( buffer , 0 , 2 ) ,
224+ }
203225 ) ;
204- Assert . AreEqual ( new byte [ ] { 0x05 , 0x03 } , buffer ) ;
226+ Assert . AreEqual ( new byte [ ] { 0x05 , 0x03 , 0x00 } , buffer ) ;
205227
206228 Assert . AreEqual ( 6 , stream . InnerStream . Position ) ;
207229 Assert . AreEqual ( 4 , stream . Position ) ;
208230
209231 Assert . AreEqual (
210232 0 ,
211- runAsync
212- ? await stream . ReadAsync ( buffer , 0 , 3 )
213- : stream . Read ( buffer , 0 , 3 )
233+ readMethod switch {
234+ ReadMethod . ReadAsync => await stream . ReadAsync ( buffer , 0 , 3 ) ,
235+ #if SYSTEM_IO_STREAM_READASYNC_MEMORY_OF_BYTE
236+ ReadMethod . ReadAsyncToMemory => await stream. ReadAsync ( buffer . AsMemory ( 0 , 3 ) ) ,
237+ #endif
238+ _ => stream. Read ( buffer , 0 , 3 ) ,
239+ }
214240 ) ;
215241 Assert . AreEqual ( - 1 , stream . ReadByte ( ) ) ;
216242 }
217243
218- [ Test ] public Task TestRead_AfterEndOfInnerStream ( ) => TestRead_AfterEndOfInnerStream ( runAsync : false ) ;
219- [ Test ] public Task TestReadAsync_AfterEndOfInnerStream ( ) => TestRead_AfterEndOfInnerStream ( runAsync : true ) ;
244+ [ Test ] public Task TestRead_AfterEndOfInnerStream ( ) => TestRead_AfterEndOfInnerStream ( ReadMethod . Read ) ;
245+ [ Test ] public Task TestReadAsync_AfterEndOfInnerStream ( ) => TestRead_AfterEndOfInnerStream ( ReadMethod . ReadAsync ) ;
246+ #if SYSTEM_IO_STREAM_READASYNC_MEMORY_OF_BYTE
247+ [ Test ] public Task TestReadAsync_ToMemory_AfterEndOfInnerStream ( ) => TestRead_AfterEndOfInnerStream ( ReadMethod . ReadAsyncToMemory ) ;
248+ #endif
220249
221- private async Task TestRead_AfterEndOfInnerStream ( bool runAsync )
250+ private async Task TestRead_AfterEndOfInnerStream ( ReadMethod readMethod )
222251 {
223252 var inner = new MemoryStream ( new byte [ ] { 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 } ) ;
224253 var stream = new PartialStream ( inner , inner . Length , 8 ) ;
@@ -230,17 +259,24 @@ private async Task TestRead_AfterEndOfInnerStream(bool runAsync)
230259
231260 Assert . AreEqual (
232261 0 ,
233- runAsync
234- ? await stream . ReadAsync ( buffer , 0 , 2 )
235- : stream . Read ( buffer , 0 , 2 )
262+ readMethod switch {
263+ ReadMethod . ReadAsync => await stream . ReadAsync ( buffer , 0 , 2 ) ,
264+ #if SYSTEM_IO_STREAM_READASYNC_MEMORY_OF_BYTE
265+ ReadMethod . ReadAsyncToMemory => await stream. ReadAsync ( buffer . AsMemory ( 0 , 2 ) ) ,
266+ #endif
267+ _ => stream. Read ( buffer , 0 , 2 ) ,
268+ }
236269 ) ;
237270 Assert . AreEqual ( 0 , stream . Position ) ;
238271 }
239272
240- [ Test ] public Task TestRead_LengthNotSpecified ( ) => TestRead_LengthNotSpecified ( runAsync : false ) ;
241- [ Test ] public Task TestReadAsync_LengthNotSpecified ( ) => TestRead_LengthNotSpecified ( runAsync : true ) ;
273+ [ Test ] public Task TestRead_LengthNotSpecified ( ) => TestRead_LengthNotSpecified ( ReadMethod . Read ) ;
274+ [ Test ] public Task TestReadAsync_LengthNotSpecified ( ) => TestRead_LengthNotSpecified ( ReadMethod . ReadAsync ) ;
275+ #if SYSTEM_IO_STREAM_READASYNC_MEMORY_OF_BYTE
276+ [ Test ] public Task TestReadAsync_ToMemory_LengthNotSpecified ( ) => TestRead_LengthNotSpecified ( ReadMethod . ReadAsyncToMemory ) ;
277+ #endif
242278
243- private async Task TestRead_LengthNotSpecified ( bool runAsync )
279+ private async Task TestRead_LengthNotSpecified ( ReadMethod readMethod )
244280 {
245281 var inner = new MemoryStream ( new byte [ ] { 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 } ) ;
246282 var stream = new PartialStream ( inner , 2 ) ;
@@ -255,9 +291,13 @@ private async Task TestRead_LengthNotSpecified(bool runAsync)
255291
256292 Assert . AreEqual (
257293 3 ,
258- runAsync
259- ? await stream . ReadAsync ( buffer , 0 , 3 )
260- : stream . Read ( buffer , 0 , 3 )
294+ readMethod switch {
295+ ReadMethod . ReadAsync => await stream . ReadAsync ( buffer , 0 , 3 ) ,
296+ #if SYSTEM_IO_STREAM_READASYNC_MEMORY_OF_BYTE
297+ ReadMethod . ReadAsyncToMemory => await stream. ReadAsync ( buffer . AsMemory ( 0 , 3 ) ) ,
298+ #endif
299+ _ => stream. Read ( buffer , 0 , 3 ) ,
300+ }
261301 ) ;
262302 Assert . AreEqual ( new byte [ ] { 0x02 , 0x03 , 0x04 } , buffer ) ;
263303
@@ -271,9 +311,13 @@ private async Task TestRead_LengthNotSpecified(bool runAsync)
271311
272312 Assert . AreEqual (
273313 2 ,
274- runAsync
275- ? await stream . ReadAsync ( buffer , 0 , 3 )
276- : stream . Read ( buffer , 0 , 3 )
314+ readMethod switch {
315+ ReadMethod . ReadAsync => await stream . ReadAsync ( buffer , 0 , 3 ) ,
316+ #if SYSTEM_IO_STREAM_READASYNC_MEMORY_OF_BYTE
317+ ReadMethod . ReadAsyncToMemory => await stream. ReadAsync ( buffer . AsMemory ( 0 , 3 ) ) ,
318+ #endif
319+ _ => stream. Read ( buffer , 0 , 3 ) ,
320+ }
277321 ) ;
278322 Assert . AreEqual ( new byte [ ] { 0x06 , 0x07 , 0x04 } , buffer ) ;
279323
@@ -282,9 +326,13 @@ private async Task TestRead_LengthNotSpecified(bool runAsync)
282326
283327 Assert . AreEqual (
284328 0 ,
285- runAsync
286- ? await stream . ReadAsync ( buffer , 0 , 3 )
287- : stream . Read ( buffer , 0 , 3 )
329+ readMethod switch {
330+ ReadMethod . ReadAsync => await stream . ReadAsync ( buffer , 0 , 3 ) ,
331+ #if SYSTEM_IO_STREAM_READASYNC_MEMORY_OF_BYTE
332+ ReadMethod . ReadAsyncToMemory => await stream. ReadAsync ( buffer . AsMemory ( 0 , 3 ) ) ,
333+ #endif
334+ _ => stream. Read ( buffer , 0 , 3 ) ,
335+ }
288336 ) ;
289337 Assert . AreEqual ( - 1 , stream . ReadByte ( ) ) ;
290338 }
0 commit comments