diff --git a/pom.xml b/pom.xml index 4712163..631896f 100644 --- a/pom.xml +++ b/pom.xml @@ -23,6 +23,18 @@ 5.11.0-M2 test + + org.junit.platform + junit-platform-suite-engine + 1.11.0-M2 + test + + + org.junit.jupiter + junit-jupiter-api + 5.11.0-M2 + test + org.antlr antlr4-runtime @@ -44,18 +56,18 @@ 3.26.0 test - - org.junit.jupiter - junit-jupiter-api - 5.11.0-M2 - test - org.mockito mockito-core 5.11.0 test + + junit + junit + 4.13.1 + test + @@ -65,6 +77,11 @@ org.apache.maven.plugins maven-surefire-plugin 3.0.0-M5 + + + **/*Test.java + + maven-assembly-plugin diff --git a/src/test/Makefile b/src/test/Makefile index a19508b..44aa134 100644 --- a/src/test/Makefile +++ b/src/test/Makefile @@ -10,7 +10,7 @@ compile-javac: compile-raupenpiler: cd ../.. ; mvn -DskipTests install cd ../.. ; mvn exec:java -DgenJar=true -DgenClass=true -Dexec.mainClass="main.Main" -Dexec.args="'src/main/resources/input/CompilerInput.java' 'src/main/resources/output'" - cp ../main/resources/output/CompilerInput.class .java/resources/output/raupenpiler + # cp ../main/resources/output/CompilerInput.class .java/resources/output/raupenpiler test: compile-javac compile-raupenpiler test-javac test-raupenpiler @@ -38,8 +38,8 @@ clean: rm -f ../main/resources/logs/*.log # clean test/java/main folders from .class files for End-to-End tests rm -f ./java/main/*.class - # clean javac output from combinedFeatureTests - rm -f ./resources/input/combinedFeatureTests/*.class - rm -f ./resources/input/singleFeatureTests/*.class - rm -f ./resources/input/typedAstFeatureTests/*.class + # clean javac output from every folder + rm -f ./resources/input/*/*.class + # clean test results from maven surefire plugin + rm -f ../../target/surefire-reports/*.txt diff --git a/src/test/java/main/InputFilesTest.java b/src/test/java/main/InputFilesTest.java index 4529c9d..5d5e4a4 100644 --- a/src/test/java/main/InputFilesTest.java +++ b/src/test/java/main/InputFilesTest.java @@ -26,13 +26,17 @@ public class InputFilesTest { // Assert that the compiler is available assertNotNull(javac, "Java Compiler is not available"); - File folder1 = new File("src/test/resources/input/combinedFeatureTests"); - File folder2 = new File("src/test/resources/input/singleFeatureTests"); - File folder3 = new File("src/test/resources/input/typedAstFeatureTests"); + File combinedFeatureTests = new File("src/test/resources/input/combinedFeatureTests"); + File endabgabeTests = new File("src/test/resources/input/endabgabeTests"); + File singleFeatureSemanticTests = new File("src/test/resources/input/singleFeatureSemanticTests"); + File singleFeatureTests = new File("src/test/resources/input/singleFeatureTests"); + File typedAstFeatureTests = new File("src/test/resources/input/typedAstFeatureTests"); - List files = getJavaFilesFromDirectory(folder1); - files.addAll(getJavaFilesFromDirectory(folder2)); - files.addAll(getJavaFilesFromDirectory(folder3)); + List files = getJavaFilesFromDirectory(combinedFeatureTests); + // files.addAll(getJavaFilesFromDirectory(endabgabeTests)); + // files.addAll(getJavaFilesFromDirectory(singleFeatureSemanticTests)); + files.addAll(getJavaFilesFromDirectory(singleFeatureTests)); + // files.addAll(getJavaFilesFromDirectory(typedAstFeatureTests)); if (!files.isEmpty()) { for (File file : files) { diff --git a/src/test/java/main/MainTest.java b/src/test/java/main/MainTest.java index 24389bc..890f4cd 100644 --- a/src/test/java/main/MainTest.java +++ b/src/test/java/main/MainTest.java @@ -1,28 +1,25 @@ package main; -import org.junit.jupiter.api.Test; -import org.antlr.v4.runtime.CharStream; -import org.antlr.v4.runtime.CharStreams; - -import java.io.IOException; -import java.nio.file.Paths; - +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import parser.ParserTest; +import parser.ScannerTest; +import semantic.EndToTypedAstTest; +import semantic.SemanticTest; /** - * run every test: mvn test - * Nutzen dieser Klasse: Eigentlich nicht vorhanden, in der Main gibts nichts zu testen + * This class is a test suite that runs all the test classes in the project. + *

run: mvn test + *

check results in console or target/surefire-reports */ +@RunWith(Suite.class) +@Suite.SuiteClasses({ + InputFilesTest.class, + ScannerTest.class, + ParserTest.class, + SemanticTest.class, + EndToTypedAstTest.class +}) public class MainTest { - @Test - void test() { - CharStream codeCharStream = null; - try { - codeCharStream = CharStreams.fromPath(Paths.get("src/main/test/resources/CompilerInput.java")); - Main.compileFile(codeCharStream, "src/main/test/resources/output"); - } catch (IOException e) { - System.err.println("Error reading the file: " + e.getMessage()); - } - } + // This class remains empty, it is used only as a holder for the above annotations } - - diff --git a/src/test/java/semantic/SemanticTest.java b/src/test/java/semantic/SemanticTest.java index f406580..ac7393f 100644 --- a/src/test/java/semantic/SemanticTest.java +++ b/src/test/java/semantic/SemanticTest.java @@ -1,5 +1,441 @@ package semantic; +import ast.ASTNode; +import ast.ClassNode; +import ast.ProgramNode; +import ast.expressions.IExpressionNode; +import ast.expressions.unaryexpressions.MemberAccessNode; +import ast.expressions.unaryexpressions.UnaryNode; +import ast.members.ConstructorNode; +import ast.members.FieldNode; +import ast.members.MethodNode; +import ast.parameters.ParameterNode; +import ast.statementexpressions.AssignNode; +import ast.statementexpressions.AssignableNode; +import ast.statementexpressions.methodcallstatementnexpressions.MethodCallNode; +import ast.statements.BlockNode; +import ast.statements.ReturnNode; +import ast.type.AccessModifierNode; +import ast.type.EnumValueNode; +import ast.type.ValueNode; +import ast.type.type.BaseType; +import ast.type.type.TypeEnum; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import parser.Helper; + +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + public class SemanticTest { + @BeforeEach + public void setUp() { + SemanticAnalyzer.clearAnalyzer(); + } + + @Test + @DisplayName("Empty Class Test") + public void emptyClassTest() { + ClassNode emptyClass = Helper.generateEmptyClass("EmptyClass"); + ProgramNode abstractSyntaxTree = new ProgramNode(); + abstractSyntaxTree.addClass(emptyClass); + + ASTNode typedAst = SemanticAnalyzer.generateTast(abstractSyntaxTree); + for (Exception runtimeException : SemanticAnalyzer.errors) { + runtimeException.printStackTrace(); + } + assertTrue(SemanticAnalyzer.errors.isEmpty()); + assertNotNull(typedAst); + } + + + @Test + @DisplayName("Multiple Empty Classes Test") + public void multipleEmptyClassesTest() { + ClassNode class1 = Helper.generateEmptyClass("MultipleClasses"); + ClassNode class2 = Helper.generateEmptyClass("TestClass2"); + ProgramNode abstractSyntaxTree = new ProgramNode(); + abstractSyntaxTree.addClass(class1); + abstractSyntaxTree.addClass(class2); + + ASTNode typedAst = SemanticAnalyzer.generateTast(abstractSyntaxTree); + for (Exception runtimeException : SemanticAnalyzer.errors) { + runtimeException.printStackTrace(); + } + assertTrue(SemanticAnalyzer.errors.isEmpty()); + assertNotNull(typedAst); + } + + + @Test + @DisplayName("Empty Class Test with Constructor") + public void emptyClassWithConstructorTest() { + ClassNode class1 = Helper.generateEmptyClass("EmptyClassWithConstructor"); + ProgramNode abstractSyntaxTree = new ProgramNode(); + abstractSyntaxTree.addClass(class1); + + ASTNode typedAst = SemanticAnalyzer.generateTast(abstractSyntaxTree); + for (Exception runtimeException : SemanticAnalyzer.errors) { + runtimeException.printStackTrace(); + } + assertTrue(SemanticAnalyzer.errors.isEmpty()); + assertNotNull(typedAst); + } + + @Test + @DisplayName("Field Test") + public void fieldTest() { + ClassNode class1 = Helper.generateEmptyClass("Field"); + class1.addMember(new FieldNode(new AccessModifierNode("public"), new BaseType(TypeEnum.INT), "a")); + + ProgramNode abstractSyntaxTree = new ProgramNode(); + abstractSyntaxTree.addClass(class1); + + ASTNode typedAst = SemanticAnalyzer.generateTast(abstractSyntaxTree); + for (Exception runtimeException : SemanticAnalyzer.errors) { + runtimeException.printStackTrace(); + } + assertTrue(SemanticAnalyzer.errors.isEmpty()); + assertNotNull(typedAst); + } + + @Test + @DisplayName("Field Test with Accessmodifier") + public void fieldTestWithModifier() { + ClassNode class1 = Helper.generateEmptyClass("FieldWithAccessModifier"); + class1.addMember(new FieldNode(new AccessModifierNode("public"), new BaseType(TypeEnum.INT), "a")); + + ProgramNode abstractSyntaxTree = new ProgramNode(); + abstractSyntaxTree.addClass(class1); + + ASTNode typedAst = SemanticAnalyzer.generateTast(abstractSyntaxTree); + for (Exception runtimeException : SemanticAnalyzer.errors) { + runtimeException.printStackTrace(); + } + assertTrue(SemanticAnalyzer.errors.isEmpty()); + assertNotNull(typedAst); + } + + @Test + @DisplayName("Comments Ignore Test") + public void commentsIgnoreTest() { + ClassNode class1 = Helper.generateEmptyClass("Comments"); + class1.addMember(new FieldNode(new AccessModifierNode("private"), new BaseType(TypeEnum.INT), "a")); + + ProgramNode abstractSyntaxTree = new ProgramNode(); + abstractSyntaxTree.addClass(class1); + + ASTNode typedAst = SemanticAnalyzer.generateTast(abstractSyntaxTree); + for (Exception runtimeException : SemanticAnalyzer.errors) { + runtimeException.printStackTrace(); + } + assertTrue(SemanticAnalyzer.errors.isEmpty()); + assertNotNull(typedAst); + } + + @Test + @DisplayName("Constructor Parameter Test") + public void constructorParameterTest() { + BlockNode block = new BlockNode(); + block.addStatement(new ReturnNode(null)); + ConstructorNode constructor = new ConstructorNode("public", "ConstructorParameter", block); + constructor.addParameter(new ParameterNode(new BaseType(TypeEnum.INT), "a")); + constructor.addParameter(new ParameterNode(new BaseType(TypeEnum.INT), "b")); + + ClassNode class1 = new ClassNode("public", "ConstructorParameter"); + class1.addMember(constructor); + + ProgramNode abstractSyntaxTree = new ProgramNode(); + abstractSyntaxTree.addClass(class1); + + ASTNode typedAst = SemanticAnalyzer.generateTast(abstractSyntaxTree); + for (Exception runtimeException : SemanticAnalyzer.errors) { + runtimeException.printStackTrace(); + } + assertTrue(SemanticAnalyzer.errors.isEmpty()); + assertNotNull(typedAst); + } + + @Test + @DisplayName("This Dot Test") + public void thisDotTest() { + BlockNode block = new BlockNode(); + MemberAccessNode memberAccess = new MemberAccessNode(true); + memberAccess.addIdentifier("a"); + + AssignableNode assignable = new AssignableNode(memberAccess); + + ValueNode value = new ValueNode(EnumValueNode.INT_VALUE, "1"); + IExpressionNode expression = new UnaryNode(value); + + block.addStatement(new AssignNode(assignable, expression)); + block.addStatement(new ReturnNode(null)); + ConstructorNode constructor = new ConstructorNode("public", "ThisDot", block); + + ClassNode class1 = new ClassNode("public", "ThisDot"); + class1.addMember(new FieldNode(new AccessModifierNode("public"), new BaseType(TypeEnum.INT), "a")); + class1.addMember(constructor); + + ProgramNode abstractSyntaxTree = new ProgramNode(); + abstractSyntaxTree.addClass(class1); + + ASTNode typedAst = SemanticAnalyzer.generateTast(abstractSyntaxTree); + for (Exception runtimeException : SemanticAnalyzer.errors) { + runtimeException.printStackTrace(); + } + assertTrue(SemanticAnalyzer.errors.isEmpty()); + assertNotNull(typedAst); + } + + @Test + @DisplayName("Constructor This Dot Test") + public void constructorThisDotTest() { + BlockNode block = new BlockNode(); + MemberAccessNode memberAccess = new MemberAccessNode(true); + memberAccess.addIdentifier("a"); + + AssignableNode assignable = new AssignableNode(memberAccess); + + IExpressionNode expression = new UnaryNode("a"); + + block.addStatement(new AssignNode(assignable, expression)); + block.addStatement(new ReturnNode(null)); + ConstructorNode constructor = new ConstructorNode("public", "ConstructorThisDot", block); + constructor.addParameter(new ParameterNode(new BaseType(TypeEnum.INT), "a")); + + ClassNode class1 = new ClassNode("public", "ConstructorThisDot"); + class1.addMember(new FieldNode(new AccessModifierNode("private"), new BaseType(TypeEnum.INT), "a")); + class1.addMember(constructor); + + ProgramNode abstractSyntaxTree = new ProgramNode(); + abstractSyntaxTree.addClass(class1); + + ASTNode typedAst = SemanticAnalyzer.generateTast(abstractSyntaxTree); + for (Exception runtimeException : SemanticAnalyzer.errors) { + runtimeException.printStackTrace(); + } + assertTrue(SemanticAnalyzer.errors.isEmpty()); + assertNotNull(typedAst); + } + + @Test + @DisplayName("Void Methoden Test") + public void voidMethodenTest() { + ClassNode class1 = Helper.generateEmptyClass("VoidMethod"); + BlockNode block = new BlockNode(); + block.addStatement(new ReturnNode(null)); + class1.addMember(new MethodNode("public", null, true, "test", block)); + + ProgramNode abstractSyntaxTree = new ProgramNode(); + abstractSyntaxTree.addClass(class1); + + ASTNode typedAst = SemanticAnalyzer.generateTast(abstractSyntaxTree); + for (Exception runtimeException : SemanticAnalyzer.errors) { + runtimeException.printStackTrace(); + } + assertTrue(SemanticAnalyzer.errors.isEmpty()); + assertNotNull(typedAst); + } + + @Test + @DisplayName("Constructor Method call Test") + public void constructorMethodCallTest() { + BlockNode blockCon = new BlockNode(); + MemberAccessNode memberAccess = new MemberAccessNode(true); + memberAccess.addIdentifier("a"); + + AssignableNode assignable = new AssignableNode(memberAccess); + + IExpressionNode expression = new UnaryNode(new MethodCallNode(null, "testMethod")); + + blockCon.addStatement(new AssignNode(assignable, expression)); + blockCon.addStatement(new ReturnNode(null)); + ConstructorNode constructor = new ConstructorNode("public", "ConstructorMethodCall", blockCon); + + BlockNode blockMethod = new BlockNode(); + blockMethod.addStatement(new ReturnNode(new UnaryNode(new ValueNode(EnumValueNode.INT_VALUE, "1")))); + MethodNode method = new MethodNode("public", new BaseType(TypeEnum.INT), false, "testMethod", blockMethod); + + ClassNode class1 = new ClassNode("public", "ConstructorMethodCall"); + class1.addMember(new FieldNode(new AccessModifierNode("public"), new BaseType(TypeEnum.INT), "a")); + class1.addMember(constructor); + class1.addMember(method); + + ProgramNode abstractSyntaxTree = new ProgramNode(); + abstractSyntaxTree.addClass(class1); + + ASTNode typedAst = SemanticAnalyzer.generateTast(abstractSyntaxTree); + for (Exception runtimeException : SemanticAnalyzer.errors) { + runtimeException.printStackTrace(); + } + assertTrue(SemanticAnalyzer.errors.isEmpty()); + assertNotNull(typedAst); + } + + @Test + @DisplayName("Constructor Method call Parameters Test") + public void constructorMethodCallParametersTest() { + BlockNode blockCon = new BlockNode(); + MemberAccessNode memberAccess = new MemberAccessNode(true); + memberAccess.addIdentifier("a"); + + AssignableNode assignable = new AssignableNode(memberAccess); + + MethodCallNode methodCall = new MethodCallNode(null, "testMethod"); + methodCall.addExpression(new UnaryNode("a")); + IExpressionNode expression = new UnaryNode(methodCall); + + blockCon.addStatement(new AssignNode(assignable, expression)); + blockCon.addStatement(new ReturnNode(null)); + ConstructorNode constructor = new ConstructorNode("public", "ConstructorMethodCallParameters", blockCon); + constructor.addParameter(new ParameterNode(new BaseType(TypeEnum.INT), "a")); + + BlockNode blockMethod = new BlockNode(); + blockMethod.addStatement(new ReturnNode(new UnaryNode("a"))); + MethodNode method = new MethodNode("public", new BaseType(TypeEnum.INT), false, "testMethod", blockMethod); + method.addParameter(new ParameterNode(new BaseType(TypeEnum.INT), "a")); + + ClassNode class1 = new ClassNode("public", "ConstructorMethodCallParameters"); + class1.addMember(new FieldNode(new AccessModifierNode("public"), new BaseType(TypeEnum.INT), "a")); + class1.addMember(constructor); + class1.addMember(method); + + ProgramNode abstractSyntaxTree = new ProgramNode(); + abstractSyntaxTree.addClass(class1); + + ASTNode typedAst = SemanticAnalyzer.generateTast(abstractSyntaxTree); + for (Exception runtimeException : SemanticAnalyzer.errors) { + runtimeException.printStackTrace(); + } + assertTrue(SemanticAnalyzer.errors.isEmpty()); + assertNotNull(typedAst); + } + + @Test + @DisplayName("Char Test") + public void charTest() { + BlockNode blockCon = new BlockNode(); + MemberAccessNode memberAccess = new MemberAccessNode(true); + memberAccess.addIdentifier("a"); + + AssignableNode assignable = new AssignableNode(memberAccess); + + MethodCallNode methodCall = new MethodCallNode(null, "testMethod"); + methodCall.addExpression(new UnaryNode("a")); + IExpressionNode expression = new UnaryNode(methodCall); + + blockCon.addStatement(new AssignNode(assignable, expression)); + blockCon.addStatement(new ReturnNode(null)); + ConstructorNode constructor = new ConstructorNode("public", "Char", blockCon); + constructor.addParameter(new ParameterNode(new BaseType(TypeEnum.CHAR), "a")); + + BlockNode blockMethod = new BlockNode(); + blockMethod.addStatement(new ReturnNode(new UnaryNode("a"))); + MethodNode method = new MethodNode("public", new BaseType(TypeEnum.CHAR), false, "testMethod", blockMethod); + method.addParameter(new ParameterNode(new BaseType(TypeEnum.CHAR), "a")); + + ClassNode class1 = new ClassNode("public", "Char"); + class1.addMember(new FieldNode(new AccessModifierNode("public"), new BaseType(TypeEnum.CHAR), "a")); + class1.addMember(constructor); + class1.addMember(method); + + ProgramNode abstractSyntaxTree = new ProgramNode(); + abstractSyntaxTree.addClass(class1); + + ASTNode typedAst = SemanticAnalyzer.generateTast(abstractSyntaxTree); + for (Exception runtimeException : SemanticAnalyzer.errors) { + runtimeException.printStackTrace(); + } + assertTrue(SemanticAnalyzer.errors.isEmpty()); + assertNotNull(typedAst); + } + + @Test + @DisplayName("Null Test") + public void nullTest() { + BlockNode blockCon = new BlockNode(); + MemberAccessNode memberAccess = new MemberAccessNode(true); + memberAccess.addIdentifier("a"); + + AssignableNode assignable = new AssignableNode(memberAccess); + + blockCon.addStatement(new AssignNode(assignable, new UnaryNode(new ValueNode(EnumValueNode.NULL_VALUE, "null")))); + blockCon.addStatement(new ReturnNode(null)); + ConstructorNode constructor = new ConstructorNode("public", "Null", blockCon); + + ClassNode class1 = new ClassNode("public", "Null"); + class1.addMember(new FieldNode(new AccessModifierNode("public"), new BaseType(TypeEnum.INT), "a")); + class1.addMember(constructor); + + ProgramNode abstractSyntaxTree = new ProgramNode(); + abstractSyntaxTree.addClass(class1); + + ASTNode typedAst = SemanticAnalyzer.generateTast(abstractSyntaxTree); + for (Exception runtimeException : SemanticAnalyzer.errors) { + runtimeException.printStackTrace(); + } + assertTrue(SemanticAnalyzer.errors.isEmpty()); + assertNotNull(typedAst); + } + + @Test + @DisplayName("Self Reference Test") + public void selfReferenceTest() { + + } + + @Test + @DisplayName("Variable Compare Test") + public void variableCompareTest() { + + } + + @Test + @DisplayName("Variable Calculation Test") + public void variableCalculationTest() { + + } + + @Test + @DisplayName("Main Method Test") + public void mainMethodTest() { + + } + + @Test + @DisplayName("While Test") + public void whileTest() { + + } + + @Test + @DisplayName("Do While Test") + public void doWhileTest() { + + } + + @Test + @DisplayName("For Test") + public void forTest() { + + } + + @Test + @DisplayName("Increment Test") + public void incrementTest() { + ClassNode classNode = Helper.generateEmptyClass("Increment"); + classNode.addMember(new FieldNode(new AccessModifierNode("public"), new BaseType(TypeEnum.INT), "a")); + + ProgramNode abstractSyntaxTree = new ProgramNode(); + abstractSyntaxTree.addClass(classNode); + + ASTNode typedAst = SemanticAnalyzer.generateTast(abstractSyntaxTree); + for (Exception runtimeException : SemanticAnalyzer.errors) { + runtimeException.printStackTrace(); + } + assertTrue(SemanticAnalyzer.errors.isEmpty()); + assertNotNull(typedAst); + } } \ No newline at end of file diff --git a/src/test/resources/input/combinedFeatureTests/AllFeaturesClassExample.class b/src/test/resources/input/combinedFeatureTests/AllFeaturesClassExample.class deleted file mode 100644 index b59adc2..0000000 Binary files a/src/test/resources/input/combinedFeatureTests/AllFeaturesClassExample.class and /dev/null differ diff --git a/src/test/resources/input/combinedFeatureTests/BooleanOperations.class b/src/test/resources/input/combinedFeatureTests/BooleanOperations.class deleted file mode 100644 index cd8092a..0000000 Binary files a/src/test/resources/input/combinedFeatureTests/BooleanOperations.class and /dev/null differ diff --git a/src/test/resources/input/combinedFeatureTests/CharManipulation.class b/src/test/resources/input/combinedFeatureTests/CharManipulation.class deleted file mode 100644 index e47890d..0000000 Binary files a/src/test/resources/input/combinedFeatureTests/CharManipulation.class and /dev/null differ diff --git a/src/test/resources/input/combinedFeatureTests/ConditionalStatements.class b/src/test/resources/input/combinedFeatureTests/ConditionalStatements.class deleted file mode 100644 index 7fa39b3..0000000 Binary files a/src/test/resources/input/combinedFeatureTests/ConditionalStatements.class and /dev/null differ diff --git a/src/test/resources/input/combinedFeatureTests/EmptyClassExample.class b/src/test/resources/input/combinedFeatureTests/EmptyClassExample.class deleted file mode 100644 index a6a129d..0000000 Binary files a/src/test/resources/input/combinedFeatureTests/EmptyClassExample.class and /dev/null differ diff --git a/src/test/resources/input/combinedFeatureTests/LoopExamples.class b/src/test/resources/input/combinedFeatureTests/LoopExamples.class deleted file mode 100644 index 2a398c6..0000000 Binary files a/src/test/resources/input/combinedFeatureTests/LoopExamples.class and /dev/null differ diff --git a/src/test/resources/input/combinedFeatureTests/MethodOverloading.class b/src/test/resources/input/combinedFeatureTests/MethodOverloading.class deleted file mode 100644 index 2357744..0000000 Binary files a/src/test/resources/input/combinedFeatureTests/MethodOverloading.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/Char.class b/src/test/resources/input/singleFeatureTests/Char.class deleted file mode 100644 index 8e9c65e..0000000 Binary files a/src/test/resources/input/singleFeatureTests/Char.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/Comments.class b/src/test/resources/input/singleFeatureTests/Comments.class deleted file mode 100644 index 8d74444..0000000 Binary files a/src/test/resources/input/singleFeatureTests/Comments.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/ConstructorMethodCall.class b/src/test/resources/input/singleFeatureTests/ConstructorMethodCall.class deleted file mode 100644 index 009c423..0000000 Binary files a/src/test/resources/input/singleFeatureTests/ConstructorMethodCall.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/ConstructorMethodCallParameters.class b/src/test/resources/input/singleFeatureTests/ConstructorMethodCallParameters.class deleted file mode 100644 index 6c01775..0000000 Binary files a/src/test/resources/input/singleFeatureTests/ConstructorMethodCallParameters.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/ConstructorParameter.class b/src/test/resources/input/singleFeatureTests/ConstructorParameter.class deleted file mode 100644 index eabb195..0000000 Binary files a/src/test/resources/input/singleFeatureTests/ConstructorParameter.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/ConstructorThisDot.class b/src/test/resources/input/singleFeatureTests/ConstructorThisDot.class deleted file mode 100644 index 1a1c4c3..0000000 Binary files a/src/test/resources/input/singleFeatureTests/ConstructorThisDot.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/DoWhile.class b/src/test/resources/input/singleFeatureTests/DoWhile.class deleted file mode 100644 index d7f8c19..0000000 Binary files a/src/test/resources/input/singleFeatureTests/DoWhile.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/EmptyClass.class b/src/test/resources/input/singleFeatureTests/EmptyClass.class deleted file mode 100644 index cb0d9fc..0000000 Binary files a/src/test/resources/input/singleFeatureTests/EmptyClass.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/EmptyClassWithConstructor.class b/src/test/resources/input/singleFeatureTests/EmptyClassWithConstructor.class deleted file mode 100644 index 664bf33..0000000 Binary files a/src/test/resources/input/singleFeatureTests/EmptyClassWithConstructor.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/Field.class b/src/test/resources/input/singleFeatureTests/Field.class deleted file mode 100644 index e06f2cf..0000000 Binary files a/src/test/resources/input/singleFeatureTests/Field.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/FieldWithAccessModifier.class b/src/test/resources/input/singleFeatureTests/FieldWithAccessModifier.class deleted file mode 100644 index a322f45..0000000 Binary files a/src/test/resources/input/singleFeatureTests/FieldWithAccessModifier.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/For.class b/src/test/resources/input/singleFeatureTests/For.class deleted file mode 100644 index f403168..0000000 Binary files a/src/test/resources/input/singleFeatureTests/For.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/If.class b/src/test/resources/input/singleFeatureTests/If.class deleted file mode 100644 index b5cf862..0000000 Binary files a/src/test/resources/input/singleFeatureTests/If.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/IfElse.class b/src/test/resources/input/singleFeatureTests/IfElse.class deleted file mode 100644 index 9871fe2..0000000 Binary files a/src/test/resources/input/singleFeatureTests/IfElse.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/IfElseIfElse.class b/src/test/resources/input/singleFeatureTests/IfElseIfElse.class deleted file mode 100644 index 680b310..0000000 Binary files a/src/test/resources/input/singleFeatureTests/IfElseIfElse.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/Increment.class b/src/test/resources/input/singleFeatureTests/Increment.class deleted file mode 100644 index 75faed5..0000000 Binary files a/src/test/resources/input/singleFeatureTests/Increment.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/MainMethod.class b/src/test/resources/input/singleFeatureTests/MainMethod.class deleted file mode 100644 index 0470c08..0000000 Binary files a/src/test/resources/input/singleFeatureTests/MainMethod.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/MultipleClasses.class b/src/test/resources/input/singleFeatureTests/MultipleClasses.class deleted file mode 100644 index 4585bf0..0000000 Binary files a/src/test/resources/input/singleFeatureTests/MultipleClasses.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/Null.class b/src/test/resources/input/singleFeatureTests/Null.class deleted file mode 100644 index 47a87ef..0000000 Binary files a/src/test/resources/input/singleFeatureTests/Null.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/SelfReference.class b/src/test/resources/input/singleFeatureTests/SelfReference.class deleted file mode 100644 index 413157a..0000000 Binary files a/src/test/resources/input/singleFeatureTests/SelfReference.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/TestClass2.class b/src/test/resources/input/singleFeatureTests/TestClass2.class deleted file mode 100644 index 85b5136..0000000 Binary files a/src/test/resources/input/singleFeatureTests/TestClass2.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/ThisDot.class b/src/test/resources/input/singleFeatureTests/ThisDot.class deleted file mode 100644 index 668d1ed..0000000 Binary files a/src/test/resources/input/singleFeatureTests/ThisDot.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/VariableCalculation.class b/src/test/resources/input/singleFeatureTests/VariableCalculation.class deleted file mode 100644 index 131a2e6..0000000 Binary files a/src/test/resources/input/singleFeatureTests/VariableCalculation.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/VariableCompare.class b/src/test/resources/input/singleFeatureTests/VariableCompare.class deleted file mode 100644 index bf2b598..0000000 Binary files a/src/test/resources/input/singleFeatureTests/VariableCompare.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/VoidMethod.class b/src/test/resources/input/singleFeatureTests/VoidMethod.class deleted file mode 100644 index 861db40..0000000 Binary files a/src/test/resources/input/singleFeatureTests/VoidMethod.class and /dev/null differ diff --git a/src/test/resources/input/singleFeatureTests/While.class b/src/test/resources/input/singleFeatureTests/While.class deleted file mode 100644 index 3fbdb4f..0000000 Binary files a/src/test/resources/input/singleFeatureTests/While.class and /dev/null differ diff --git a/src/test/resources/input/typedAstFeatureTests/CallMethodFromObjekt$Car.class b/src/test/resources/input/typedAstFeatureTests/CallMethodFromObjekt$Car.class deleted file mode 100644 index 13e9f24..0000000 Binary files a/src/test/resources/input/typedAstFeatureTests/CallMethodFromObjekt$Car.class and /dev/null differ diff --git a/src/test/resources/input/typedAstFeatureTests/CallMethodFromObjekt.class b/src/test/resources/input/typedAstFeatureTests/CallMethodFromObjekt.class deleted file mode 100644 index 4fee593..0000000 Binary files a/src/test/resources/input/typedAstFeatureTests/CallMethodFromObjekt.class and /dev/null differ