From d1cfa46775491a4078dd29de3b5c73f4b9abd5aa Mon Sep 17 00:00:00 2001 From: Katy Coe Date: Sat, 9 Nov 2019 22:47:21 +0100 Subject: [PATCH] Tests: Update Methods tests --- .../GameAssembly-Methods-x64.cs | 102 ++++++++++++++++- .../GameAssembly-Methods-x86.cs | 102 ++++++++++++++++- Il2CppTests/TestExpectedResults/Methods.cs | 108 +++++++++++++++++- Il2CppTests/TestSources/Methods.cs | 54 ++++++++- 4 files changed, 358 insertions(+), 8 deletions(-) diff --git a/Il2CppTests/TestExpectedResults/GameAssembly-Methods-x64.cs b/Il2CppTests/TestExpectedResults/GameAssembly-Methods-x64.cs index 3acb9c4..de87c12 100644 --- a/Il2CppTests/TestExpectedResults/GameAssembly-Methods-x64.cs +++ b/Il2CppTests/TestExpectedResults/GameAssembly-Methods-x64.cs @@ -8,8 +8,108 @@ internal class Test // TypeDefIndex: 1811 public Test(); // 0x00000001800E2000 // Methods - public void ParameterlessMethod(); // 0x00000001800EA7B0 + public virtual void VirtualMethod(); // 0x00000001800EA7B0 public int ValueTypeReturnMethod(); // 0x00000001800EA8C0 public StringBuilder ReferenceTypeReturnMethod(); // 0x00000001803E0E50 } +// Namespace: Il2CppTests.TestSources +internal abstract class TestAbstract // TypeDefIndex: 1812 +{ + // Constructors + protected TestAbstract(); // 0x00000001800E2000 + + // Methods + public abstract void AbstractMethod(); +} + +// Namespace: Il2CppTests.TestSources +internal class TestOverride : Test // TypeDefIndex: 1813 +{ + // Constructors + public TestOverride(); // 0x00000001800E2000 + + // Methods + public override void VirtualMethod(); // 0x00000001800EA7B0 +} + +// Namespace: Il2CppTests.TestSources +internal class TestHideVirtual : Test // TypeDefIndex: 1814 +{ + // Constructors + public TestHideVirtual(); // 0x00000001800E2000 + + // Methods + public new void VirtualMethod(); // 0x00000001800EA7B0 +} + +// Namespace: Il2CppTests.TestSources +internal class TestHideOverride : TestOverride // TypeDefIndex: 1815 +{ + // Constructors + public TestHideOverride(); // 0x00000001800E2000 + + // Methods + public new void VirtualMethod(); // 0x00000001800EA7B0 +} + +// Namespace: Il2CppTests.TestSources +internal class TestOverrideAbstract : TestAbstract // TypeDefIndex: 1816 +{ + // Constructors + public TestOverrideAbstract(); // 0x00000001800E2000 + + // Methods + public override void AbstractMethod(); // 0x00000001800EA7B0 +} + +// Namespace: Il2CppTests.TestSources +internal class TestHideAbstractOverride : TestOverrideAbstract // TypeDefIndex: 1817 +{ + // Constructors + public TestHideAbstractOverride(); // 0x00000001800E2000 + + // Methods + public new void AbstractMethod(); // 0x00000001800EA7B0 +} + +// Namespace: Il2CppTests.TestSources +internal class TestHideVirtualAndNewVirtual : Test // TypeDefIndex: 1818 +{ + // Constructors + public TestHideVirtualAndNewVirtual(); // 0x00000001800E2000 + + // Methods + public virtual new void VirtualMethod(); // 0x00000001800EA7B0 +} + +// Namespace: Il2CppTests.TestSources +internal class TestHideOverrideAndNewVirtual : TestOverride // TypeDefIndex: 1819 +{ + // Constructors + public TestHideOverrideAndNewVirtual(); // 0x00000001800E2000 + + // Methods + public virtual new void VirtualMethod(); // 0x00000001800EA7B0 +} + +// Namespace: Il2CppTests.TestSources +internal abstract class TestAbstractNew : TestOverride // TypeDefIndex: 1820 +{ + // Constructors + protected TestAbstractNew(); // 0x00000001800E2000 + + // Methods + public abstract new void VirtualMethod(); +} + +// Namespace: Il2CppTests.TestSources +internal class TestNewNonVirtualMethod : Test // TypeDefIndex: 1821 +{ + // Constructors + public TestNewNonVirtualMethod(); // 0x00000001800E2000 + + // Methods + public new int ValueTypeReturnMethod(); // 0x0000000180119A50 +} + diff --git a/Il2CppTests/TestExpectedResults/GameAssembly-Methods-x86.cs b/Il2CppTests/TestExpectedResults/GameAssembly-Methods-x86.cs index 4dde7bd..cfa8d65 100644 --- a/Il2CppTests/TestExpectedResults/GameAssembly-Methods-x86.cs +++ b/Il2CppTests/TestExpectedResults/GameAssembly-Methods-x86.cs @@ -8,8 +8,108 @@ internal class Test // TypeDefIndex: 1811 public Test(); // 0x100BF000 // Methods - public void ParameterlessMethod(); // 0x100C5530 + public virtual void VirtualMethod(); // 0x100C5530 public int ValueTypeReturnMethod(); // 0x100C5600 public StringBuilder ReferenceTypeReturnMethod(); // 0x1034DA60 } +// Namespace: Il2CppTests.TestSources +internal abstract class TestAbstract // TypeDefIndex: 1812 +{ + // Constructors + protected TestAbstract(); // 0x100BF000 + + // Methods + public abstract void AbstractMethod(); +} + +// Namespace: Il2CppTests.TestSources +internal class TestOverride : Test // TypeDefIndex: 1813 +{ + // Constructors + public TestOverride(); // 0x100BF000 + + // Methods + public override void VirtualMethod(); // 0x100C5530 +} + +// Namespace: Il2CppTests.TestSources +internal class TestHideVirtual : Test // TypeDefIndex: 1814 +{ + // Constructors + public TestHideVirtual(); // 0x100BF000 + + // Methods + public new void VirtualMethod(); // 0x100C5530 +} + +// Namespace: Il2CppTests.TestSources +internal class TestHideOverride : TestOverride // TypeDefIndex: 1815 +{ + // Constructors + public TestHideOverride(); // 0x100BF000 + + // Methods + public new void VirtualMethod(); // 0x100C5530 +} + +// Namespace: Il2CppTests.TestSources +internal class TestOverrideAbstract : TestAbstract // TypeDefIndex: 1816 +{ + // Constructors + public TestOverrideAbstract(); // 0x100BF000 + + // Methods + public override void AbstractMethod(); // 0x100C5530 +} + +// Namespace: Il2CppTests.TestSources +internal class TestHideAbstractOverride : TestOverrideAbstract // TypeDefIndex: 1817 +{ + // Constructors + public TestHideAbstractOverride(); // 0x100BF000 + + // Methods + public new void AbstractMethod(); // 0x100C5530 +} + +// Namespace: Il2CppTests.TestSources +internal class TestHideVirtualAndNewVirtual : Test // TypeDefIndex: 1818 +{ + // Constructors + public TestHideVirtualAndNewVirtual(); // 0x100BF000 + + // Methods + public virtual new void VirtualMethod(); // 0x100C5530 +} + +// Namespace: Il2CppTests.TestSources +internal class TestHideOverrideAndNewVirtual : TestOverride // TypeDefIndex: 1819 +{ + // Constructors + public TestHideOverrideAndNewVirtual(); // 0x100BF000 + + // Methods + public virtual new void VirtualMethod(); // 0x100C5530 +} + +// Namespace: Il2CppTests.TestSources +internal abstract class TestAbstractNew : TestOverride // TypeDefIndex: 1820 +{ + // Constructors + protected TestAbstractNew(); // 0x100BF000 + + // Methods + public abstract new void VirtualMethod(); +} + +// Namespace: Il2CppTests.TestSources +internal class TestNewNonVirtualMethod : Test // TypeDefIndex: 1821 +{ + // Constructors + public TestNewNonVirtualMethod(); // 0x100BF000 + + // Methods + public new int ValueTypeReturnMethod(); // 0x100EF660 +} + diff --git a/Il2CppTests/TestExpectedResults/Methods.cs b/Il2CppTests/TestExpectedResults/Methods.cs index 4aa5f49..56c34a2 100644 --- a/Il2CppTests/TestExpectedResults/Methods.cs +++ b/Il2CppTests/TestExpectedResults/Methods.cs @@ -5,11 +5,111 @@ internal class Test // TypeDefIndex: 1811 { // Constructors - public Test(); // 0x00560FF8 + public Test(); // 0x00561178 // Methods - public void ParameterlessMethod(); // 0x00560F80 - public int ValueTypeReturnMethod(); // 0x00560F84 - public StringBuilder ReferenceTypeReturnMethod(); // 0x00560F8C + public virtual void VirtualMethod(); // 0x00561100 + public int ValueTypeReturnMethod(); // 0x00561104 + public StringBuilder ReferenceTypeReturnMethod(); // 0x0056110C +} + +// Namespace: Il2CppTests.TestSources +internal abstract class TestAbstract // TypeDefIndex: 1812 +{ + // Constructors + protected TestAbstract(); // 0x00561180 + + // Methods + public abstract void AbstractMethod(); +} + +// Namespace: Il2CppTests.TestSources +internal class TestOverride : Test // TypeDefIndex: 1813 +{ + // Constructors + public TestOverride(); // 0x00561190 + + // Methods + public override void VirtualMethod(); // 0x005611EC +} + +// Namespace: Il2CppTests.TestSources +internal class TestHideVirtual : Test // TypeDefIndex: 1814 +{ + // Constructors + public TestHideVirtual(); // 0x005611C8 + + // Methods + public new void VirtualMethod(); // 0x005611C4 +} + +// Namespace: Il2CppTests.TestSources +internal class TestHideOverride : TestOverride // TypeDefIndex: 1815 +{ + // Constructors + public TestHideOverride(); // 0x005611B0 + + // Methods + public new void VirtualMethod(); // 0x005611AC +} + +// Namespace: Il2CppTests.TestSources +internal class TestOverrideAbstract : TestAbstract // TypeDefIndex: 1816 +{ + // Constructors + public TestOverrideAbstract(); // 0x005611A4 + + // Methods + public override void AbstractMethod(); // 0x005611F0 +} + +// Namespace: Il2CppTests.TestSources +internal class TestHideAbstractOverride : TestOverrideAbstract // TypeDefIndex: 1817 +{ + // Constructors + public TestHideAbstractOverride(); // 0x0056119C + + // Methods + public new void AbstractMethod(); // 0x00561198 +} + +// Namespace: Il2CppTests.TestSources +internal class TestHideVirtualAndNewVirtual : Test // TypeDefIndex: 1818 +{ + // Constructors + public TestHideVirtualAndNewVirtual(); // 0x005611D4 + + // Methods + public virtual new void VirtualMethod(); // 0x005611D0 +} + +// Namespace: Il2CppTests.TestSources +internal class TestHideOverrideAndNewVirtual : TestOverride // TypeDefIndex: 1819 +{ + // Constructors + public TestHideOverrideAndNewVirtual(); // 0x005611BC + + // Methods + public virtual new void VirtualMethod(); // 0x005611B8 +} + +// Namespace: Il2CppTests.TestSources +internal abstract class TestAbstractNew : TestOverride // TypeDefIndex: 1820 +{ + // Constructors + protected TestAbstractNew(); // 0x00561188 + + // Methods + public abstract new void VirtualMethod(); +} + +// Namespace: Il2CppTests.TestSources +internal class TestNewNonVirtualMethod : Test // TypeDefIndex: 1821 +{ + // Constructors + public TestNewNonVirtualMethod(); // 0x005611E4 + + // Methods + public new int ValueTypeReturnMethod(); // 0x005611DC } diff --git a/Il2CppTests/TestSources/Methods.cs b/Il2CppTests/TestSources/Methods.cs index c5c7f2e..52e4575 100644 --- a/Il2CppTests/TestSources/Methods.cs +++ b/Il2CppTests/TestSources/Methods.cs @@ -10,8 +10,8 @@ namespace Il2CppTests.TestSources { internal class Test { - // A parameter-less method - public void ParameterlessMethod() { } + // A virtual method + public virtual void VirtualMethod() { } // Method with value type return type public int ValueTypeReturnMethod() => 0; @@ -19,4 +19,54 @@ namespace Il2CppTests.TestSources // Method with reference type return type public StringBuilder ReferenceTypeReturnMethod() => new StringBuilder(); } + + internal abstract class TestAbstract + { + public abstract void AbstractMethod(); + } + + internal class TestOverride : Test + { + public override void VirtualMethod() { } + } + + internal class TestHideVirtual : Test + { + public new void VirtualMethod() { } + } + + internal class TestHideOverride : TestOverride + { + public new void VirtualMethod() { } + } + + internal class TestOverrideAbstract : TestAbstract + { + public override void AbstractMethod() { } + } + + internal class TestHideAbstractOverride : TestOverrideAbstract + { + public new void AbstractMethod() { } + } + + internal class TestHideVirtualAndNewVirtual : Test + { + public new virtual void VirtualMethod() { } + } + + internal class TestHideOverrideAndNewVirtual : TestOverride + { + public new virtual void VirtualMethod() { } + } + + internal abstract class TestAbstractNew : TestOverride + { + public abstract new void VirtualMethod(); + } + + internal class TestNewNonVirtualMethod : Test + { + public new int ValueTypeReturnMethod() => 1; + } }