public void TestGenericTypes() { // Arrange // We're currently in IlCppTests\bin\Debug\netcoreapp3.0 or similar var testPath = Path.GetFullPath(Directory.GetCurrentDirectory() + @"\..\..\..\TestBinaries\GenericTypes"); // Build model var inspectors = Il2CppInspector.LoadFromFile(testPath + @"\GenericTypes.so", testPath + @"\global-metadata.dat"); var model = new Il2CppModel(inspectors[0]); var asm = model.GetAssembly("GenericTypes.dll"); // Act TypeInfo tDerived = asm.GetType("Il2CppTests.TestSources.Derived`1"); TypeInfo tDerivedBase = tDerived.BaseType; // TODO: array of Derived<int> // TypeInfo tDerivedArray TypeInfo tT = asm.GetType("Il2CppTests.TestSources.Base`2").GenericTypeParameters[0]; TypeInfo tF = tDerived.GetField("F").FieldType; TypeInfo tNested = asm.GetType("Il2CppTests.TestSources.Derived`1+Nested"); DisplayGenericType(tDerived, "Derived<V>"); DisplayGenericType(tDerivedBase, "Base type of Derived<V>"); //DisplayGenericType(tDerivedArray, "Array of Derived<int>"); DisplayGenericType(tT, "Type parameter T from Base<T>"); DisplayGenericType(tF, "Field type, G<Derived<V>>"); DisplayGenericType(tNested, "Nested type in Derived<V>"); // Assert var checks = new[] {
public void TestGenericTypes() { // Arrange // We're currently in IlCppTests\bin\Debug\netcoreapp3.0 or similar var testPath = Path.GetFullPath(Directory.GetCurrentDirectory() + @"\..\..\..\TestBinaries\GenericTypes"); // Build model var inspectors = Il2CppInspector.LoadFromFile(testPath + @"\GenericTypes.so", testPath + @"\global-metadata.dat"); var model = new Il2CppModel(inspectors[0]); var asm = model.GetAssembly("GenericTypes.dll"); // Act TypeInfo tBase = asm.GetType("Il2CppTests.TestSources.Base`2"); TypeInfo tDerived = asm.GetType("Il2CppTests.TestSources.Derived`1"); TypeInfo tDerivedBase = tDerived.BaseType; TypeInfo tDerivedArray = model.GetType("Il2CppTests.TestSources.Derived`1[System.Int32][]"); TypeInfo tT = tBase.GenericTypeParameters[0]; TypeInfo tU = tBase.GenericTypeParameters[1]; TypeInfo tF = tDerived.GetField("F").FieldType; TypeInfo tNested = asm.GetType("Il2CppTests.TestSources.Derived`1+Nested"); TypeInfo tNG = asm.GetType("Il2CppTests.TestSources.NonGeneric"); TypeInfo tGCWM = asm.GetType("Il2CppTests.TestSources.GenericClassWithMethods`1"); TypeInfo tCGM = asm.GetType("Il2CppTests.TestSources.CallGenericMethods"); MethodInfo mGMDINGC = tNG.GetMethod("GenericMethodDefinitionInNonGenericClass"); MethodInfo mNGMIGC = tGCWM.GetMethod("NonGenericMethodInGenericClass"); MethodInfo mNGMIGC2 = tGCWM.GetMethod("NonGenericMethodInGenericClass2"); MethodInfo mGMDIGC = tGCWM.GetMethod("GenericMethodDefinitionInGenericClass"); MethodInfo mGMDIGC2 = tGCWM.GetMethod("GenericMethodDefinitionInGenericClass2"); MethodBase mGMDINGC_closed = model.GetGenericMethod( "Il2CppTests.TestSources.NonGeneric.GenericMethodDefinitionInNonGenericClass", model.GetType("System.Single")); MethodBase mGMDIGC_closed = model.GetGenericMethod( "Il2CppTests.TestSources.GenericClassWithMethods`1.GenericMethodDefinitionInGenericClass", model.GetType("System.Int32")); MethodBase mGMDIGC2_closed = model.GetGenericMethod( "Il2CppTests.TestSources.GenericClassWithMethods`1.GenericMethodDefinitionInGenericClass2", model.GetType("System.String")); DisplayGenericType(tBase, "Generic type definition Base<T, U>"); DisplayGenericType(tDerived, "Derived<V>"); DisplayGenericType(tDerivedBase, "Base type of Derived<V>"); DisplayGenericType(tDerivedArray, "Array of Derived<int>"); DisplayGenericType(tT, "Type parameter T from Base<T,U>"); DisplayGenericType(tU, "Type parameter U from Base<T,U>"); DisplayGenericType(tF, "Field type, G<Derived<V>>"); DisplayGenericType(tNested, "Nested type in Derived<V>"); // Assert var typeChecks = new[] {
public void TestNames() { // Arrange // We're currently in IlCppTests\bin\Debug\netcoreapp3.0 or similar var testPath = Path.GetFullPath(Directory.GetCurrentDirectory() + @"\..\..\..\TestBinaries\References-ARMv7"); // Build model var inspectors = Il2CppInspector.LoadFromFile(testPath + @"\References-ARMv7.so", testPath + @"\global-metadata.dat"); var model = new Il2CppModel(inspectors[0]); var asm = model.GetAssembly("References.dll"); // Act var t = asm.GetType("Il2CppTests.TestSources.Test"); var m1 = t.GetMethod("MethodWithGenericAndClassRefs"); var m2 = t.GetMethod("MethodWithInRefOut"); var p1 = m1.DeclaredParameters; var p2 = m2.DeclaredParameters; // Assert var checks = new[] {