From 95ff50e695750b40c0b3681076cd0ed86c681c36 Mon Sep 17 00:00:00 2001 From: fc62359 Date: Thu, 6 Nov 2025 19:23:29 +0000 Subject: [PATCH 1/4] =?UTF-8?q?Efetuadas=20as=20mudan=C3=A7as=20pedidas=20?= =?UTF-8?q?nos=20passos=203,=204=20e=205?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- liquidjava-verifier/pom.xml | 45 ++++++++++++++++++- .../liquidjava/ast/opt/TestOptimization.java | 16 +++++++ .../rj_language/TestLiteralString.java | 14 ++++++ 3 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 liquidjava-verifier/src/test/java/liquidjava/ast/opt/TestOptimization.java create mode 100644 liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralString.java diff --git a/liquidjava-verifier/pom.xml b/liquidjava-verifier/pom.xml index 5b42f4cb..5e8e4947 100644 --- a/liquidjava-verifier/pom.xml +++ b/liquidjava-verifier/pom.xml @@ -19,6 +19,45 @@ ${jar.finalName} + + org.jacoco + jacoco-maven-plugin + 0.8.14 + + + default-prepare-agent + + prepare-agent + + + + default-report + + report + + + + default-check + + check + + + + + BUNDLE + + + COMPLEXITY + COVEREDRATIO + 0.60 + + + + + + + + net.revelc.code.formatter formatter-maven-plugin @@ -77,7 +116,8 @@ - + liquidjava.api.CommandLineLauncher @@ -206,4 +246,5 @@ - + + \ No newline at end of file diff --git a/liquidjava-verifier/src/test/java/liquidjava/ast/opt/TestOptimization.java b/liquidjava-verifier/src/test/java/liquidjava/ast/opt/TestOptimization.java new file mode 100644 index 00000000..85e99d31 --- /dev/null +++ b/liquidjava-verifier/src/test/java/liquidjava/ast/opt/TestOptimization.java @@ -0,0 +1,16 @@ +import liquidjava.rj_language.ast.BinaryExpression; +import liquidjava.rj_language.ast.LiteralInt; +import liquidjava.rj_language.opt.ConstantFolding; +import liquidjava.rj_language.opt.derivation_node.ValDerivationNode; +import static org.junit.Assert.assertEquals; +import org.junit.Test; + +public class TestOptimization { + @Test + public void testBinaryFold() { + BinaryExpression b = new BinaryExpression(new LiteralInt(1), "+", new LiteralInt(2)); + + ValDerivationNode r = ConstantFolding.fold(new ValDerivationNode(b, null)); + assertEquals(r.getValue(), new LiteralInt(3)); + } +} \ No newline at end of file diff --git a/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralString.java b/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralString.java new file mode 100644 index 00000000..bb198e05 --- /dev/null +++ b/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralString.java @@ -0,0 +1,14 @@ +package liquidjava.rj_language; + +import static org.junit.Assert.assertNotEquals; +import org.junit.Test; +import liquidjava.rj_language.ast.LiteralString; + +public class TestLiteralString { + @Test + public void testLiteralString() { + LiteralString s1 = new LiteralString("hello"); + LiteralString s2 = new LiteralString("world"); + assertNotEquals(s1.hashCode(), s2.hashCode()); + } +} \ No newline at end of file From 35ed33f7b0ca913f752a1cddce086617fab0de14 Mon Sep 17 00:00:00 2001 From: fc62359 Date: Thu, 6 Nov 2025 19:49:26 +0000 Subject: [PATCH 2/4] =?UTF-8?q?Adicionado=20teste=20unit=C3=A1rio=20LjErro?= =?UTF-8?q?rTest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../diagnostics/errors/LJErrorTest.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 liquidjava-verifier/src/test/java/liquidjava/diagnostics/errors/LJErrorTest.java diff --git a/liquidjava-verifier/src/test/java/liquidjava/diagnostics/errors/LJErrorTest.java b/liquidjava-verifier/src/test/java/liquidjava/diagnostics/errors/LJErrorTest.java new file mode 100644 index 00000000..38731578 --- /dev/null +++ b/liquidjava-verifier/src/test/java/liquidjava/diagnostics/errors/LJErrorTest.java @@ -0,0 +1,35 @@ +package liquidjava.diagnostics.errors; + +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; +import spoon.reflect.declaration.CtElement; + +public class LJErrorTest { + + static class ConcreteLJError extends LJError { + ConcreteLJError(String message, String details, CtElement element) { + super(message, details, element); + } + + @Override + public String toString() { + return "ConcreteLJError: " + super.getMessage() + " | " + "Details field tested"; + } + } + + @Test + void testLJErrorMessage() { + LJError error = new ConcreteLJError("Test error message", "Details", null); + assertEquals("Details", error.getMessage()); + } + + @Test + void testToStringContainsMessage() { + LJError error = new ConcreteLJError("Invalid syntax", "Details", null); + String s = error.toString(); + + assertTrue(s.contains("ConcreteLJError")); + assertTrue(s.contains("Details")); + } + +} From 0df25ee3d33d5c6f1ff66739ae022afde64e9de8 Mon Sep 17 00:00:00 2001 From: fc62359 Date: Thu, 6 Nov 2025 21:38:50 +0000 Subject: [PATCH 3/4] =?UTF-8?q?Adicionados=202=20testes=20unit=C3=A1rios?= =?UTF-8?q?=20e=201=20teste=20de=20integra=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rj/grammar/RJParserIntegrationTest.java | 28 +++++++++++++++ .../java/rj/grammar/RJParserLiteralTest.java | 34 +++++++++++++++++++ .../test/java/rj/grammar/RJParserTest.java | 21 ++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 liquidjava-verifier/src/test/java/rj/grammar/RJParserIntegrationTest.java create mode 100644 liquidjava-verifier/src/test/java/rj/grammar/RJParserLiteralTest.java create mode 100644 liquidjava-verifier/src/test/java/rj/grammar/RJParserTest.java diff --git a/liquidjava-verifier/src/test/java/rj/grammar/RJParserIntegrationTest.java b/liquidjava-verifier/src/test/java/rj/grammar/RJParserIntegrationTest.java new file mode 100644 index 00000000..61e8b5a3 --- /dev/null +++ b/liquidjava-verifier/src/test/java/rj/grammar/RJParserIntegrationTest.java @@ -0,0 +1,28 @@ +package rj.grammar; + +import org.antlr.v4.runtime.*; +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + +public class RJParserIntegrationTest { + + @Test + void testFullProgramParsing() { + String input = """ + type MyAlias(int x) { + !(x < 5) + } + ghost int myGhost(int y) + """; + + RJLexer lexer = new RJLexer(CharStreams.fromString(input)); + CommonTokenStream tokens = new CommonTokenStream(lexer); + RJParser parser = new RJParser(tokens); + + RJParser.ProgContext ctx = parser.prog(); + + assertNotNull(ctx, "O contexto do programa não deve ser nulo"); + assertNotNull(ctx.start(), "Deve conter uma regra start válida"); + assertEquals(0, parser.getNumberOfSyntaxErrors(), "O parser não deve gerar erros"); + } +} \ No newline at end of file diff --git a/liquidjava-verifier/src/test/java/rj/grammar/RJParserLiteralTest.java b/liquidjava-verifier/src/test/java/rj/grammar/RJParserLiteralTest.java new file mode 100644 index 00000000..4c1356bf --- /dev/null +++ b/liquidjava-verifier/src/test/java/rj/grammar/RJParserLiteralTest.java @@ -0,0 +1,34 @@ +package rj.grammar; + +import org.antlr.v4.runtime.*; +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + +public class RJParserLiteralTest { + + @Test + void testIntegerLiteral() { + String input = "123"; + RJLexer lexer = new RJLexer(CharStreams.fromString(input)); + CommonTokenStream tokens = new CommonTokenStream(lexer); + RJParser parser = new RJParser(tokens); + + RJParser.LiteralContext ctx = parser.literal(); + + assertNotNull(ctx); + assertEquals("123", ctx.getText()); + } + + @Test + void testBooleanLiteral() { + String input = "true"; + RJLexer lexer = new RJLexer(CharStreams.fromString(input)); + CommonTokenStream tokens = new CommonTokenStream(lexer); + RJParser parser = new RJParser(tokens); + + RJParser.LiteralContext ctx = parser.literal(); + + assertNotNull(ctx); + assertEquals("true", ctx.getText()); + } +} \ No newline at end of file diff --git a/liquidjava-verifier/src/test/java/rj/grammar/RJParserTest.java b/liquidjava-verifier/src/test/java/rj/grammar/RJParserTest.java new file mode 100644 index 00000000..2c9b2fdc --- /dev/null +++ b/liquidjava-verifier/src/test/java/rj/grammar/RJParserTest.java @@ -0,0 +1,21 @@ +package rj.grammar; + +import org.antlr.v4.runtime.*; +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + +public class RJParserTest { + + @Test + void testLiteralParsing() { + String input = "42"; + RJLexer lexer = new RJLexer(CharStreams.fromString(input)); + CommonTokenStream tokens = new CommonTokenStream(lexer); + RJParser parser = new RJParser(tokens); + + RJParser.LiteralContext context = parser.literal(); + + assertNotNull(context); + assertEquals("42", context.getText()); + } +} \ No newline at end of file From 0e90de33ac7cd25abd6870803b9128575cfb9f58 Mon Sep 17 00:00:00 2001 From: fc62359 Date: Thu, 6 Nov 2025 22:45:06 +0000 Subject: [PATCH 4/4] Cobertura de POM modificada --- liquidjava-verifier/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/liquidjava-verifier/pom.xml b/liquidjava-verifier/pom.xml index 5e8e4947..07f589ec 100644 --- a/liquidjava-verifier/pom.xml +++ b/liquidjava-verifier/pom.xml @@ -49,7 +49,7 @@ COMPLEXITY COVEREDRATIO - 0.60 + 0.40