public void PausableStreamDoesPauseAndResumeOnMultiplePauseCalls([Values(1)]int seconds) {
int length = 1024 * 1024 * 10;
var start = DateTime.Now;
byte[] content = new byte[length];
using (var inputStream = new MemoryStream(content))
using (var underTest = new PausableStream(inputStream)) {
underTest.Pause();
underTest.Pause();
underTest.Pause();
underTest.Pause();
var task = Task.Factory.StartNew(() => {
using (var outputStream = new MemoryStream()) {
underTest.CopyTo(outputStream);
Assert.That(outputStream.Length, Is.EqualTo(length));
var duration = DateTime.Now - start;
Assert.That(Math.Round(duration.TotalSeconds), Is.InRange(seconds, seconds + 1));
}
});
System.Threading.Thread.Sleep(seconds * 1000);
underTest.Resume();
underTest.Resume();
task.Wait();
}
}