public void BasicsWork() { var ints = new Multispan<int>(); Assert.Equal(0, ints.Count); int index1 = ints.AppendNewSegment(10); Assert.Equal(1, ints.Count); Assert.Equal(0, index1); Span<int> segment1 = ints[index1]; Assert.True(segment1.Length >= 10); int index2 = ints.AppendNewSegment(1000); Assert.Equal(2, ints.Count); Assert.Equal(1, index2); Span<int> segment2 = ints[index2]; Assert.True(segment2.Length >= 1000); var totalSize = segment1.Length + segment2.Length; var computedSize = ints.TotalItemCount(); Assert.Equal(totalSize, computedSize); ints.ResizeSegment(0, 20); ints.ResizeSegment(1, 100); segment1 = ints[0]; segment2 = ints[1]; Assert.True(segment1.Length >= 20); Assert.True(segment2.Length >= 100); ints.Dispose(); Assert.Equal(0, ints.Count); }
public void ReadOnlySpanEnumeration() { ReadOnlySpan <byte> span; { Multispan <byte> collection = ToMultispan("A"); Assert.Equal(1, collection.Count); Position position = Position.First; Assert.True(collection.TryGet(ref position, out span, advance: true)); Assert.True(position.Equals(Position.AfterLast)); Assert.Equal(span[0], (byte)'A'); collection.Dispose(); } { Multispan <byte> collection = ToMultispan("A", "B"); Assert.Equal(2, collection.Count); Position position = Position.First; Assert.True(collection.TryGet(ref position, out span, advance: true)); Assert.Equal(span[0], (byte)'A'); Assert.True(collection.TryGet(ref position, out span, advance: true)); Assert.Equal(span[0], (byte)'B'); Assert.True(position.Equals(Position.AfterLast)); collection.Dispose(); } }
public void SpanForeach() { { Multispan <byte> collection = ToMultispan("A"); Assert.Equal(1, collection.Count); foreach (var item in collection) { Assert.Equal(item[0], (byte)'A'); } collection.Dispose(); } { Multispan <byte> collection = ToMultispan("A", "B"); Assert.Equal(2, collection.Count); int itemIndex = 0; foreach (var item in collection) { switch (itemIndex++) { case 0: Assert.Equal(item[0], (byte)'A'); break; case 1: Assert.Equal(item[0], (byte)'B'); break; default: throw new Exception("expected two items in the collection"); } } collection.Dispose(); } }
public void Slicing(int sliceIndex, int expectedTotalItems) { var ms = new Multispan<byte>(); Initialize(ref ms); var slice = ms.Slice(sliceIndex); Assert.Equal(expectedTotalItems, slice.TotalItemCount()); ms.Dispose(); }
public void Slicing(int sliceIndex, int expectedTotalItems) { var ms = new Multispan <byte>(); Initialize(ref ms); var slice = ms.Slice(sliceIndex); Assert.Equal(expectedTotalItems, slice.TotalItemCount()); ms.Dispose(); }
public void SingleSpanMultispanBasics() { var ints = new Multispan<int>(); Assert.Equal(0, ints.Count); int index1 = ints.AppendNewSegment(10); Assert.Equal(1, ints.Count); Assert.Equal(0, index1); Span<int> segment1 = ints[index1]; Assert.True(segment1.Length >= 10); var sliced = ints.Slice(1); ints.Dispose(); Assert.Equal(0, ints.Count); }
public void SingleSpanMultispanBasics() { var ints = new Multispan <int>(); Assert.Equal(0, ints.Count); int index1 = ints.AppendNewSegment(10); Assert.Equal(1, ints.Count); Assert.Equal(0, index1); Span <int> segment1 = ints[index1]; Assert.True(segment1.Length >= 10); var sliced = ints.Slice(1); ints.Dispose(); Assert.Equal(0, ints.Count); }
public void BasicsWork() { var ints = new Multispan <int>(); Assert.Equal(0, ints.Count); int index1 = ints.AppendNewSegment(10); Assert.Equal(1, ints.Count); Assert.Equal(0, index1); Span <int> segment1 = ints[index1]; Assert.True(segment1.Length >= 10); int index2 = ints.AppendNewSegment(1000); Assert.Equal(2, ints.Count); Assert.Equal(1, index2); Span <int> segment2 = ints[index2]; Assert.True(segment2.Length >= 1000); var totalSize = segment1.Length + segment2.Length; var computedSize = ints.TotalItemCount(); Assert.Equal(totalSize, computedSize); ints.ResizeSegment(0, 20); ints.ResizeSegment(1, 100); segment1 = ints[0]; segment2 = ints[1]; Assert.True(segment1.Length >= 20); Assert.True(segment2.Length >= 100); ints.Dispose(); Assert.Equal(0, ints.Count); }
public void MultispanEnumeration() { { Multispan <byte> collection = ToMultispan("A"); Assert.Equal(1, collection.Count); Position position = Position.BeforeFirst; var item = collection.TryGetItem(ref position); Assert.True(position.IsEnd); Assert.Equal(item[0], (byte)'A'); collection.Dispose(); } { Multispan <byte> collection = ToMultispan("A", "B"); Assert.Equal(2, collection.Count); Position position = Position.BeforeFirst; var item1 = collection.TryGetItem(ref position); Assert.True(position.IsValid); Assert.Equal(item1[0], (byte)'A'); var item2 = collection.TryGetItem(ref position); Assert.Equal(item2[0], (byte)'B'); Assert.True(position.IsEnd); collection.Dispose(); } }