public async Task ShouldReadThePrefaceFromStream() { var buffer = new BufferReadStream(50, 50); Array.Copy(ClientPreface.Bytes, buffer.Buffer, ClientPreface.Length); buffer.Written = ClientPreface.Length; await ClientPreface.ReadAsync(buffer); }
public async Task ShouldErrorIfStreamEnds() { var buffer = new BufferReadStream(50, 50); Array.Copy(ClientPreface.Bytes, buffer.Buffer, ClientPreface.Length); buffer.Written = ClientPreface.Length - 1; // Miss one byte await Assert.ThrowsAsync <EndOfStreamException>( () => ClientPreface.ReadAsync(buffer).AsTask()); }
public async Task ShouldYieldAnErrorIfNotEnoughDataIsAvailable() { var source = new BufferReadStream(111, 50); source.Written = 111; // need 112 bytes, but only 111 are available var dest = new ArraySegment <byte>(new byte[112]); await Assert.ThrowsAsync <EndOfStreamException>( async() => await source.ReadAll(dest)); Assert.Equal(4, source.NrReads); }
public async Task ShouldErrorIfStreamDoesNotContainPreface() { var buffer = new BufferReadStream(50, 50); Array.Copy(ClientPreface.Bytes, buffer.Buffer, ClientPreface.Length); buffer.Buffer[22] = (byte)'l'; buffer.Written = ClientPreface.Length; var ex = await Assert.ThrowsAsync <Exception>( () => ClientPreface.ReadAsync(buffer).AsTask()); Assert.Equal("Invalid prefix received", ex.Message); }
public async Task ShouldReadAllRequiredDataFromAConnection() { // Read 111 bytes in 3 parts var source = new BufferReadStream(111, 50); for (var i = 0; i < 111; i++) { source.Buffer[i] = (byte)i; } source.Written = 111; var dest = new byte[111]; var destView = new ArraySegment <byte>(dest); await source.ReadAll(destView); for (var i = 0; i < 111; i++) { Assert.Equal(source.Buffer[i], dest[i]); } Assert.Equal(3, source.NrReads); }