public void ColorToBytes()
            {
                Color[] colors = { new Color(0, 1, 2, 3), new Color(4, 5, 6, 7), new Color(8, 9, 10, 11), };

                using (PinnedBuffer <Color> colorBuf = new PinnedBuffer <Color>(colors))
                    using (PinnedBuffer <byte> byteBuf = new PinnedBuffer <byte>(colors.Length * 4))
                    {
                        BufferPointer.Copy <Color>(colorBuf, byteBuf, colorBuf.Count);

                        byte[] a = byteBuf.Array;

                        for (int i = 0; i < byteBuf.Count; i++)
                        {
                            Assert.Equal((byte)i, a[i]);
                        }
                    }
            }
Ejemplo n.º 2
0
            public void GenericToOwnType(int count)
            {
                Foo[] source = Foo.CreateArray(count + 2);
                Foo[] dest   = new Foo[count + 5];

                fixed(Foo *pSource = source)
                fixed(Foo * pDest = dest)
                {
                    BufferPointer <Foo> apSource = new BufferPointer <Foo>(source, pSource);
                    BufferPointer <Foo> apDest   = new BufferPointer <Foo>(dest, pDest);

                    BufferPointer.Copy(apSource, apDest, count);
                }

                Assert.Equal(source[0], dest[0]);
                Assert.Equal(source[count - 1], dest[count - 1]);
                Assert.NotEqual(source[count], dest[count]);
            }
Ejemplo n.º 3
0
            public void BytesToGeneric(int count)
            {
                int destCount = count * sizeof(Foo);

                byte[] source = new byte[destCount + sizeof(Foo) + 1];
                Foo[]  dest   = Foo.CreateArray(count + 2);

                fixed(byte *pSource = source)
                fixed(Foo * pDest = dest)
                {
                    BufferPointer <byte> apSource = new BufferPointer <byte>(source, pSource);
                    BufferPointer <Foo>  apDest   = new BufferPointer <Foo>(dest, pDest);

                    BufferPointer.Copy(apSource, apDest, count);
                }

                Assert.True(ElementsAreEqual(dest, source, 0));
                Assert.True(ElementsAreEqual(dest, source, count - 1));
                Assert.False(ElementsAreEqual(dest, source, count));
            }
            public void IntToBytes(int count)
            {
                int destCount = count * sizeof(int);

                int[]  source = CreateTestInts(count + 2);
                byte[] dest   = new byte[destCount + sizeof(int) + 1];

                fixed(int *pSource = source)
                fixed(byte *pDest = dest)
                {
                    BufferPointer <int>  apSource = new BufferPointer <int>(source, pSource);
                    BufferPointer <byte> apDest   = new BufferPointer <byte>(dest, pDest);

                    BufferPointer.Copy(apSource, apDest, count);
                }

                AssertNotDefault(source, 1);

                Assert.True(ElementsAreEqual(source, dest, 0));
                Assert.True(ElementsAreEqual(source, dest, count - 1));
                Assert.False(ElementsAreEqual(source, dest, count));
            }
            public void IntToInt(int count)
            {
                int[] source = CreateTestInts(count + 2);
                int[] dest   = new int[count + 5];

                fixed(int *pSource = source)
                fixed(int *pDest = dest)
                {
                    BufferPointer <int> apSource = new BufferPointer <int>(source, pSource, 1);
                    BufferPointer <int> apDest   = new BufferPointer <int>(dest, pDest, 1);

                    BufferPointer.Copy(apSource, apDest, count - 1);
                }

                AssertNotDefault(source, 1);
                AssertNotDefault(dest, 1);

                Assert.NotEqual(source[0], dest[0]);
                Assert.Equal(source[1], dest[1]);
                Assert.Equal(source[2], dest[2]);
                Assert.Equal(source[count - 1], dest[count - 1]);
                Assert.NotEqual(source[count], dest[count]);
            }
            public void GenericToOwnType_Aligned(int count)
            {
                AlignedFoo[] source = AlignedFoo.CreateArray(count + 2);
                AlignedFoo[] dest   = new AlignedFoo[count + 5];

                fixed(AlignedFoo *pSource = source)
                fixed(AlignedFoo * pDest = dest)
                {
                    BufferPointer <AlignedFoo> apSource = new BufferPointer <AlignedFoo>(source, pSource, 1);
                    BufferPointer <AlignedFoo> apDest   = new BufferPointer <AlignedFoo>(dest, pDest, 1);

                    BufferPointer.Copy(apSource, apDest, count - 1);
                }

                AssertNotDefault(source, 1);
                AssertNotDefault(dest, 1);

                Assert.NotEqual(source[0], dest[0]);
                Assert.Equal(source[1], dest[1]);
                Assert.Equal(source[2], dest[2]);
                Assert.Equal(source[count - 1], dest[count - 1]);
                Assert.NotEqual(source[count], dest[count]);
            }
            public void BytesToGeneric(int count)
            {
                int srcCount = count * sizeof(Foo);

                byte[] source = CreateTestBytes(srcCount);
                Foo[]  dest   = new Foo[count + 2];

                fixed(byte *pSource = source)
                fixed(Foo * pDest = dest)
                {
                    BufferPointer <byte> apSource = new BufferPointer <byte>(source, pSource);
                    BufferPointer <Foo>  apDest   = new BufferPointer <Foo>(dest, pDest);

                    BufferPointer.Copy(apSource, apDest, count);
                }

                AssertNotDefault(source, sizeof(Foo) + 1);
                AssertNotDefault(dest, 1);

                Assert.True(ElementsAreEqual(dest, source, 0));
                Assert.True(ElementsAreEqual(dest, source, 1));
                Assert.True(ElementsAreEqual(dest, source, count - 1));
                Assert.False(ElementsAreEqual(dest, source, count));
            }
            public void GenericToBytes_Aligned(int count)
            {
                int destCount = count * sizeof(Foo);

                AlignedFoo[] source = AlignedFoo.CreateArray(count + 2);
                byte[]       dest   = new byte[destCount + sizeof(AlignedFoo) * 2];

                fixed(AlignedFoo *pSource = source)
                fixed(byte *pDest = dest)
                {
                    BufferPointer <AlignedFoo> apSource = new BufferPointer <AlignedFoo>(source, pSource, 1);
                    BufferPointer <byte>       apDest   = new BufferPointer <byte>(dest, pDest, sizeof(AlignedFoo));

                    BufferPointer.Copy(apSource, apDest, count - 1);
                }

                AssertNotDefault(source, 1);

                Assert.False(ElementsAreEqual(source, dest, 0));
                Assert.True(ElementsAreEqual(source, dest, 1));
                Assert.True(ElementsAreEqual(source, dest, 2));
                Assert.True(ElementsAreEqual(source, dest, count - 1));
                Assert.False(ElementsAreEqual(source, dest, count));
            }