From c2bc11ef2de70d29781823688ea9f8898346ce94 Mon Sep 17 00:00:00 2001 From: fc64732 Date: Thu, 13 Nov 2025 15:11:14 +0000 Subject: [PATCH] =?UTF-8?q?2=20testes=20unit=C3=A1rios=20e=20teste=20de=20?= =?UTF-8?q?integra=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rj_language/TestBinaryExpression.java | 17 ++++++++++++++ .../rj_language/TestLiteralInt.java | 14 ++++++++++++ .../rj_language/TestLiteralString.java | 13 +++++++++++ .../opt/TestConstantFoldingIntegration.java | 22 +++++++++++++++++++ .../rj_language/opt/TestOptimization.java | 16 ++++++++++++++ 5 files changed, 82 insertions(+) create mode 100644 liquidjava-verifier/src/test/java/liquidjava/rj_language/TestBinaryExpression.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/opt/TestConstantFoldingIntegration.java create mode 100644 liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/TestOptimization.java diff --git a/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestBinaryExpression.java b/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestBinaryExpression.java new file mode 100644 index 00000000..86351c2d --- /dev/null +++ b/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestBinaryExpression.java @@ -0,0 +1,17 @@ +package liquidjava.rj_language; + +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 TestBinaryExpression { + @Test + public void testSimpleAddition() { + BinaryExpression expr = new BinaryExpression(new LiteralInt(5), "+", new LiteralInt(7)); + ValDerivationNode result = ConstantFolding.fold(new ValDerivationNode(expr, null)); + assertEquals(new LiteralInt(12), result.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..8825b79b --- /dev/null +++ b/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralInt.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 TestLiteralInt{ + @Test + public void testLiteralInt(){ + LiteralInt s1 = new LiteralInt(10); + LiteralInt s2 = new LiteralInt(20); + assertNotEquals(s1.hashCode(), s2.hashCode()); + } + +} \ 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..1ca8588c --- /dev/null +++ b/liquidjava-verifier/src/test/java/liquidjava/rj_language/TestLiteralString.java @@ -0,0 +1,13 @@ +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/opt/TestConstantFoldingIntegration.java b/liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/TestConstantFoldingIntegration.java new file mode 100644 index 00000000..15741da1 --- /dev/null +++ b/liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/TestConstantFoldingIntegration.java @@ -0,0 +1,22 @@ +package liquidjava.ast.opt; + +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 TestConstantFoldingIntegration { + @Test + public void testComplexFold() { + BinaryExpression expr = new BinaryExpression( + new BinaryExpression(new LiteralInt(2), "*", new LiteralInt(3)), + "+", + new LiteralInt(4) + ); + + ValDerivationNode result = ConstantFolding.fold(new ValDerivationNode(expr, null)); + assertEquals(new LiteralInt(10), result.getValue()); + } +} \ No newline at end of file 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..b2fee8c2 --- /dev/null +++ b/liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/TestOptimization.java @@ -0,0 +1,16 @@ +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