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)); }
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); }
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)); }
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)); }
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; } } }