public void TestCancel()
{
// Prepare a very slow download of the file and monitor for a cancellation exception
Server.Slow = true;
var download = new DownloadFile(Server.FileUri, _tempFile);
bool exceptionThrown = false;
var cancellationTokenSource = new CancellationTokenSource();
var downloadThread = new Thread(() =>
{
try
{
download.Run(cancellationTokenSource.Token);
}
catch (OperationCanceledException)
{
exceptionThrown = true;
}
});
// Start and then cancel the download
downloadThread.Start();
Thread.Sleep(100);
cancellationTokenSource.Cancel();
downloadThread.Join();
exceptionThrown.Should().BeTrue(because: "Should throw OperationCanceledException");
}