diff --git a/liquidjava-verifier/pom.xml b/liquidjava-verifier/pom.xml index af57236d..ba06b330 100644 --- a/liquidjava-verifier/pom.xml +++ b/liquidjava-verifier/pom.xml @@ -61,6 +61,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/rj_language/TestLiteralString.java b/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralString.java new file mode 100644 index 00000000..5ed1ffcb --- /dev/null +++ b/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralString.java @@ -0,0 +1,25 @@ +package liquidjava.rj_language; + +import static org.junit.Assert.assertEquals; +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()); + } + + @Test + public void testToString() { + LiteralString string = new LiteralString("hello world"); + + String result = string.toString(); + + assertEquals("hello world", result); + } +} \ No newline at end of file diff --git a/liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/ExpressionSimplifierTest.java b/liquidjava-verifier/src/test/java/liquidjava/rj_language/ast/opt/ExpressionSimplifierTest.java similarity index 100% rename from liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/ExpressionSimplifierTest.java rename to liquidjava-verifier/src/test/java/liquidjava/rj_language/ast/opt/ExpressionSimplifierTest.java diff --git a/liquidjava-verifier/src/test/java/liquidjava/rj_language/ast/opt/TestOptimization.java b/liquidjava-verifier/src/test/java/liquidjava/rj_language/ast/opt/TestOptimization.java new file mode 100644 index 00000000..2a596127 --- /dev/null +++ b/liquidjava-verifier/src/test/java/liquidjava/rj_language/ast/opt/TestOptimization.java @@ -0,0 +1,48 @@ +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)); + } + + @Test + public void testBinaryExpressionWithLiteralInt() { + LiteralInt num1 = new LiteralInt(40); + LiteralInt num2 = new LiteralInt(60); + + BinaryExpression expression = new BinaryExpression(num1, "+", num2); + + String result = expression.toString(); + + assertEquals("40 + 60", result); + } + + @Test + public void testIntegrationNestedAddition() { + // Create integer literals + LiteralInt num1 = new LiteralInt(5); + LiteralInt num2 = new LiteralInt(10); + LiteralInt num3 = new LiteralInt(20); + + // Create nested binary expressions + BinaryExpression firstSum = new BinaryExpression(num1, "+", num2); // 5 + 10 + BinaryExpression nestedSum = new BinaryExpression(firstSum, "+", num3); // (5 + 10) + 20 + + // Convert to string + String result = nestedSum.toString(); + + // Expected output: "(5 + 10) + 20" + assertEquals("5 + 10 + 20", result); + } + +} \ No newline at end of file diff --git a/liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/VariableResolverTest.java b/liquidjava-verifier/src/test/java/liquidjava/rj_language/ast/opt/VariableResolverTest.java similarity index 100% rename from liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/VariableResolverTest.java rename to liquidjava-verifier/src/test/java/liquidjava/rj_language/ast/opt/VariableResolverTest.java