public void FirstTestName()
        {
            using (var memoryStream = new MemoryStream())
            {
                using (var streams = new StreamStack(memoryStream))
                {
                    streams.Push(x => new GZipStream(x, CompressionMode.Compress, true));

                    byte[] bytes = Encoding.UTF8.GetBytes(new string('-', 1000));
                    streams.Write(bytes, 0, bytes.Length);
                }

                Console.WriteLine("Bytes Used: {0}", memoryStream.ToArray().Length);
            }
        }
        public HttpListenerRequestContext(HttpListenerRequest request)
        {
            _request = request;

            _bodyStream = new StreamStack(request.InputStream);
        }
示例#3
0
 public void TestProperties()
 {
     // invalid properties
      using (var stack = new StreamStack())
      {
     Assert.IsFalse(stack.CanSeek);
     Assert.IsFalse(stack.CanRead);
     Assert.IsFalse(stack.CanWrite);
     AssertException(() => { var x = stack.Position; });
     AssertException(() => stack.Position = 10);
     AssertException(() => { var x = stack.Length; });
     AssertException(() => stack.SetLength(10));
     Assert.IsNull(stack.Top);
      }
      // valid properties
      using (var stack = new StreamStack())
      {
     var top = new MemoryStream();
     stack.Push(top);
     Assert.IsTrue(stack.CanRead);
     Assert.IsTrue(stack.CanWrite);
     Assert.AreEqual(stack.Top, top);
      }
      using (var stack = new StreamStack())
      {
     stack.Push(new MemoryStream(new Byte[10], false));
     Assert.IsTrue(stack.CanRead);
     Assert.IsFalse(stack.CanWrite);
      }
 }
示例#4
0
 public void TestOperations()
 {
     // invalid operations
      using (var stack = new StreamStack())
      {
     AssertException(() => stack.Push(null));
     Assert.IsNull(stack.GetStream<Stream>());
     stack.Push(new MemoryStream());
     AssertException(() => stack.Seek(0, SeekOrigin.Current));
      }
      // stream access
      using (var stack = new StreamStack())
      {
     var buffer = new MemoryStream();
     var test = new TestStream(buffer);
     stack.Push(buffer);
     Assert.AreEqual(stack.Top, buffer);
     stack.Push(test);
     Assert.AreEqual(stack.Top, test);
     Assert.AreEqual(stack.GetStream<MemoryStream>(), buffer);
     Assert.AreEqual(stack.GetStream<TestStream>(), test);
      }
      // stream flush
      using (var stack = new StreamStack())
      {
     var stream1 = new TestStream(new MemoryStream());
     var stream2 = new TestStream(stream1);
     stack.Push(stream1);
     stack.Push(stream2);
     stack.Flush();
     Assert.IsTrue(stream1.Flushed);
     Assert.IsTrue(stream2.Flushed);
      }
      // stream read
      using (var stack = new StreamStack())
      {
     var buffer = new MemoryStream();
     StreamWrite(buffer, "test");
     buffer.Position = 0;
     stack.Push(buffer);
     stack.Push(new TestStream(stack.Top));
     Assert.AreEqual(StreamRead(stack), "test");
      }
      // stream write
      using (var stack = new StreamStack())
      {
     var buffer = new MemoryStream();
     stack.Push(buffer);
     stack.Push(new TestStream(stack.Top));
     StreamWrite(stack, "test");
     buffer.Position = 0;
     Assert.AreEqual(StreamRead(buffer), "test");
      }
      // stream disposal
      using (var stack = new StreamStack())
      {
     var stream1 = new TestStream(new MemoryStream());
     var stream2 = new TestStream(stream1);
     stack.Push(stream1);
     stack.Push(stream2);
     stack.Dispose();
     Assert.IsTrue(stream1.Disposed);
     Assert.IsTrue(stream2.Disposed);
      }
 }
 public HttpListenerResponseContext(HttpListenerResponse response)
 {
     _response = response;
     _bodyStream = new StreamStack(response.OutputStream);
 }