From e2c874937c06d5833ae27393c46494a9ad92fece Mon Sep 17 00:00:00 2001 From: Sander Hautvast Date: Tue, 10 Nov 2020 21:57:39 +0100 Subject: [PATCH] Added some tests --- .../beejava/ConstantPoolUniquenessTests.java | 13 +++++++++ src/test/java/nl/sander/beejava/TestData.java | 28 ++++++++++++++++--- 2 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 src/test/java/nl/sander/beejava/ConstantPoolUniquenessTests.java diff --git a/src/test/java/nl/sander/beejava/ConstantPoolUniquenessTests.java b/src/test/java/nl/sander/beejava/ConstantPoolUniquenessTests.java new file mode 100644 index 0000000..6b71407 --- /dev/null +++ b/src/test/java/nl/sander/beejava/ConstantPoolUniquenessTests.java @@ -0,0 +1,13 @@ +package nl.sander.beejava; + +import nl.sander.beejava.api.BeeClass; +import org.junit.jupiter.api.Test; + +public class ConstantPoolUniquenessTests { + @Test + public void test(){ + BeeClass someClass = TestData.createClassWithTwoReferencesToSomeClass(); + CompiledClass compiledClass = Compiler.compile(someClass); + BytecodeGenerator.generate(compiledClass); + } +} diff --git a/src/test/java/nl/sander/beejava/TestData.java b/src/test/java/nl/sander/beejava/TestData.java index 00c3a86..3bc1efb 100644 --- a/src/test/java/nl/sander/beejava/TestData.java +++ b/src/test/java/nl/sander/beejava/TestData.java @@ -34,6 +34,26 @@ public class TestData { .build(); } + public static BeeClass createClassWithTwoReferencesToSomeClass() { + BeeMethod print1 = BeeMethod.builder() + .withAccessFlags(MethodAccessFlag.PUBLIC) + .withCode( + line(0, GET, "java.lang.System","out"), + line(1, LD_CONST, "1"), + line(2, INVOKE, "java.io.PrintStream", "println", "(java.lang.String)"), + line(3, RETURN)) + .build(); + + return BeeClass.builder() + .withClassFileVersion(Version.V14) + .withPackage("nl.sander.beejava.test") + .withAccessFlags(PUBLIC) + .withSimpleName("ClassWithReferences") + .withConstructors(createConstructor()) // There's no default constructor in beejava. The user must always add them + .withMethods(print1) + .build(); + } + public static BeeClass createClassWithIntField() { BeeField intField = BeeField.builder() .withAccessFlags(FieldAccessFlag.PRIVATE) @@ -47,10 +67,10 @@ public class TestData { .withAccessFlags(MethodAccessFlag.PUBLIC) .withFormalParameters(intValueParameter) .withCode( - line(0, LOAD, Ref.THIS), + line(0, LD_VAR, Ref.THIS), line(1, INVOKE, Ref.SUPER, "", "()"), - line(2, LOAD, Ref.THIS), - line(3, LOAD, intValueParameter), + line(2, LD_VAR, Ref.THIS), + line(3, LD_VAR, intValueParameter), line(4, PUT, intField), line(5, RETURN)) .build(); @@ -70,7 +90,7 @@ public class TestData { return BeeConstructor.builder() .withAccessFlags(MethodAccessFlag.PUBLIC) .withCode( - line(0, LOAD, Ref.THIS), + line(0, LD_VAR, Ref.THIS), line(1, INVOKE, Ref.SUPER, "", "()"), line(5, RETURN)) .build();