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/TestLiteralBooleanSmall.java b/liquidjava-verifier/src/test/java/liquidjava/TestLiteralBooleanSmall.java
new file mode 100644
index 00000000..de986bdb
--- /dev/null
+++ b/liquidjava-verifier/src/test/java/liquidjava/TestLiteralBooleanSmall.java
@@ -0,0 +1,19 @@
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import liquidjava.rj_language.ast.LiteralBoolean;
+
+public class TestLiteralBooleanSmall {
+
+ @Test
+ public void fromStringConstructor() {
+ assertFalse(new LiteralBoolean("false").isBooleanTrue());
+ }
+
+ @Test
+ public void cloneEquals() {
+ LiteralBoolean lb = new LiteralBoolean(true);
+ assertEquals(lb, lb.clone());
+ }
+}
\ No newline at end of file
diff --git a/liquidjava-verifier/src/test/java/liquidjava/TestLiterals.java b/liquidjava-verifier/src/test/java/liquidjava/TestLiterals.java
new file mode 100644
index 00000000..56fb30c6
--- /dev/null
+++ b/liquidjava-verifier/src/test/java/liquidjava/TestLiterals.java
@@ -0,0 +1,23 @@
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import liquidjava.rj_language.ast.LiteralInt;
+import liquidjava.rj_language.ast.LiteralString;
+
+public class TestLiterals {
+
+ @Test
+ public void literalIntFromStringAndClone() {
+ LiteralInt li = new LiteralInt("7");
+ assertEquals(7, li.getValue());
+ assertEquals(li, li.clone());
+ }
+
+ @Test
+ public void literalStringToStringAndEquals() {
+ LiteralString ls = new LiteralString("hello");
+ assertEquals("hello", ls.toString());
+ assertEquals(ls, ls.clone());
+ }
+}
\ 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..d99b0e7a
--- /dev/null
+++ b/liquidjava-verifier/src/test/java/liquidjava/ast/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));
+ }
+}
\ No newline at end of file
diff --git a/liquidjava-verifier/src/test/java/liquidjava/ast/opt/TestOptimizationInt.java b/liquidjava-verifier/src/test/java/liquidjava/ast/opt/TestOptimizationInt.java
new file mode 100644
index 00000000..a2ed0886
--- /dev/null
+++ b/liquidjava-verifier/src/test/java/liquidjava/ast/opt/TestOptimizationInt.java
@@ -0,0 +1,35 @@
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+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;
+import liquidjava.rj_language.ast.Var;
+
+public class TestOptimizationInt {
+ @Test
+ public void testIntegerAddFold() {
+ BinaryExpression b = new BinaryExpression(new LiteralInt(2), "+", new LiteralInt(3));
+
+ ValDerivationNode r = ConstantFolding.fold(new ValDerivationNode(b, null));
+ assertEquals(new LiteralInt(5), r.getValue());
+ }
+
+ @Test
+ public void testNoFoldWhenNonLiteral() {
+ BinaryExpression b = new BinaryExpression(new LiteralInt(1), "+", new Var("x"));
+ ValDerivationNode r = ConstantFolding.fold(new ValDerivationNode(b, null));
+ assertNotNull(r);
+ }
+
+ @Test
+ public void testIntegerSubFold() {
+ BinaryExpression b = new BinaryExpression(new LiteralInt(5), "-", new LiteralInt(2));
+ ValDerivationNode r = ConstantFolding.fold(new ValDerivationNode(b, null));
+ assertEquals(new LiteralInt(3), r.getValue());
+ }
+
+}
\ 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