Exemplo n.º 1
0
        public void MultiSegmentPositionSlicing()
        {
            var           array1   = new byte[] { 0, 1 };
            var           array2   = new byte[] { 2, 3 };
            ReadOnlyBytes allBytes = ListHelper.CreateRob(array1, array2);

            ReadOnlyBytes allBytesSlice1 = allBytes.Slice(1);
            ReadOnlyBytes allBytesSlice2 = allBytes.Slice(2);
            ReadOnlyBytes allBytesSlice3 = allBytes.Slice(3);

            var positionOf3 = allBytes.PositionOf(3).GetValueOrDefault();
            var positionOf1 = allBytes.PositionOf(1).GetValueOrDefault();

            // all bytes
            {
                var slice = allBytes.Slice(positionOf3);
                Assert.Equal(1, slice.Length);
                Assert.Equal(3, slice.Memory.Span[0]);
            }

            {
                var slice = allBytes.Slice(positionOf1);
                Assert.Equal(3, slice.Length);
                Assert.Equal(1, slice.Memory.Span[0]);
            }

            // allBytesSlice1
            {
                var slice = allBytesSlice1.Slice(positionOf3);
                Assert.Equal(1, slice.Length);
                Assert.Equal(3, slice.Memory.Span[0]);
            }

            {
                var slice = allBytesSlice1.Slice(positionOf1);
                Assert.Equal(3, slice.Length);
                Assert.Equal(1, slice.Memory.Span[0]);
            }

            // allBytesSlice2
            {
                var slice = allBytesSlice2.Slice(positionOf3);
                Assert.Equal(1, slice.Length);
                Assert.Equal(3, slice.Memory.Span[0]);
            }

            {
                var slice = allBytesSlice2.Slice(positionOf1);
                Assert.Equal(3, slice.Length);
                Assert.Equal(1, slice.Memory.Span[0]);
            }

            // allBytesSlice3
            {
                var slice = allBytesSlice3.Slice(positionOf3);
                Assert.Equal(1, slice.Length);
                Assert.Equal(3, slice.Memory.Span[0]);
            }

            {
                var slice = allBytesSlice3.Slice(positionOf1);
                Assert.Equal(3, slice.Length);
                Assert.Equal(1, slice.Memory.Span[0]);
            }
        }