예제 #1
0
            public void Basic()
            {
                Foo[] array = Foo.CreateArray(3);

                // Act:
                BufferSpan <Foo> span = new BufferSpan <Foo>(array);

                // Assert:
                Assert.Equal(array, span.Array);
                Assert.Equal(3, span.Length);
                Assert.SameRefs(ref array[0], ref span.DangerousGetPinnableReference());
            }
예제 #2
0
            public void WithStartAndLength()
            {
                Foo[] array  = Foo.CreateArray(10);
                int   start  = 2;
                int   length = 3;
                // Act:
                BufferSpan <Foo> span = new BufferSpan <Foo>(array, start, length);

                // Assert:
                Assert.Equal(array, span.Array);
                Assert.Equal(start, span.Start);
                Assert.SameRefs(ref array[start], ref span.DangerousGetPinnableReference());
                Assert.Equal(length, span.Length);
            }
예제 #3
0
            public void StartOnly()
            {
                Foo[] array       = Foo.CreateArray(5);
                int   start0      = 2;
                int   start1      = 2;
                int   totalOffset = start0 + start1;

                BufferSpan <Foo> span = new BufferSpan <Foo>(array, start0);

                // Act:
                span = span.Slice(start1);

                // Assert:
                Assert.Equal(array, span.Array);
                Assert.Equal(totalOffset, span.Start);
                Assert.SameRefs(ref array[totalOffset], ref span.DangerousGetPinnableReference());
                Assert.Equal(array.Length - totalOffset, span.Length);
            }