@@ -284,6 +284,34 @@ public async Task Download(CancellationToken ct)
284284 Assert . That ( await File . ReadAllTextAsync ( destPath , ct ) , Is . EqualTo ( "test" ) ) ;
285285 }
286286
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+
287315 [ Test ( Description = "Download with custom headers" ) ]
288316 [ CancelAfter ( 30_000 ) ]
289317 public async Task WithHeaders ( CancellationToken ct )
@@ -395,9 +423,9 @@ public void CancelledOuter(CancellationToken ct)
395423 var manager = new Downloader ( NullLogger < Downloader > . Instance ) ;
396424 // The "outer" Task should fail.
397425 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 ) ) ;
401429 }
402430
403431 [ Test ( Description = "Timeout on response body" ) ]
0 commit comments