public void Write_IfHasCaptureWriteEvents_ShouldRaiseCaptureWriteEvents() { byte[] expectedBuffer = new byte[] {0, 1, 2, 3}; const int expectedOffset = 1; const int expectedCount = 2; Encoding expectedEncoding = Encoding.UTF8; bool captureWriteRaised = false; IEnumerable<byte> actualBuffer = null; int? actualOffset = null; int? actualCount = null; Encoding actualEncoding = null; object actualSender = null; CapturableStream capturableStream = new CapturableStream(Mock.Of<Stream>(), expectedEncoding); capturableStream.CaptureWrite += delegate(object sender, StreamWriteEventArgs e) { captureWriteRaised = true; actualSender = sender; actualBuffer = e.Buffer; actualOffset = e.Offset; actualCount = e.Count; actualEncoding = e.Encoding; }; Assert.IsFalse(captureWriteRaised); capturableStream.Write(expectedBuffer, expectedOffset, expectedCount); Assert.IsTrue(captureWriteRaised); Assert.AreEqual(capturableStream, actualSender); // ReSharper disable PossibleMultipleEnumeration Assert.AreEqual(expectedBuffer.Length, actualBuffer.Count()); Assert.AreEqual(expectedBuffer[0], actualBuffer.ElementAt(0)); Assert.AreEqual(expectedBuffer[1], actualBuffer.ElementAt(1)); Assert.AreEqual(expectedBuffer[2], actualBuffer.ElementAt(2)); Assert.AreEqual(expectedBuffer[3], actualBuffer.ElementAt(3)); // ReSharper restore PossibleMultipleEnumeration Assert.AreEqual(expectedOffset, actualOffset); Assert.AreEqual(expectedCount, actualCount); Assert.AreEqual(expectedEncoding, actualEncoding); }
public void Write_IfNotCaptured_ShouldNotCallWriteOfTheCapturedStream() { byte[] buffer = new byte[4] {0, 1, 2, 3}; CapturableStream capturableStream = new CapturableStream(Mock.Of<Stream>(), Mock.Of<Encoding>()); Assert.IsFalse(capturableStream.CapturedStream.ToArray().Any()); capturableStream.Write(buffer, 0, buffer.Length); Assert.IsFalse(capturableStream.CapturedStream.ToArray().Any()); }
public void Write_IfCaptured_ShouldCallWriteOfTheCapturedStream() { byte[] buffer = new byte[4] {0, 1, 2, 3}; CapturableStream capturableStream = new CapturableStream(Mock.Of<Stream>(), Mock.Of<Encoding>()); capturableStream.Capture += (sender, e) => { }; Assert.IsFalse(capturableStream.CapturedStream.ToArray().Any()); capturableStream.Write(buffer, 0, buffer.Length); Assert.AreEqual(4, capturableStream.CapturedStream.ToArray().Length); Assert.AreEqual(0, capturableStream.CapturedStream.ToArray()[0]); Assert.AreEqual(1, capturableStream.CapturedStream.ToArray()[1]); Assert.AreEqual(2, capturableStream.CapturedStream.ToArray()[2]); Assert.AreEqual(3, capturableStream.CapturedStream.ToArray()[3]); }