public void TestArgumentExceptions()
        {
            Assert.Throws <ArgumentNullException> (() => new DuplexStream(null, Stream.Null));
            Assert.Throws <ArgumentNullException> (() => new DuplexStream(Stream.Null, null));

            using (var stream = new DuplexStream(new DummyNetworkStream(), new DummyNetworkStream())) {
                var buffer = new byte[16];

                Assert.Throws <ArgumentNullException> (() => stream.Read(null, 0, buffer.Length));
                Assert.Throws <ArgumentOutOfRangeException> (() => stream.Read(buffer, -1, buffer.Length));
                Assert.Throws <ArgumentOutOfRangeException> (() => stream.Read(buffer, 0, -1));

                Assert.ThrowsAsync <ArgumentNullException> (async() => await stream.ReadAsync(null, 0, buffer.Length));
                Assert.ThrowsAsync <ArgumentOutOfRangeException> (async() => await stream.ReadAsync(buffer, -1, buffer.Length));
                Assert.ThrowsAsync <ArgumentOutOfRangeException> (async() => await stream.ReadAsync(buffer, 0, -1));

                Assert.Throws <ArgumentNullException> (() => stream.Write(null, 0, buffer.Length));
                Assert.Throws <ArgumentOutOfRangeException> (() => stream.Write(buffer, -1, buffer.Length));
                Assert.Throws <ArgumentOutOfRangeException> (() => stream.Write(buffer, 0, -1));

                Assert.ThrowsAsync <ArgumentNullException> (async() => await stream.WriteAsync(null, 0, buffer.Length));
                Assert.ThrowsAsync <ArgumentOutOfRangeException> (async() => await stream.WriteAsync(buffer, -1, buffer.Length));
                Assert.ThrowsAsync <ArgumentOutOfRangeException> (async() => await stream.WriteAsync(buffer, 0, -1));
            }
        }
        public void TestWrite()
        {
            using (var stream = new DuplexStream(new DummyNetworkStream(), new DummyNetworkStream())) {
                var buffer = new byte[1024];

                stream.Write(buffer, 0, buffer.Length);
                stream.Flush();
                Assert.AreEqual(buffer.Length, stream.OutputStream.Position);
            }
        }