예제 #1
0
        public void MASTER_STRUCTFieldsRecursive()
        {
            var structLayout = UnsafeLayout.GetLayout <MASTER_STRUCT>(recursive: true, new List <Type> {
                typeof(Guid)
            });

            Assert.AreEqual(7, structLayout.Count());
        }
        public void UnsafeStructRecursive()
        {
            TypeLayout.PrintLayout <WithNestedUnsafeStruct>();
            var structLayout = UnsafeLayout.GetLayout <WithNestedUnsafeStruct>();

            Assert.AreEqual(1, structLayout.Count());
            Assert.AreEqual(0, structLayout[0].Offset);
            Assert.AreEqual(33, structLayout[0].Size);
        }
        protected void AssertNonRecursiveWithPadding <T>() where T : struct
        {
            TypeLayout.PrintLayout <T>();
            var structLayout = UnsafeLayout.GetLayout <T>(recursive: false);
            var typeLayout   = TypeLayout.GetLayout <T>(includePaddings: true);

            CollectionAssert.AreEquivalent(typeLayout.Fields, structLayout);
            Assert.AreEqual(Unsafe.SizeOf <T>(), typeLayout.Size);
        }
예제 #4
0
 public void UnsafeLayoutPaddingsRecursiveStruct()
 {
     UnsafeLayout.GetLayout <VeryVeryComplexStruct>(recursive: true);
 }