public void ThrowIfEndOfStream_should_throw_when_position_plus_length_exceeds_2GB() { using (var buffer = new ByteArrayBuffer(new byte[1024])) using (var subject = new ByteBufferStream(buffer)) { subject.Position = 1024; subject.WriteInt32(int.MaxValue - 128); subject.Position = 1024; Action action = () => subject.ReadSlice(); // indirectly calls private ThrowIfEndOfStream method action.ShouldThrow<EndOfStreamException>(); } }
public void ReadSlice_should_return_expected_result(int length, byte[] bytes) { var buffer = Substitute.For<IByteBuffer>(); buffer.AccessBackingBytes(Arg.Any<int>()).Returns(x => { var p = (int)x[0]; return new ArraySegment<byte>(bytes, p, bytes.Length - p); }); buffer.IsReadOnly.Returns(true); buffer.Length.Returns(bytes.Length); var subject = new ByteBufferStream(buffer); var expectedPosition = length; subject.ReadSlice(); subject.Position.Should().Be(expectedPosition); subject.Buffer.Received(1).GetSlice(0, bytes.Length); }
public void ReadSlice_should_return_expected_result(int length, byte[] bytes) { var mockBuffer = new Mock<IByteBuffer>(); mockBuffer.Setup(s => s.AccessBackingBytes(It.IsAny<int>())).Returns((int p) => { return new ArraySegment<byte>(bytes, p, bytes.Length - p); }); mockBuffer.SetupGet(s => s.IsReadOnly).Returns(true); mockBuffer.SetupGet(s => s.Length).Returns(bytes.Length); var subject = new ByteBufferStream(mockBuffer.Object); var expectedPosition = length; subject.ReadSlice(); subject.Position.Should().Be(expectedPosition); mockBuffer.Verify(b => b.GetSlice(0, bytes.Length), Times.Once); }