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 });
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 4
0
        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 _));
        }
Ejemplo n.º 5
0
        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;
                    }
                }
            }
        }
Ejemplo n.º 6
0
        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;
                    }
                }
            }
        }
Ejemplo n.º 7
0
        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;
                    }
                }
            }
        }