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);
                }
            }
        }
		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);
				}
			}
		}