diff --git a/liquidjava-verifier/pom.xml b/liquidjava-verifier/pom.xml index 5b42f4cb..19d3eb24 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 diff --git a/liquidjava-verifier/src/test/java/liquidjava/api/tests/ErrorEmitterBasicTest.java b/liquidjava-verifier/src/test/java/liquidjava/api/tests/ErrorEmitterBasicTest.java new file mode 100644 index 00000000..5d8f765f --- /dev/null +++ b/liquidjava-verifier/src/test/java/liquidjava/api/tests/ErrorEmitterBasicTest.java @@ -0,0 +1,17 @@ +package liquidjava.api.tests; + +import static org.junit.Assert.*; + +import org.junit.Test; + +import liquidjava.errors.ErrorEmitter; + +public class ErrorEmitterBasicTest { + + @Test + public void estadoInicialSemErro() { + ErrorEmitter er = new ErrorEmitter(); + assertFalse(er.foundError()); + assertEquals(0, er.getErrorStatus()); + } +} \ 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..d9628ccb --- /dev/null +++ b/liquidjava-verifier/src/test/java/liquidjava/ast/opt/TestOptimization.java @@ -0,0 +1,20 @@ +package liquidjava.ast.opt; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +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; + +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 diff --git a/liquidjava-verifier/src/test/java/liquidjava/rj_language/ast/TestHashLitBoolean.java b/liquidjava-verifier/src/test/java/liquidjava/rj_language/ast/TestHashLitBoolean.java new file mode 100644 index 00000000..c5d74ae4 --- /dev/null +++ b/liquidjava-verifier/src/test/java/liquidjava/rj_language/ast/TestHashLitBoolean.java @@ -0,0 +1,31 @@ +package liquidjava.rj_language.ast; + +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + +public class TestHashLitBoolean { + + @Test + void sameValue_sameHashCode_andEquals() { + LiteralBoolean a = new LiteralBoolean(true); + LiteralBoolean b = new LiteralBoolean(true); + assertEquals(a, b); + assertEquals(a.hashCode(), b.hashCode()); + } + + @Test + void differentValues_differentHashCodes() { + LiteralBoolean a = new LiteralBoolean(true); + LiteralBoolean b = new LiteralBoolean(false); + assertNotEquals(a, b); + assertNotEquals(a.hashCode(), b.hashCode()); + } + + @Test + void clone_preservesEqualityAndHashCode() { + LiteralBoolean a = new LiteralBoolean(false); + LiteralBoolean c = (LiteralBoolean) a.clone(); + assertEquals(a, c); + assertEquals(a.hashCode(), c.hashCode()); + } +} diff --git a/liquidjava-verifier/src/test/java/liquidjava/rj_language/ast/TestHashLitReal.java b/liquidjava-verifier/src/test/java/liquidjava/rj_language/ast/TestHashLitReal.java new file mode 100644 index 00000000..8a8e2cc1 --- /dev/null +++ b/liquidjava-verifier/src/test/java/liquidjava/rj_language/ast/TestHashLitReal.java @@ -0,0 +1,32 @@ +package liquidjava.rj_language.ast; + +import static org.junit.Assert.*; + +import org.junit.Test; + +public class TestHashLitReal { + + @Test + public void sameValue_sameHashCode_andEquals() { + LiteralReal a = new LiteralReal(3.14); + LiteralReal b = new LiteralReal(3.14); + assertEquals(a, b); + assertEquals(a.hashCode(), b.hashCode()); + } + + @Test + public void differentValues_differentHashCodes() { + LiteralReal a = new LiteralReal(1.0); + LiteralReal b = new LiteralReal(2.0); + assertNotEquals(a, b); + assertNotEquals(a.hashCode(), b.hashCode()); + } + + @Test + public void clone_preservesEqualityAndHashCode() { + LiteralReal a = new LiteralReal(-42.5); + LiteralReal c = (LiteralReal) a.clone(); + assertEquals(a, c); + assertEquals(a.hashCode(), c.hashCode()); + } +}