public void PeekReturnsMinuOneByteInTheEnd() { var reader = new ReadOnlyBufferReader(Factory.CreateWithContent(new byte[] { 1, 2 })); Assert.Equal(1, reader.Take()); Assert.Equal(2, reader.Take()); Assert.Equal(-1, reader.Peek()); }
public void CursorIsCorrectAtEnd() { var reader = new ReadOnlyBufferReader(Factory.CreateWithContent(new byte[] { 1, 2 })); reader.Take(); reader.Take(); Assert.True(reader.End); }
public void TakeTraversesSegments() { var buffer = Factory.CreateWithContent(new byte[] { 1, 2, 3 }); var reader = new ReadOnlyBufferReader(buffer); Assert.Equal(1, reader.Take()); Assert.Equal(2, reader.Take()); Assert.Equal(3, reader.Take()); Assert.Equal(-1, reader.Take()); }
public void TakeReturnsByteAndMoves() { var reader = new ReadOnlyBufferReader(Factory.CreateWithContent(new byte[] { 1, 2 })); Assert.Equal(0, reader.Index); Assert.Equal(1, reader.Span[reader.Index]); Assert.Equal(1, reader.Take()); Assert.Equal(1, reader.Index); Assert.Equal(2, reader.Span[reader.Index]); Assert.Equal(2, reader.Take()); Assert.Equal(-1, reader.Take()); }
public void PeekWorkesWithEmptySegments() { var buffer = Factory.CreateWithContent(new byte[] { 1 }); var reader = new ReadOnlyBufferReader(buffer); Assert.Equal(0, reader.Index); Assert.Equal(1, reader.Span.Length); Assert.Equal(1, reader.Peek()); Assert.Equal(1, reader.Take()); Assert.Equal(-1, reader.Peek()); Assert.Equal(-1, reader.Take()); }
public void PeekTraversesSegments() { var buffer = Factory.CreateWithContent(new byte[] { 1, 2 }); var reader = new ReadOnlyBufferReader(buffer); Assert.Equal(1, reader.Span[reader.Index]); Assert.Equal(1, reader.Take()); Assert.Equal(2, reader.Span[reader.Index]); Assert.Equal(2, reader.Peek()); Assert.Equal(2, reader.Take()); Assert.Equal(-1, reader.Peek()); Assert.Equal(-1, reader.Take()); }
public void WorkesWithEmptyBuffer() { var reader = new ReadOnlyBufferReader(Factory.CreateWithContent(new byte[] { })); Assert.Equal(0, reader.Index); Assert.Equal(0, reader.Span.Length); Assert.Equal(-1, reader.Peek()); Assert.Equal(-1, reader.Take()); }
public void SkipTraversesSegments() { var buffer = Factory.CreateWithContent(new byte[] { 1, 2, 3 }); var reader = new ReadOnlyBufferReader(buffer); reader.Skip(2); Assert.Equal(3, reader.Span[reader.Index]); Assert.Equal(3, reader.Take()); }
public void ReturnsCorrectCursor(int takes, bool end) { var readableBuffer = Factory.CreateWithContent(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }); var reader = new ReadOnlyBufferReader(readableBuffer); for (int i = 0; i < takes; i++) { reader.Take(); } var expected = end ? new byte[] {} : readableBuffer.Slice(takes).ToArray(); Assert.Equal(expected, readableBuffer.Slice(reader.Cursor).ToArray()); }
public void CursorIsCorrectWithEmptyLastBlock() { var last = new BufferSegment(); last.SetMemory(new OwnedArray <byte>(new byte[4]), 0, 4); var first = new BufferSegment(); first.SetMemory(new OwnedArray <byte>(new byte[] { 1, 2 }), 0, 2); first.SetNext(last); var start = new Position(first, first.Start); var end = new Position(last, last.Start); var reader = new ReadOnlyBufferReader(new ReadOnlyBuffer(start, end)); reader.Take(); reader.Take(); reader.Take(); Assert.Same(last, reader.Cursor.Segment); Assert.Equal(0, reader.Cursor.Index); Assert.True(reader.End); }