public void Operlaps() { var a1 = new int[10]; { Assert.False(UnsafeUnmanaged.Overlaps(ref a1[0], 2, ref a1[2], 2)); Assert.False(UnsafeUnmanaged.Overlaps(ref a1[0], 2, ref a1[2], 2, out var elemOffset2));
public void ByteOffsetVoidPtr() { if (Is64Bit) { Assert.Equal(IntPtr.Zero, UnsafeUnmanaged.ByteOffset(MakePtr(0xFFFFFFFFU), MakePtr(0xFFFFFFFFU))); Assert.Equal(new IntPtr(0x100000000L), UnsafeUnmanaged.ByteOffset(MakePtr(0xFFFFFFFFU), MakePtr(0x1FFFFFFFFL))); } Assert.Equal(IntPtr.Zero, UnsafeUnmanaged.ByteOffset(MakePtr(0xFFFFFFFU), MakePtr(0xFFFFFFFU))); Assert.Equal(new IntPtr(0x10000000), UnsafeUnmanaged.ByteOffset(MakePtr(0xFFFFFFF), MakePtr(0x1FFFFFFFU))); }
public void OffsetOf() { Foo f = new Foo(); Foo f2 = new Foo(); Assert.Equal(0, UnsafeUnmanaged.OffsetOf(f, f.bar)); Assert.Equal(4, UnsafeUnmanaged.OffsetOf(f, f.baz)); Assert.Throws <ArgumentOutOfRangeException>(() => UnsafeUnmanaged.OffsetOf(f2, f.bar)); Assert.Throws <ArgumentOutOfRangeException>(() => UnsafeUnmanaged.OffsetOf(f2, f.baz)); Assert.Throws <ArgumentOutOfRangeException>(() => UnsafeUnmanaged.OffsetOf(f, f2.bar)); Assert.Throws <ArgumentOutOfRangeException>(() => UnsafeUnmanaged.OffsetOf(f, f2.baz)); }
public void IsAddressLeq() { Assert.False(UnsafeUnmanaged.IsAddressLeq(ref int100[1], ref int100[0])); Assert.True(UnsafeUnmanaged.IsAddressLeq(ref int100[0], ref int100[0])); Assert.True(UnsafeUnmanaged.IsAddressLeq(ref int100[0], ref int100[1])); }
public void ElementOffset() { Assert.Equal(10, UnsafeUnmanaged.ElementOffset(ref int100[10], ref int100[20])); Assert.Equal(-10, UnsafeUnmanaged.ElementOffset(ref int100[20], ref int100[10])); }
public void ElementOffsetPtr() { Assert.Equal(0x10000, UnsafeUnmanaged.ElementOffset(MakePtr <double>(0xFFF0 * sizeof(double)), MakePtr <double>(0x1FFF0 * sizeof(double)))); Assert.Equal(-0x10000, UnsafeUnmanaged.ElementOffset(MakePtr <double>(0x1FFF0 * sizeof(double)), MakePtr <double>(0xFFF0 * sizeof(double)))); }
public void ByteOffset() { Assert.Equal(new IntPtr(0x10010), UnsafeUnmanaged.ByteOffset(MakePtr <double>(0xFFE0), MakePtr <double>(0x1FFF0))); Assert.Equal(new IntPtr(-0x10000 + 16), UnsafeUnmanaged.ByteOffset(MakePtr <double>(0x1FFE0), MakePtr <double>(0xFFF0))); }
public void IsAddressLeqReadOnly() { Assert.False(UnsafeUnmanaged.IsAddressLeqReadOnly(int100[1], int100[0])); Assert.True(UnsafeUnmanaged.IsAddressLeqReadOnly(int100[0], int100[0])); Assert.True(UnsafeUnmanaged.IsAddressLeqReadOnly(int100[0], int100[1])); }
public void ElementOffsetReadOnly() { Assert.Equal(10, UnsafeUnmanaged.ElementOffsetReadOnly(int100[10], int100[20])); Assert.Equal(-10, UnsafeUnmanaged.ElementOffsetReadOnly(int100[20], int100[10])); }