Ejemplo n.º 1
0
        public void TryParseInt32Multisegment(int expected)
        {
            byte[] array = new byte[32];
            Utf8Formatter.TryFormat(expected, array, out var written);
            array[written] = (byte)'#';
            var memory = new Memory <byte>(array, 0, written + 1);

            for (int pivot = 0; pivot < written; pivot++)
            {
                var front = memory.Slice(0, pivot);
                var back  = memory.Slice(pivot);
                var first = new BufferList(front);
                var last  = first.Append(back);

                var bytes = new ReadOnlySequence <byte>(first, 0, last, last.Memory.Length);

                Assert.True(Sequence.TryParse(bytes, out int value, out int consumed));
                Assert.Equal(expected, value);

                Assert.True(Sequence.TryParse(bytes, out value, out SequencePosition consumedPosition));
                Assert.Equal(expected, value);

                var afterValue = bytes.Slice(consumedPosition);
                Assert.Equal((byte)'#', afterValue.First.Span[0]);
            }
        }