From c5aee78b7b64f464ba1c94d95c77d76b6566799e Mon Sep 17 00:00:00 2001 From: ChUrl Date: Wed, 16 Dec 2020 14:55:52 +0100 Subject: [PATCH] new tests --- .idea/modules/CompilerProjekt.test.iml | 8 ++++++++ .../java/parser/LexerGrammarParserTest.java | 20 ++++++++++++++++++- .../parser/typechecker/TypeCheckerTest.java | 5 ++++- .../examplePrograms/FailingEmptyParExpr.stups | 7 +++++++ .../FailingEmptyParExpr2.stups | 5 +++++ .../examplePrograms/FailingMissingBrace.stups | 1 + .../FailingMissingBrace2.stups | 1 + .../examplePrograms/FailingMissingMain.stups | 3 +++ .../examplePrograms/FailingMissingMain2.stups | 5 +++++ .../examplePrograms/FailingSemicolon.stups | 1 + .../FailingWrongStatement.stups | 5 +++++ .../FailingWrongStatement2.stups | 5 +++++ .../FailingWrongStatement3.stups | 5 +++++ 13 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 .idea/modules/CompilerProjekt.test.iml create mode 100644 src/test/resources/examplePrograms/FailingEmptyParExpr.stups create mode 100644 src/test/resources/examplePrograms/FailingEmptyParExpr2.stups create mode 100644 src/test/resources/examplePrograms/FailingMissingBrace.stups create mode 100644 src/test/resources/examplePrograms/FailingMissingBrace2.stups create mode 100644 src/test/resources/examplePrograms/FailingMissingMain.stups create mode 100644 src/test/resources/examplePrograms/FailingMissingMain2.stups create mode 100644 src/test/resources/examplePrograms/FailingSemicolon.stups create mode 100644 src/test/resources/examplePrograms/FailingWrongStatement.stups create mode 100644 src/test/resources/examplePrograms/FailingWrongStatement2.stups create mode 100644 src/test/resources/examplePrograms/FailingWrongStatement3.stups diff --git a/.idea/modules/CompilerProjekt.test.iml b/.idea/modules/CompilerProjekt.test.iml new file mode 100644 index 0000000..4a4ce55 --- /dev/null +++ b/.idea/modules/CompilerProjekt.test.iml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/src/test/java/parser/LexerGrammarParserTest.java b/src/test/java/parser/LexerGrammarParserTest.java index 3ac8438..3d3cf5b 100644 --- a/src/test/java/parser/LexerGrammarParserTest.java +++ b/src/test/java/parser/LexerGrammarParserTest.java @@ -16,6 +16,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; class LexerGrammarParserTest { @@ -49,9 +50,26 @@ class LexerGrammarParserTest { "Expr.stups", "GeneralWhile.stups", "GeneralIfElse.stups"}) - void testVariousPrograms(String prog) { + void testCorrectPrograms(String prog) { final Lexer lex = getLexer(prog); assertThat(parser.parse(lex.getAllTokens(), lex.getVocabulary())).isNotNull(); } + + @ParameterizedTest + @ValueSource(strings = {"FailingSemicolon.stups", + "FailingMissingBrace.stups", + "FailingMissingBrace2.stups", + "FailingMissingMain.stups", + "FailingMissingMain2.stups", + "FailingEmptyParExpr.stups", + "FailingEmptyParExpr2.stups", + "FailingWrongStatement.stups", + "FailingWrongStatement2.stups", + "FailingWrongStatement3.stups"}) + void testIncorrectPrograms(String prog) { + final Lexer lex = getLexer(prog); + + assertThatThrownBy(() -> parser.parse(lex.getAllTokens(), lex.getVocabulary())).isInstanceOf(ParseException.class); + } } diff --git a/src/test/java/parser/typechecker/TypeCheckerTest.java b/src/test/java/parser/typechecker/TypeCheckerTest.java index 900f5a9..5d50bae 100644 --- a/src/test/java/parser/typechecker/TypeCheckerTest.java +++ b/src/test/java/parser/typechecker/TypeCheckerTest.java @@ -95,7 +95,10 @@ class TypeCheckerTest { "boolean b = 1 >;", "boolean b = >= 1;", "boolean b = 1 ==;", - "boolean b = 1 !=;"}) + "boolean b = 1 !=;", + "boolean b = !;", + "boolean b = <;", + "boolean b = true !false;"}) void testBinaryOperatorIncorrect(String expr) { assertThatThrownBy(() -> TypeChecker.validate(this.getTree(expr))).isInstanceOfAny(OperatorUsageException.class, ParseException.class); diff --git a/src/test/resources/examplePrograms/FailingEmptyParExpr.stups b/src/test/resources/examplePrograms/FailingEmptyParExpr.stups new file mode 100644 index 0000000..1c9e346 --- /dev/null +++ b/src/test/resources/examplePrograms/FailingEmptyParExpr.stups @@ -0,0 +1,7 @@ +class MyClass { + public static void main(String[] args) { + if () { + i = 1; + } + } +} diff --git a/src/test/resources/examplePrograms/FailingEmptyParExpr2.stups b/src/test/resources/examplePrograms/FailingEmptyParExpr2.stups new file mode 100644 index 0000000..dfc4795 --- /dev/null +++ b/src/test/resources/examplePrograms/FailingEmptyParExpr2.stups @@ -0,0 +1,5 @@ +class MyClass { + public static void main(String[] args) { + i = 1 * (); + } +} diff --git a/src/test/resources/examplePrograms/FailingMissingBrace.stups b/src/test/resources/examplePrograms/FailingMissingBrace.stups new file mode 100644 index 0000000..d0776c9 --- /dev/null +++ b/src/test/resources/examplePrograms/FailingMissingBrace.stups @@ -0,0 +1 @@ +class MyClass { diff --git a/src/test/resources/examplePrograms/FailingMissingBrace2.stups b/src/test/resources/examplePrograms/FailingMissingBrace2.stups new file mode 100644 index 0000000..87fd2fb --- /dev/null +++ b/src/test/resources/examplePrograms/FailingMissingBrace2.stups @@ -0,0 +1 @@ +class MyClass } diff --git a/src/test/resources/examplePrograms/FailingMissingMain.stups b/src/test/resources/examplePrograms/FailingMissingMain.stups new file mode 100644 index 0000000..b3255ec --- /dev/null +++ b/src/test/resources/examplePrograms/FailingMissingMain.stups @@ -0,0 +1,3 @@ +class MyClass { + int x = 5; +} diff --git a/src/test/resources/examplePrograms/FailingMissingMain2.stups b/src/test/resources/examplePrograms/FailingMissingMain2.stups new file mode 100644 index 0000000..1f51f6d --- /dev/null +++ b/src/test/resources/examplePrograms/FailingMissingMain2.stups @@ -0,0 +1,5 @@ +class MyClass { + public static void mainmain(String[] args) { + int i = 1; + } +} diff --git a/src/test/resources/examplePrograms/FailingSemicolon.stups b/src/test/resources/examplePrograms/FailingSemicolon.stups new file mode 100644 index 0000000..092bc2b --- /dev/null +++ b/src/test/resources/examplePrograms/FailingSemicolon.stups @@ -0,0 +1 @@ +; diff --git a/src/test/resources/examplePrograms/FailingWrongStatement.stups b/src/test/resources/examplePrograms/FailingWrongStatement.stups new file mode 100644 index 0000000..933f52a --- /dev/null +++ b/src/test/resources/examplePrograms/FailingWrongStatement.stups @@ -0,0 +1,5 @@ +class MyClass { + public static void main(String[] args) { + int x; + } +} diff --git a/src/test/resources/examplePrograms/FailingWrongStatement2.stups b/src/test/resources/examplePrograms/FailingWrongStatement2.stups new file mode 100644 index 0000000..4e9fdff --- /dev/null +++ b/src/test/resources/examplePrograms/FailingWrongStatement2.stups @@ -0,0 +1,5 @@ +class MyClass { + public static void main(String[] args) { + 5; + } +} diff --git a/src/test/resources/examplePrograms/FailingWrongStatement3.stups b/src/test/resources/examplePrograms/FailingWrongStatement3.stups new file mode 100644 index 0000000..566022e --- /dev/null +++ b/src/test/resources/examplePrograms/FailingWrongStatement3.stups @@ -0,0 +1,5 @@ +class MyClass { + public static void main(String[] args) { + int x = 1 + } +}