diff --git a/liquidjava-verifier/pom.xml b/liquidjava-verifier/pom.xml
index 5b42f4cb..673b0b5f 100644
--- a/liquidjava-verifier/pom.xml
+++ b/liquidjava-verifier/pom.xml
@@ -39,6 +39,45 @@
+org.jacoco
+jacoco-maven-plugin
+0.8.14
+
+
+default-prepare-agent
+
+prepare-agent
+
+
+
+default-report
+
+report
+
+
+
+default-check
+
+check
+
+
+
+
+BUNDLE
+
+
+COMPLEXITY
+COVEREDRATIO
+0.60
+
+
+
+
+
+
+
+
+
org.apache.maven.plugins
maven-compiler-plugin
${pVersion.compiler}
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..341ce079
--- /dev/null
+++ b/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralString.java
@@ -0,0 +1,15 @@
+
+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());
+ }
+}
diff --git a/liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/TestOptimization.java b/liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/TestOptimization.java
new file mode 100644
index 00000000..cdf819a8
--- /dev/null
+++ b/liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/TestOptimization.java
@@ -0,0 +1,18 @@
+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));
+ }
+}
diff --git a/liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/TesteIntegracao.java b/liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/TesteIntegracao.java
new file mode 100644
index 00000000..eb156065
--- /dev/null
+++ b/liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/TesteIntegracao.java
@@ -0,0 +1,28 @@
+package liquidjava.integration;
+
+import liquidjava.errors.ErrorEmitter;
+import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * Simple integration test that verifies interaction between the ErrorEmitter class and the simulated error reporting
+ * process.
+ */
+public class TesteIntegracao {
+
+ @Test
+ void shouldEmitAndRetrieveErrorInfo() {
+ ErrorEmitter emitter = new ErrorEmitter();
+
+ emitter.addError("Integration test error", "FakeFile.java", 42);
+
+ assertTrue(emitter.foundError(), "Emitter should register an error");
+ assertNotNull(emitter.getFullMessage(), "Full message should not be null");
+
+ try {
+ emitter.getFilePath();
+ } catch (Exception e) {
+ fail("getFilePath() should not throw an exception");
+ }
+ }
+}
diff --git a/liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/TestesErrorEmitter.java b/liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/TestesErrorEmitter.java
new file mode 100644
index 00000000..c690fa84
--- /dev/null
+++ b/liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/TestesErrorEmitter.java
@@ -0,0 +1,41 @@
+package liquidjava.errors;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.*;
+
+public class TestesErrorEmitter {
+
+ private ErrorEmitter emitter;
+
+ /**
+ * Initializes a new ErrorEmitter before each test.
+ */
+
+ @BeforeEach
+ void setup() {
+ emitter = new ErrorEmitter();
+ }
+
+ /**
+ * Tests that all getter methods return non-null values after an error is added.
+ */
+
+ @Test
+ void returnNonNullValues() {
+ emitter.addError("test", "main.java", 1);
+ assertNotNull(emitter.getFullMessage());
+ assertNotNull(emitter.getTitleMessage());
+ assertNotNull(emitter.getErrorStatus());
+ }
+
+ /**
+ * Tests adding an error and verifying that it is correctly registered and demontrated through the emitter.
+ */
+ @Test
+ void addError() {
+ emitter.addError("Test error", "Some message", 1);
+ assertTrue(emitter.foundError(), "Emitter should report found error");
+ assertTrue(emitter.getFullMessage().contains("Some message"));
+ }
+}