diff --git a/liquidjava-verifier/pom.xml b/liquidjava-verifier/pom.xml index 5b42f4cb..c3ad4899 100644 --- a/liquidjava-verifier/pom.xml +++ b/liquidjava-verifier/pom.xml @@ -1,6 +1,5 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 @@ -10,7 +9,7 @@ liquidjava-verifier - + liquidjava-verifier 5.2-SNAPSHOT liquidjava-verifier @@ -95,6 +94,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 + + + + + + + + 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..4144d9ab --- /dev/null +++ b/liquidjava-verifier/src/test/java/liquidjava/ast/opt/TestOptimization.java @@ -0,0 +1,33 @@ +package liquidjava.ast.opt; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.Test; + +import liquidjava.rj_language.ast.BinaryExpression; +import liquidjava.rj_language.ast.LiteralBoolean; +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 testBinaryFoldBool() { + // Given: true != false + // Expected: true + BinaryExpression b = new BinaryExpression(new LiteralBoolean(true), "!=", new LiteralBoolean(false)); + + ValDerivationNode r = ConstantFolding.fold(new ValDerivationNode(b, null)); + + // Then: + assertEquals(r.getValue(), new LiteralBoolean(true), "Expect result to be true"); + } +} 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..997de2c7 --- /dev/null +++ b/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralString.java @@ -0,0 +1,50 @@ + +package liquidjava.rj_language; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +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 testLiteralStringEqualsClass() { + // Given: s1.getClass() == LiteralString && s2.getClass() == String + // Expected: False (LiteralString != String) + + LiteralString s1 = new LiteralString("hello"); + String s2 = "hello"; + + // when + boolean result = s1.equals(s2); + + // Then: + assertFalse(result, "Expected result to be False"); + } + + @Test + public void testLiteralStringEqualsNull() { + // Given: s1 == null && s2 == null + // Expected: True (null == null) + + LiteralString s1 = new LiteralString(null); + LiteralString s2 = new LiteralString(null); + + // When + boolean result = s1.equals(s2); + + // Then + assertTrue(result, "Expected result to be True"); + } + +}