Пример #1
0
        public void TestMethodStruct()
        {
            Assert.AreEqual(false, new UnixTime32().Equals(null));
            Assert.AreEqual(new UnixTime32(), new UnixTime32());
            Assert.AreEqual(0, new UnixTime32().TimeStamp);
            Assert.AreEqual((UnixTime32)0, new UnixTime32());
            Assert.AreEqual(true, 0 == new UnixTime32().TimeStamp);
            Assert.AreEqual(new DateTime(1970, 1, 1), new UnixTime32().DateTime);

            unsafe
            {
                Assert.AreEqual(structSize, Marshal.SizeOf <UnixTime32>());
                Assert.AreEqual(structSize, sizeof(UnixTime32));
            }
            var ptr = Marshal.AllocHGlobal(100);

            Marshal.Copy(new byte[100], 0, ptr, 100);
            try
            {
                UnixTime32 now = UnixTime32.Now;
                Marshal.StructureToPtr(now, ptr, true);
                long value = (long)Marshal.ReadInt64(ptr);
                Assert.AreEqual(true, now.TimeStamp == value);
                var copy = Marshal.PtrToStructure <UnixTime32>(ptr);
                Assert.AreEqual(now.TimeStamp, copy.TimeStamp);
                Assert.AreEqual(now, copy);
                Assert.AreEqual((DateTime)now, (DateTime)copy);
                Assert.AreEqual(now.DateTime, copy.DateTime);
                Assert.AreEqual(now.GetHashCode(), copy.TimeStamp.GetHashCode());
                Assert.AreEqual(now.GetHashCode(), copy.GetHashCode());
            }
            finally
            {
                Marshal.FreeHGlobal(ptr);
            }
        }