예제 #1
0
        public void GetFieldsInfo_ForExplicitLayoutValueType_ReturnsCorrectOffsets()
        {
            var valueType  = MockExplicitValueType(MockField(typeof(byte), 3), MockField(typeof(string), 3));
            var fieldsInfo = ILOp.GetFieldsInfo(valueType, false);

            Assert.That(fieldsInfo, Has.Count.EqualTo(2));

            Assert.That(fieldsInfo[0].Offset, Is.EqualTo(3));
            Assert.That(fieldsInfo[1].Offset, Is.EqualTo(3));
        }
예제 #2
0
        public void GetFieldsInfo_ForSequentialLayoutValueType_ReturnsCorrectOffsets()
        {
            var valueType  = MockDefaultValueType(MockField(typeof(byte)), MockField(typeof(string)));
            var fieldsInfo = ILOp.GetFieldsInfo(valueType, false);

            Assert.AreEqual(fieldsInfo.Count, 2);

            Assert.AreEqual(fieldsInfo[0].Offset, 0);
            Assert.AreEqual(fieldsInfo[1].Offset, 4);
        }
예제 #3
0
        public void GetFieldsInfo_ForSequentialLayoutValueTypeWithPackEqualTo2_ReturnsCorrectOffsets()
        {
            var valueType  = MockSequentialValueType(2, MockField(typeof(byte)), MockField(typeof(string)));
            var fieldsInfo = ILOp.GetFieldsInfo(valueType, false);

            Assert.That(fieldsInfo, Has.Count.EqualTo(2));

            Assert.That(fieldsInfo[0].Offset, Is.EqualTo(0));
            Assert.That(fieldsInfo[1].Offset, Is.EqualTo(2));
        }
예제 #4
0
        public void GetFieldsInfo_ForColorStruct_ReturnsCorrectOffsets()
        {
            var fieldsInfo = ILOp.GetFieldsInfo(typeof(Color), false);

            Assert.That(fieldsInfo, Has.Count.EqualTo(4));

            Assert.That(fieldsInfo[0].Offset, Is.EqualTo(0));
            Assert.That(fieldsInfo[1].Offset, Is.EqualTo(8));
            Assert.That(fieldsInfo[2].Offset, Is.EqualTo(16));
            Assert.That(fieldsInfo[3].Offset, Is.EqualTo(18));
        }
예제 #5
0
 public unsafe void TestFieldOrderingOfDataLookupEntry()
 {
     ILOp.mPlugManager = new PlugManager(delegate(Exception exception)
     {
         throw new Exception("Error: " + exception.Message, exception);
     });
     using (var xDbg = new DebugInfo(":memory:", true))
     {
         try
         {
             var xInfo = ILOp.GetFieldsInfo(typeof(DataLookupEntry), false).OrderBy(i => i.Offset).ToArray();
             Assert.IsNotNull(xInfo);
             Assert.AreEqual(3, xInfo.Length);
             Assert.AreEqual(nameof(DataLookupEntry.DataBlock), xInfo[0].Field.Name);
         }
         finally
         {
             ILOp.mPlugManager = null;
         }
     }
 }