@@ -284,6 +284,34 @@ public async Task Download(CancellationToken ct)
284
284
Assert . That ( await File . ReadAllTextAsync ( destPath , ct ) , Is . EqualTo ( "test" ) ) ;
285
285
}
286
286
287
+ [ Test ( Description = "Perform 2 downloads with the same destination" ) ]
288
+ [ CancelAfter ( 30_000 ) ]
289
+ public async Task DownloadSameDest ( CancellationToken ct )
290
+ {
291
+ using var httpServer = EchoServer ( ) ;
292
+ var url0 = new Uri ( httpServer . BaseUrl + "/test0" ) ;
293
+ var url1 = new Uri ( httpServer . BaseUrl + "/test1" ) ;
294
+ var destPath = Path . Combine ( _tempDir , "test" ) ;
295
+
296
+ var manager = new Downloader ( NullLogger < Downloader > . Instance ) ;
297
+ var startTask0 = manager . StartDownloadAsync ( new HttpRequestMessage ( HttpMethod . Get , url0 ) , destPath ,
298
+ NullDownloadValidator . Instance , ct ) ;
299
+ var startTask1 = manager . StartDownloadAsync ( new HttpRequestMessage ( HttpMethod . Get , url1 ) , destPath ,
300
+ NullDownloadValidator . Instance , ct ) ;
301
+ var dlTask0 = await startTask0 ;
302
+ await dlTask0 . Task ;
303
+ Assert . That ( dlTask0 . TotalBytes , Is . EqualTo ( 5 ) ) ;
304
+ Assert . That ( dlTask0 . BytesRead , Is . EqualTo ( 5 ) ) ;
305
+ Assert . That ( dlTask0 . Progress , Is . EqualTo ( 1 ) ) ;
306
+ Assert . That ( dlTask0 . IsCompleted , Is . True ) ;
307
+ var dlTask1 = await startTask1 ;
308
+ await dlTask1 . Task ;
309
+ Assert . That ( dlTask1 . TotalBytes , Is . EqualTo ( 5 ) ) ;
310
+ Assert . That ( dlTask1 . BytesRead , Is . EqualTo ( 5 ) ) ;
311
+ Assert . That ( dlTask1 . Progress , Is . EqualTo ( 1 ) ) ;
312
+ Assert . That ( dlTask1 . IsCompleted , Is . True ) ;
313
+ }
314
+
287
315
[ Test ( Description = "Download with custom headers" ) ]
288
316
[ CancelAfter ( 30_000 ) ]
289
317
public async Task WithHeaders ( CancellationToken ct )
@@ -395,9 +423,9 @@ public void CancelledOuter(CancellationToken ct)
395
423
var manager = new Downloader ( NullLogger < Downloader > . Instance ) ;
396
424
// The "outer" Task should fail.
397
425
var smallerCt = new CancellationTokenSource ( TimeSpan . FromSeconds ( 1 ) ) . Token ;
398
- Assert . ThrowsAsync < TaskCanceledException > (
399
- async ( ) => await manager . StartDownloadAsync ( new HttpRequestMessage ( HttpMethod . Get , url ) , destPath ,
400
- NullDownloadValidator . Instance , smallerCt ) ) ;
426
+ Assert . ThrowsAsync < TaskCanceledException > ( async ( ) => await manager . StartDownloadAsync (
427
+ new HttpRequestMessage ( HttpMethod . Get , url ) , destPath ,
428
+ NullDownloadValidator . Instance , smallerCt ) ) ;
401
429
}
402
430
403
431
[ Test ( Description = "Timeout on response body" ) ]
0 commit comments