From f50bb7efd72cc4de26ef87557f9b61e48c6a7ca8 Mon Sep 17 00:00:00 2001 From: Lucas <89882946+notbad3500@users.noreply.github.com> Date: Fri, 5 Jul 2024 13:49:43 +0200 Subject: [PATCH] refactoring --- src/test/TestSpecs.md | 93 ------------ src/test/java/main/E2EReflectionsTest.java | 3 + src/test/java/main/InputFilesTest.java | 2 + src/test/resources/trees/correctRefType.json | 70 --------- src/test/resources/trees/refTypeMismatch.json | 133 ------------------ src/test/resources/trees/test.json | 1 - 6 files changed, 5 insertions(+), 297 deletions(-) delete mode 100644 src/test/TestSpecs.md delete mode 100644 src/test/resources/trees/correctRefType.json delete mode 100644 src/test/resources/trees/refTypeMismatch.json delete mode 100644 src/test/resources/trees/test.json diff --git a/src/test/TestSpecs.md b/src/test/TestSpecs.md deleted file mode 100644 index da23e18..0000000 --- a/src/test/TestSpecs.md +++ /dev/null @@ -1,93 +0,0 @@ -# Scanner - -## Scanner Input - -### Beispiel 1: Empty Class - - String empty class = "public class Name {}"; - -### Beispiel 2: Filled Class - - String filled class = - "class javaFileInput.Example {" + - "if (x < 5) {" + - "for (int i = 0; i < 10; i++) {" + - "while (true) {" + - "x = 5;" + - "}" - -## Scanner Output - -CommonTokenStream - -### Beispiel 1: Empty Class - -Token Type; Token Text -Type gibts nur bei Terminalen, Text bei allen - - [null "public", null "class", IDENTIFIER "Name", null "{", null "}", EOF ""] - - Bsp von Ihm mal: - [TokPublic,TokClass,TokIdentifier "Name",TokLeftBrace,TokRightBrace] - -# Parser - -## Parser Input - -CommonTokenStream -(Scanner Output) - -## Parser Output (AST) - -(program (classDeclaration (accessType public) class Name { })) - -ParseTree - -### Beispiel 1: Empty Class - -# Semantische Analyse / Typcheck - -## Typcheck Input - -(Parser Output = AST) - -## Typcheck Output - -### Beispiel 1: Empty Class - -# Bytecodegenerierung - -## Bytecodegenerierung Input - -(Typcheck Output = vom Typcheck eventuell manipulierter AST) - -## Bytecodegenerierung Output - -### Beispiel 1: Empty Class - -Compiled Classfile - - public class javaFileInput.Example { - } - -## E2E Tests: - -- Testdatei mit Main ausführen/kompilieren -- Testdatei mit "javac -d output .\CompilerInput.java" kompilieren -- -> Dateien mit javap vergleichen - -wenn beides erfolgreich - -- Ergebnis vom eigenen Compiler mithilfe von main.EndToEndTester ausführen -- (Ergebnis von javac mithilfe von main.EndToEndTester ausführen) - -### Andis Tipps: - -- cp mitgeben -- makefile -- java -jar pfadtocompiler.jar EmptyClass.java -- mvn package -- javac tester // tester compilen -- java tester // tester ausführen -- -> tester ist in unserem Fall main.EndToEndTester.java -- -> Hab ich alles umgesetzt \ No newline at end of file diff --git a/src/test/java/main/E2EReflectionsTest.java b/src/test/java/main/E2EReflectionsTest.java index a0bce43..8c2d591 100644 --- a/src/test/java/main/E2EReflectionsTest.java +++ b/src/test/java/main/E2EReflectionsTest.java @@ -10,6 +10,8 @@ import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import javax.tools.JavaCompiler; import javax.tools.ToolProvider; + +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; @@ -106,6 +108,7 @@ public class E2EReflectionsTest { } @Test + @Disabled public void SelfReferenceTest() { runTest("SelfReference"); } diff --git a/src/test/java/main/InputFilesTest.java b/src/test/java/main/InputFilesTest.java index 3ba18f3..28b268c 100644 --- a/src/test/java/main/InputFilesTest.java +++ b/src/test/java/main/InputFilesTest.java @@ -32,12 +32,14 @@ public class InputFilesTest { 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"); + File finalTest = new File("src/test/resources/input/finalTest"); List files = getJavaFilesFromDirectory(combinedFeatureTests); // files.addAll(getJavaFilesFromDirectory(endabgabeTests)); // files.addAll(getJavaFilesFromDirectory(singleFeatureSemanticTests)); files.addAll(getJavaFilesFromDirectory(singleFeatureTests)); // files.addAll(getJavaFilesFromDirectory(typedAstFeatureTests)); + files.addAll(getJavaFilesFromDirectory(finalTest)); if (!files.isEmpty()) { for (File file : files) { diff --git a/src/test/resources/trees/correctRefType.json b/src/test/resources/trees/correctRefType.json deleted file mode 100644 index 7e67bbc..0000000 --- a/src/test/resources/trees/correctRefType.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "classes": [ - { - "identifier": "testClass1", - "accessType": { - "enumAccessTypeNode": "PUBLIC" - }, - "members": [ - { - "@type": "Field", - "accessTypeNode": { - "enumAccessTypeNode": "PUBLIC" - }, - "type": { - "@type": "Base", - "enumType": "INT" - }, - "identifier": "testVar1" - }, - { - "@type": "Method", - "visibility": { - "enumAccessTypeNode": "PUBLIC" - }, - "type": { - "@type": "Base", - "enumType": "INT" - }, - "identifier": "testMethod", - "parameters": { - "parameters": [ - { - "type": { - "@type": "Base", - "enumType": "INT" - }, - "identifier": "param1" - } - ] - }, - "statements": [ - { - "@type": "Assignment", - "expressionLeft": { - "@type": "InstVar", - "identifier": "testVar1", - "expression": { - "@type": "This", - "type": { - "@type": "Reference", - "identifier": "testClass1" - } - }, - "type": null - }, - "expressionRight": { - "@type": "Literal", - "type": { - "@type": "Base", - "enumType": "INT" - } - } - } - ] - } - ], - "hasConstructor": false - } - ] -} \ No newline at end of file diff --git a/src/test/resources/trees/refTypeMismatch.json b/src/test/resources/trees/refTypeMismatch.json deleted file mode 100644 index e5ebcd3..0000000 --- a/src/test/resources/trees/refTypeMismatch.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "classes": [ - { - "identifier": "testClass1", - "accessType": { - "enumAccessTypeNode": "PUBLIC" - }, - "members": [ - { - "@type": "Field", - "accessTypeNode": { - "enumAccessTypeNode": "PUBLIC" - }, - "type": { - "@type": "Base", - "enumType": "INT" - }, - "identifier": "testVar1" - }, - { - "@type": "Method", - "visibility": { - "enumAccessTypeNode": "PUBLIC" - }, - "type": { - "@type": "Base", - "enumType": "INT" - }, - "identifier": "testMethod", - "parameters": { - "parameters": [ - { - "type": { - "@type": "Base", - "enumType": "INT" - }, - "identifier": "param1" - } - ] - }, - "statements": [ - { - "@type": "Assignment", - "expressionLeft": { - "@type": "InstVar", - "identifier": "testVar1", - "expression": { - "@type": "This", - "type": { - "@type": "Reference", - "identifier": "testClass1" - } - }, - "type": null - }, - "expressionRight": { - "@type": "Literal", - "type": { - "@type": "Base", - "enumType": "BOOLEAN" - } - } - } - ] - } - ], - "hasConstructor": false, - "methods": [ - { - "@type": "Method", - "visibility": { - "enumAccessTypeNode": "PUBLIC" - }, - "type": { - "@type": "Base", - "enumType": "INT" - }, - "identifier": "testMethod", - "parameters": { - "parameters": [ - { - "type": { - "@type": "Base", - "enumType": "INT" - }, - "identifier": "param1" - } - ] - }, - "statements": [ - { - "@type": "Assignment", - "expressionLeft": { - "@type": "InstVar", - "identifier": "testVar", - "expression": { - "@type": "InstVar", - "identifier": "testVar", - "expression": { - "@type": "This", - "type": { - "@type": "Reference", - "identifier": "testClass2" - } - }, - "type": null - }, - "type": null - }, - "expressionRight": { - "@type": "Literal", - "type": null - }, - "type": null - }, - { - "@type": "VariableDeclaration", - "type": { - "@type": "Base", - "enumType": "CHAR" - }, - "identifier": "objectVar", - "expression": { - "@type": "Literal", - "type": null - } - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/test/resources/trees/test.json b/src/test/resources/trees/test.json deleted file mode 100644 index 7acc30f..0000000 --- a/src/test/resources/trees/test.json +++ /dev/null @@ -1 +0,0 @@ -{"classes":[{"identifier":"testClass","accessType":{"enumAccessTypeNode":"PUBLIC"},"members":[{"@type":"Field","accessTypeNode":{"enumAccessTypeNode":"PUBLIC"},"type":{"@type":"Base","enumType":"INT"},"identifier":"testVar1"},{"@type":"Field","accessTypeNode":{"enumAccessTypeNode":"PUBLIC"},"type":{"@type":"Base","enumType":"INT"},"identifier":"objectVar"},{"@type":"Method","visibility":{"enumAccessTypeNode":"PUBLIC"},"type":{"@type":"Base","enumType":"INT"},"identifier":"testVar2","parameters":{"parameters":[{"type":{"@type":"Base","enumType":"INT"},"identifier":"param1"}]},"statements":[{"@type":"Assignment","expressionLeft":{"@type":"InstVar","identifier":"objectVar","expression":{"@type":"This","type":{"@type":"Reference","identifier":"testClass"}},"type":null},"expressionRight":{"@type":"Literal","type":{"@type":"Base","enumType":"INT"}}}]}],"hasConstructor":false,"methods":[{"@type":"Method","visibility":{"enumAccessTypeNode":"PUBLIC"},"type":{"@type":"Base","enumType":"INT"},"identifier":"testVar2","parameters":{"parameters":[{"type":{"@type":"Base","enumType":"INT"},"identifier":"param1"}]},"statements":[{"@type":"Assignment","expressionLeft":{"@type":"InstVar","identifier":"objectVar","expression":{"@type":"This","type":{"@type":"Reference","identifier":"testClass"}},"type":null},"expressionRight":{"@type":"Literal","type":{"@type":"Base","enumType":"INT"}}}]}]}]} \ No newline at end of file