public void TryReadReturnsValueAndAdvances() { ByteBufferReader reader = new ByteBufferReader(Factory.CreateWithContent(GetInputData(2))); Assert.Equal(2, reader.Length); Assert.Equal(2, reader.Remaining); Assert.Equal(0, reader.Consumed); Assert.Equal(0, reader.CurrentSpanIndex); Assert.Equal(InputData[0], reader.CurrentSpan[reader.CurrentSpanIndex]); // Read 1st value Assert.True(reader.TryRead(out byte value)); Assert.Equal(InputData[0], value); Assert.Equal(1, reader.Remaining); Assert.Equal(1, reader.Consumed); Assert.Equal(1, reader.CurrentSpanIndex); Assert.Equal(InputData[1], reader.CurrentSpan[reader.CurrentSpanIndex]); // Read 2nd value Assert.True(reader.TryRead(out value)); Assert.Equal(InputData[1], value); Assert.Equal(0, reader.Remaining); Assert.Equal(2, reader.Consumed); Assert.Equal(2, reader.CurrentSpanIndex); // Read at end Assert.False(reader.TryRead(out value)); Assert.Equal(default, value);
public void SkipTests(bool singleSegment) { byte[] buffer = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; var bytes = singleSegment ? new ReadOnlySequence <byte>(buffer) : BufferUtilities.CreateSplitBuffer(buffer, 2, 4); var skipReader = new ByteBufferReader(bytes); Assert.False(skipReader.TryAdvanceTo(10)); Assert.True(skipReader.TryAdvanceTo(4, advancePastDelimiter: false)); Assert.True(skipReader.TryRead(out byte value)); Assert.Equal(4, value); Assert.True(skipReader.TryAdvanceToAny(new byte[] { 3, 12, 7 }, advancePastDelimiter: false)); Assert.True(skipReader.TryRead(out value)); Assert.Equal(7, value); Assert.Equal(1, skipReader.AdvancePast(8)); Assert.True(skipReader.TryRead(out value)); Assert.Equal(9, value); skipReader = new ByteBufferReader(bytes); Assert.Equal(0, skipReader.AdvancePast(2)); Assert.Equal(3, skipReader.AdvancePastAny(new byte[] { 2, 3, 1 })); Assert.True(skipReader.TryRead(out value)); Assert.Equal(4, value); }
public void TakeReturnsByteAndMoves() { var reader = new ByteBufferReader(Factory.CreateWithContent(GetInputData(2))); Assert.Equal(0, reader.CurrentSpanIndex); Assert.Equal(InputData[0], reader.CurrentSpan[reader.CurrentSpanIndex]); Assert.True(reader.TryRead(out byte value)); Assert.Equal(InputData[0], value); Assert.Equal(1, reader.CurrentSpanIndex); Assert.Equal(InputData[1], reader.CurrentSpan[reader.CurrentSpanIndex]); Assert.True(reader.TryRead(out value)); Assert.Equal(InputData[1], value); Assert.False(reader.TryRead(out value)); Assert.Equal(default, value);
public void Basic(bool singleSegment) { byte[] buffer = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; ReadOnlySequence <byte> bytes = singleSegment ? new ReadOnlySequence <byte>(buffer) : SequenceFactory.CreateSplit(buffer, 2, 4); ByteBufferReader skipReader = new ByteBufferReader(bytes); Assert.False(skipReader.TryAdvanceTo(10)); Assert.True(skipReader.TryAdvanceTo(4, advancePastDelimiter: false)); Assert.True(skipReader.TryRead(out byte value)); Assert.Equal(4, value); Assert.True(skipReader.TryAdvanceToAny(new byte[] { 3, 12, 7 }, advancePastDelimiter: false)); Assert.True(skipReader.TryRead(out value)); Assert.Equal(7, value); Assert.Equal(1, skipReader.AdvancePast(8)); Assert.True(skipReader.TryRead(out value)); Assert.Equal(9, value); skipReader = new ByteBufferReader(bytes); Assert.Equal(0, skipReader.AdvancePast(2)); Assert.Equal(3, skipReader.AdvancePastAny(new byte[] { 2, 3, 1 })); Assert.True(skipReader.TryRead(out value)); Assert.Equal(4, value); skipReader.Rewind(skipReader.Consumed); Assert.Equal(0, skipReader.AdvancePast(2)); Assert.Equal(3, skipReader.AdvancePastAny(2, 3, 1)); Assert.True(skipReader.TryRead(out value)); Assert.Equal(4, value); skipReader.Rewind(skipReader.Consumed); Assert.Equal(0, skipReader.AdvancePast(2)); Assert.Equal(3, skipReader.AdvancePastAny(2, 3, 1, 7)); Assert.True(skipReader.TryRead(out value)); Assert.Equal(4, value); skipReader.Rewind(skipReader.Consumed - 1); Assert.Equal(0, skipReader.AdvancePast(1)); Assert.Equal(2, skipReader.AdvancePastAny(2, 3)); Assert.True(skipReader.TryRead(out value)); Assert.Equal(4, value); }