C++: CppTypes add enumerators & indexers, flattened fields, force sorting, update test
This commit is contained in:
@@ -35,6 +35,53 @@ namespace Il2CppInspector
|
||||
foreach (var cppType in cppTypes.Types)
|
||||
Debug.WriteLine("// " + cppType.Key + "\n" + cppType.Value + "\n");
|
||||
}
|
||||
|
||||
// Do a few sanity checks taken from real applications
|
||||
// NOTE: Does not provide full code coverage!
|
||||
|
||||
var cppTypes2 = CppTypes.FromUnityVersion(new UnityVersion("2019.3.1f1"), 64);
|
||||
|
||||
CppComplexType ct;
|
||||
CppField field;
|
||||
|
||||
// Un-nested class
|
||||
ct = (CppComplexType) cppTypes2["Il2CppClass"];
|
||||
|
||||
field = ct[0xD8].First();
|
||||
|
||||
Assert.AreEqual(field.Name, "cctor_finished");
|
||||
|
||||
field = ct[0x128].First();
|
||||
|
||||
Assert.AreEqual(field.Name, "vtable");
|
||||
|
||||
field = ct["cctor_finished"];
|
||||
|
||||
Assert.AreEqual(field.OffsetBytes, 0xD8);
|
||||
|
||||
field = ct["vtable"];
|
||||
|
||||
Assert.AreEqual(field.OffsetBytes, 0x128);
|
||||
|
||||
// Nested class
|
||||
ct = (CppComplexType) cppTypes2["Il2CppClass_Merged"];
|
||||
var fields = ct.Flattened;
|
||||
|
||||
field = fields[0xD8].First();
|
||||
|
||||
Assert.AreEqual(field.Name, "cctor_finished");
|
||||
|
||||
field = fields[0x128].First();
|
||||
|
||||
Assert.AreEqual(field.Name, "vtable");
|
||||
|
||||
field = fields["cctor_finished"];
|
||||
|
||||
Assert.AreEqual(field.OffsetBytes, 0xD8);
|
||||
|
||||
field = fields["vtable"];
|
||||
|
||||
Assert.AreEqual(field.OffsetBytes, 0x128);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user