diff --git a/src/test/java/com/openosrs/injector/TestInjection.java b/src/test/java/com/openosrs/injector/TestInjection.java new file mode 100644 index 0000000..3dd9552 --- /dev/null +++ b/src/test/java/com/openosrs/injector/TestInjection.java @@ -0,0 +1,20 @@ +package com.openosrs.injector; + +import com.openosrs.injector.injection.InjectData; +import com.openosrs.injector.injectors.Injector; +import com.openosrs.injector.rsapi.RSApi; +import net.runelite.asm.ClassGroup; + +public class TestInjection extends InjectData +{ + public TestInjection(ClassGroup vanilla, ClassGroup deobfuscated, ClassGroup mixins, RSApi rsApi) + { + super(vanilla, deobfuscated, mixins, rsApi); + } + + @Override + public void runChildInjector(Injector injector) throws Injexception + { + injector.inject(); + } +} diff --git a/src/test/java/com/openosrs/injector/injectors/raw/DrawAfterWidgetsTest.java b/src/test/java/com/openosrs/injector/injectors/raw/DrawAfterWidgetsTest.java new file mode 100644 index 0000000..618a756 --- /dev/null +++ b/src/test/java/com/openosrs/injector/injectors/raw/DrawAfterWidgetsTest.java @@ -0,0 +1,59 @@ +package com.openosrs.injector.injectors.raw; + +import com.google.common.io.ByteStreams; +import com.openosrs.injector.TestInjection; +import com.openosrs.injector.injection.InjectData; +import com.openosrs.injector.rsapi.RSApi; +import net.runelite.asm.ClassFile; +import net.runelite.asm.ClassGroup; +import net.runelite.deob.util.JarUtil; +import org.junit.Test; + +public class DrawAfterWidgetsTest +{ + @Test + public void testInjectDrawWidgetsRev160() throws Exception + { + // Rev 160 does not have the drawWidgets call inlined + + ClassFile deobClient = JarUtil.loadClass(ByteStreams.toByteArray(getClass().getResourceAsStream("/drawafterwidgets/Client_deob160.class"))); + ClassFile deobRasterizer = JarUtil.loadClass(ByteStreams.toByteArray(getClass().getResourceAsStream("/drawafterwidgets/Rasterizer2D_deob160.class"))); + + ClassGroup deob = new ClassGroup(); + deob.addClass(deobClient); + deob.addClass(deobRasterizer); + + ClassFile obClient = JarUtil.loadClass(ByteStreams.toByteArray(getClass().getResourceAsStream("/drawafterwidgets/Client_ob160.class"))); + ClassFile obRasterizer = JarUtil.loadClass(ByteStreams.toByteArray(getClass().getResourceAsStream("/drawafterwidgets/Rasterizer2D_ob160.class"))); + + ClassGroup vanilla = new ClassGroup(); + vanilla.addClass(obClient); + vanilla.addClass(obRasterizer); + + InjectData inject = new TestInjection(vanilla, deob, new ClassGroup(), new RSApi()); + new DrawAfterWidgets(inject).inject(); + } + + @Test + public void testInjectDrawWidgetsRev180() throws Exception + { + // Rev 180 has the drawWidgets call inlined + + ClassFile deobClient = JarUtil.loadClass(ByteStreams.toByteArray(getClass().getResourceAsStream("/drawafterwidgets/Client_deob180.class"))); + ClassFile deobRasterizer = JarUtil.loadClass(ByteStreams.toByteArray(getClass().getResourceAsStream("/drawafterwidgets/Rasterizer2D_deob180.class"))); + + ClassGroup deob = new ClassGroup(); + deob.addClass(deobClient); + deob.addClass(deobRasterizer); + + ClassFile obClient = JarUtil.loadClass(ByteStreams.toByteArray(getClass().getResourceAsStream("/drawafterwidgets/Client_ob180.class"))); + ClassFile obRasterizer = JarUtil.loadClass(ByteStreams.toByteArray(getClass().getResourceAsStream("/drawafterwidgets/Rasterizer2D_ob180.class"))); + + ClassGroup vanilla = new ClassGroup(); + vanilla.addClass(obClient); + vanilla.addClass(obRasterizer); + + InjectData inject = new TestInjection(vanilla, deob, new ClassGroup(), new RSApi()); + new DrawAfterWidgets(inject).inject(); + } +} diff --git a/src/test/resources/drawafterwidgets/Client_deob160.class b/src/test/resources/drawafterwidgets/Client_deob160.class new file mode 100644 index 0000000..e1267ab Binary files /dev/null and b/src/test/resources/drawafterwidgets/Client_deob160.class differ diff --git a/src/test/resources/drawafterwidgets/Client_deob180.class b/src/test/resources/drawafterwidgets/Client_deob180.class new file mode 100644 index 0000000..d950650 Binary files /dev/null and b/src/test/resources/drawafterwidgets/Client_deob180.class differ diff --git a/src/test/resources/drawafterwidgets/Client_ob160.class b/src/test/resources/drawafterwidgets/Client_ob160.class new file mode 100644 index 0000000..9ae3013 Binary files /dev/null and b/src/test/resources/drawafterwidgets/Client_ob160.class differ diff --git a/src/test/resources/drawafterwidgets/Client_ob180.class b/src/test/resources/drawafterwidgets/Client_ob180.class new file mode 100644 index 0000000..2c65c24 Binary files /dev/null and b/src/test/resources/drawafterwidgets/Client_ob180.class differ diff --git a/src/test/resources/drawafterwidgets/Rasterizer2D_deob160.class b/src/test/resources/drawafterwidgets/Rasterizer2D_deob160.class new file mode 100644 index 0000000..90fa97c Binary files /dev/null and b/src/test/resources/drawafterwidgets/Rasterizer2D_deob160.class differ diff --git a/src/test/resources/drawafterwidgets/Rasterizer2D_deob180.class b/src/test/resources/drawafterwidgets/Rasterizer2D_deob180.class new file mode 100644 index 0000000..a545ad9 Binary files /dev/null and b/src/test/resources/drawafterwidgets/Rasterizer2D_deob180.class differ diff --git a/src/test/resources/drawafterwidgets/Rasterizer2D_ob160.class b/src/test/resources/drawafterwidgets/Rasterizer2D_ob160.class new file mode 100644 index 0000000..5197519 Binary files /dev/null and b/src/test/resources/drawafterwidgets/Rasterizer2D_ob160.class differ diff --git a/src/test/resources/drawafterwidgets/Rasterizer2D_ob180.class b/src/test/resources/drawafterwidgets/Rasterizer2D_ob180.class new file mode 100644 index 0000000..441fe42 Binary files /dev/null and b/src/test/resources/drawafterwidgets/Rasterizer2D_ob180.class differ