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 async Task TestReadAsync() { using (var stream = new DuplexStream(new DummyNetworkStream(), new DummyNetworkStream())) { var buffer = new byte[1024]; int n; stream.InputStream.Write(buffer, 0, buffer.Length); stream.InputStream.Position = 0; n = await stream.ReadAsync(buffer, 0, buffer.Length); Assert.AreEqual(buffer.Length, n); } }