public unsafe void EqualityTest1() { double *sample = stackalloc double[4]; int checksum = 0; int address1 = (int)sample; Console.WriteLine("Original Address: {0:X}", address1); checksum += address1; IntPtr address2 = new IntPtr(sample); Console.WriteLine("IntPtr Address: {0:X}", address2.ToInt32()); checksum += address2.ToInt32(); DoublePointer address3 = new DoublePointer(address2); Console.WriteLine("DoublePointer Address (from IntPtr): {0:X}", address3.ToInt32()); checksum += address3.ToInt32(); DoublePointer address4 = new DoublePointer(address1); Console.WriteLine("DoublePointer Address (from Int32): {0:X}", address4.ToInt32()); checksum += address4.ToInt32(); int checksumDigest = checksum / 4; Assert.AreEqual(checksumDigest, address1); Assert.AreEqual(checksumDigest, address2.ToInt32()); Assert.AreEqual(checksumDigest, address3.ToInt32()); Assert.AreEqual(checksumDigest, address4.ToInt32()); }
public unsafe void AddressTest1() { double * sample = stackalloc double[4]; DoublePointer a = new DoublePointer(sample); DoublePointer b = (a + 1); Console.WriteLine("Address offset: {0}", b.ToInt32() - a.ToInt32()); Assert.AreEqual(sizeof(double), b.ToInt32() - a.ToInt32()); Assert.False(Object.ReferenceEquals(a, b)); // xPlatform's typed pointers are value type. DoublePointer c = new DoublePointer(sample + 1); DoublePointer d = (++c); Console.WriteLine("Address offset: {0}", d.ToInt32() - c.ToInt32()); Assert.AreEqual(0, d.ToInt32() - c.ToInt32()); Assert.False(Object.ReferenceEquals(c, d)); }