From 7c9aef7395cf814d73b0ef4538559d490047dfeb Mon Sep 17 00:00:00 2001 From: d1niss Date: Thu, 6 Nov 2025 20:47:43 +0000 Subject: [PATCH 1/3] Add new unit and integration tests (fc63776) --- liquidjava-verifier/pom.xml | 39 +++++++++++++++++++ .../liquidjava/ast/opt/TestOptimization.java | 18 +++++++++ .../ast/opt/TestOptimizationInt.java | 18 +++++++++ .../rj_language/TestLiteralInt.java | 24 ++++++++++++ .../rj_language/TestLiteralString.java | 14 +++++++ .../rj_language/TestLiteralStringExtra.java | 22 +++++++++++ 6 files changed, 135 insertions(+) create mode 100644 liquidjava-verifier/src/test/java/liquidjava/ast/opt/TestOptimization.java create mode 100644 liquidjava-verifier/src/test/java/liquidjava/ast/opt/TestOptimizationInt.java create mode 100644 liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralInt.java create mode 100644 liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralString.java create mode 100644 liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralStringExtra.java 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/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..6e76382f --- /dev/null +++ b/liquidjava-verifier/src/test/java/liquidjava/ast/opt/TestOptimizationInt.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 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()); + } +} \ No newline at end of file diff --git a/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralInt.java b/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralInt.java new file mode 100644 index 00000000..a54a6595 --- /dev/null +++ b/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralInt.java @@ -0,0 +1,24 @@ +package liquidjava.rj_language; + +import static org.junit.Assert.*; +import org.junit.Test; +import liquidjava.rj_language.ast.LiteralInt; + +public class TestLiteralInt { + + @Test + public void testLiteralIntEquality() { + LiteralInt a = new LiteralInt(10); + LiteralInt b = new LiteralInt(10); + assertEquals(a, b); + } + + @Test + public void testLiteralIntHashCodeConsistency() { + LiteralInt a = new LiteralInt(5); + int firstHash = a.hashCode(); + int secondHash = a.hashCode(); + assertEquals(firstHash, secondHash); + + } +} 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/TestLiteralStringExtra.java b/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralStringExtra.java new file mode 100644 index 00000000..f7615d42 --- /dev/null +++ b/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralStringExtra.java @@ -0,0 +1,22 @@ +package liquidjava.rj_language; + +import static org.junit.Assert.*; +import org.junit.Test; +import liquidjava.rj_language.ast.LiteralString; + +public class TestLiteralStringExtra { + + @Test + public void testEqualStringsHaveEqualHashCodes() { + LiteralString s1 = new LiteralString("hello"); + LiteralString s2 = new LiteralString("hello"); + assertEquals(s1.hashCode(), s2.hashCode()); + } + + @Test + public void testDifferentStringsAreNotEqual() { + LiteralString s1 = new LiteralString("hello"); + LiteralString s2 = new LiteralString("world"); + assertNotEquals(s1, s2); + } +} From 56f8fd22580f46c5c62ad6c85caf6cb7a0af68df Mon Sep 17 00:00:00 2001 From: d1niss Date: Thu, 6 Nov 2025 21:24:34 +0000 Subject: [PATCH 2/3] Add new unit and integration tests (fc63776) --- .../ast/opt/TestOptimizationInt.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/liquidjava-verifier/src/test/java/liquidjava/ast/opt/TestOptimizationInt.java b/liquidjava-verifier/src/test/java/liquidjava/ast/opt/TestOptimizationInt.java index 6e76382f..9777a1ca 100644 --- a/liquidjava-verifier/src/test/java/liquidjava/ast/opt/TestOptimizationInt.java +++ b/liquidjava-verifier/src/test/java/liquidjava/ast/opt/TestOptimizationInt.java @@ -1,4 +1,5 @@ import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import org.junit.Test; @@ -6,6 +7,7 @@ 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 @@ -15,4 +17,20 @@ public void testIntegerAddFold() { 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 From 28c450791490636ff4a1d4232bd09b0136d3222d Mon Sep 17 00:00:00 2001 From: d1niss Date: Thu, 6 Nov 2025 21:54:59 +0000 Subject: [PATCH 3/3] Add new unit and integration tests (fc63776) --- .../liquidjava/TestLiteralBooleanSmall.java | 19 +++++++++++++++ .../test/java/liquidjava/TestLiterals.java | 23 ++++++++++++++++++ .../ast/opt/TestOptimizationInt.java | 1 - .../rj_language/TestLiteralInt.java | 24 ------------------- .../rj_language/TestLiteralStringExtra.java | 22 ----------------- 5 files changed, 42 insertions(+), 47 deletions(-) create mode 100644 liquidjava-verifier/src/test/java/liquidjava/TestLiteralBooleanSmall.java create mode 100644 liquidjava-verifier/src/test/java/liquidjava/TestLiterals.java delete mode 100644 liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralInt.java delete mode 100644 liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralStringExtra.java 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/TestOptimizationInt.java b/liquidjava-verifier/src/test/java/liquidjava/ast/opt/TestOptimizationInt.java index 9777a1ca..a2ed0886 100644 --- a/liquidjava-verifier/src/test/java/liquidjava/ast/opt/TestOptimizationInt.java +++ b/liquidjava-verifier/src/test/java/liquidjava/ast/opt/TestOptimizationInt.java @@ -32,5 +32,4 @@ public void testIntegerSubFold() { assertEquals(new LiteralInt(3), r.getValue()); } - } \ No newline at end of file diff --git a/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralInt.java b/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralInt.java deleted file mode 100644 index a54a6595..00000000 --- a/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralInt.java +++ /dev/null @@ -1,24 +0,0 @@ -package liquidjava.rj_language; - -import static org.junit.Assert.*; -import org.junit.Test; -import liquidjava.rj_language.ast.LiteralInt; - -public class TestLiteralInt { - - @Test - public void testLiteralIntEquality() { - LiteralInt a = new LiteralInt(10); - LiteralInt b = new LiteralInt(10); - assertEquals(a, b); - } - - @Test - public void testLiteralIntHashCodeConsistency() { - LiteralInt a = new LiteralInt(5); - int firstHash = a.hashCode(); - int secondHash = a.hashCode(); - assertEquals(firstHash, secondHash); - - } -} diff --git a/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralStringExtra.java b/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralStringExtra.java deleted file mode 100644 index f7615d42..00000000 --- a/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralStringExtra.java +++ /dev/null @@ -1,22 +0,0 @@ -package liquidjava.rj_language; - -import static org.junit.Assert.*; -import org.junit.Test; -import liquidjava.rj_language.ast.LiteralString; - -public class TestLiteralStringExtra { - - @Test - public void testEqualStringsHaveEqualHashCodes() { - LiteralString s1 = new LiteralString("hello"); - LiteralString s2 = new LiteralString("hello"); - assertEquals(s1.hashCode(), s2.hashCode()); - } - - @Test - public void testDifferentStringsAreNotEqual() { - LiteralString s1 = new LiteralString("hello"); - LiteralString s2 = new LiteralString("world"); - assertNotEquals(s1, s2); - } -}