public void Ctor_OwnedMemory_NoOffset() { var ownedMemory = new CustomMemoryForTest <byte>(new byte[] { 1, 2, 3, 4, 5 }, 0, 5); var buffer = new ReadOnlySequence <byte>(ownedMemory); Assert.Equal(buffer.ToArray(), new byte[] { 1, 2, 3, 4, 5 }); }
public void AsMemoryManager_CanGetFirst() { MemoryManager <T> manager = new CustomMemoryForTest <T>(new T[5]); ReadOnlyMemory <T> memoryFromManager = ((ReadOnlyMemory <T>)manager.Memory); VerifyCanGetFirst(new ReadOnlySequence <T>(memoryFromManager), expectedSize: 5); }
public void Ctor_OwnedMemory_ValidatesArguments() { var ownedMemory = new CustomMemoryForTest <byte>(new byte[] { 1, 2, 3, 4, 5 }, 0, 5); Assert.Throws <ArgumentOutOfRangeException>(() => new ReadOnlySequence <byte>(ownedMemory, 6, 0)); Assert.Throws <ArgumentOutOfRangeException>(() => new ReadOnlySequence <byte>(ownedMemory, 4, 2)); Assert.Throws <ArgumentOutOfRangeException>(() => new ReadOnlySequence <byte>(ownedMemory, -4, 0)); Assert.Throws <ArgumentOutOfRangeException>(() => new ReadOnlySequence <byte>(ownedMemory, 4, -2)); Assert.Throws <ArgumentNullException>(() => new ReadOnlySequence <byte>((CustomMemoryForTest <byte>)null, 4, 2)); }
public void Ctor_OwnedMemory_Offset() { var ownedMemory = new CustomMemoryForTest <byte>(new byte[] { 1, 2, 3, 4, 5 }, 0, 5); var buffer = new ReadOnlySequence <byte>(ownedMemory, 2, 3); Assert.True(SequenceMarshal.TryGetOwnedMemory(buffer, out OwnedMemory <byte> newOwnedMemory, out int start, out int length)); Assert.Equal(ownedMemory, newOwnedMemory); Assert.Equal(2, start); Assert.Equal(3, length); Assert.False(SequenceMarshal.TryGetMemoryList(buffer, out _, out _, out _, out _)); Assert.False(SequenceMarshal.TryGetArray(buffer, out _)); Assert.False(SequenceMarshal.TryGetReadOnlyMemory(buffer, out _)); }
public static void SpanFromCharMemoryManager() { char[] a = "9192-9394".ToCharArray(); var memory = new Memory <char>(a); MemoryManager <char> manager = new CustomMemoryForTest <char>(a); foreach (BenchmarkIteration iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) { for (int i = 0; i < Benchmark.InnerIterationCount; i++) { Span <char> span = manager.Memory.Span; } } } }
public static void SpanFromIntegerMemoryManager() { int[] a = { 91, 92, -93, 94 }; var memory = new Memory <int>(a); MemoryManager <int> manager = new CustomMemoryForTest <int>(a); foreach (BenchmarkIteration iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) { for (int i = 0; i < Benchmark.InnerIterationCount; i++) { Span <int> span = manager.Memory.Span; } } } }
public static void SpanFromObjectMemoryManager() { object o1 = new object(); object o2 = new object(); object[] a = { o1, o2 }; var memory = new Memory <object>(a); MemoryManager <object> manager = new CustomMemoryForTest <object>(a); foreach (BenchmarkIteration iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) { for (int i = 0; i < Benchmark.InnerIterationCount; i++) { Span <object> span = manager.Memory.Span; } } } }