Skip to content

Commit 684b19e

Browse files
committed
Add More Tests
1 parent 8d46af2 commit 684b19e

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/ExpressionSimplifierTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -684,6 +684,14 @@ void testRepeatedEqualDefinitionPropagatesWhenUsageComesFirst() {
684684
assertEquals("explicit(param)", result.getValue().toString());
685685
}
686686

687+
@Test
688+
void testRepeatedFunctionInvocationDefinitionPropagatesIntoTernaryCondition() {
689+
Expression expression = parse("modeOf(param) == 2 && (modeOf(param) == 2 ? explicit(param) : start(param))");
690+
ValDerivationNode result = ExpressionSimplifier.simplify(expression);
691+
692+
assertEquals("explicit(param)", result.getValue().toString());
693+
}
694+
687695
@Test
688696
void testRepeatedEqualDefinitionsPropagateIntoNestedTernaryConditions() {
689697
Expression expression = parse("mode == 2 && other == 3 && (mode == 2 ? (other == 3 ? a(p) : b(p)) : c(p))");

liquidjava-verifier/src/test/java/liquidjava/rj_language/opt/VariableResolverTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,32 @@ void testRepeatedEqualDefinitionCountsAsUsageBeforeDefinitionConjunct() {
128128
assertEquals("2", result.get("mode").toString());
129129
}
130130

131+
@Test
132+
void testRepeatedFunctionInvocationDefinitionCountsAsUsage() {
133+
Expression expression = parse("modeOf(param) == 2 && (modeOf(param) == 2 ? explicit(param) : start(param))");
134+
Map<String, Expression> result = VariableResolver.resolve(expression);
135+
136+
assertEquals(1, result.size(), "Function invocation definition should count repeated nested equality as usage");
137+
assertEquals("2", result.get("modeOf(param)").toString());
138+
}
139+
140+
@Test
141+
void testRepeatedExpressionDefinitionCountsAsUsage() {
142+
Expression expression = parse("limit == max - 1 && (limit == max - 1 ? a(p) : b(p))");
143+
Map<String, Expression> result = VariableResolver.resolve(expression);
144+
145+
assertEquals(1, result.size(), "Expression definition should count repeated nested equality as usage");
146+
assertEquals("max - 1", result.get("limit").toString());
147+
}
148+
149+
@Test
150+
void testRepeatedTopLevelDefinitionsOnlyDoNotCountAsUsage() {
151+
Expression expression = parse("mode == 2 && mode == 2");
152+
Map<String, Expression> result = VariableResolver.resolve(expression);
153+
154+
assertTrue(result.isEmpty(), "Repeated top-level definitions alone should not count as usage");
155+
}
156+
131157
@Test
132158
void testReturnVariableIsNotSubstituted() {
133159
Expression expression = parse("x > 0 && #ret_1 == x");

0 commit comments

Comments
 (0)