Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        public void CursorIsCorrectAtEnd()
        {
            var reader = new ReadOnlyBufferReader(Factory.CreateWithContent(new byte[] { 1, 2 }));

            reader.Take();
            reader.Take();
            Assert.True(reader.End);
        }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
            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());
            }
Ejemplo n.º 5
0
        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());
        }
Ejemplo n.º 6
0
        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());
        }
Ejemplo n.º 7
0
        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());
        }
Ejemplo n.º 8
0
        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());
        }
Ejemplo n.º 9
0
        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());
        }
Ejemplo n.º 10
0
        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);
        }