public void TestWriteProgressStream() { const int writeSize = 3276; const int bytesToWrite = writeSize * 10; const int bufferSize = 4096; long bytesWritten = 0; using (var memoryStream = new LargeMemoryStream()) { using (var progressStream = new WriteProgressStream(memoryStream, bytesToWrite)) { var eventFired = false; progressStream.ProgressChanged += (sender, args) => eventFired = true; var buffer = new byte[bufferSize]; while (bytesWritten < bytesToWrite) { eventFired = false; progressStream.Write(buffer, 0, writeSize); bytesWritten += writeSize; var progress = 100 * bytesWritten / (double)bytesToWrite; Assert.AreEqual(progress, progressStream.ProgressPercent, 0.01); Assert.IsTrue(eventFired); } Assert.AreEqual(100, progressStream.ProgressPercent, 0.01); } } }