C++: CppTypes add enumerators & indexers, flattened fields, force sorting, update test

This commit is contained in:
Katy Coe
2020-06-29 18:24:29 +02:00
parent 46f2b9eb53
commit 4ca640d551
2 changed files with 107 additions and 4 deletions

View File

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