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]); } }