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