Skip to content

Commit 8c473f7

Browse files
committed
Refactor ExpressionFormatterTest
1 parent f9e5220 commit 8c473f7

1 file changed

Lines changed: 41 additions & 68 deletions

File tree

liquidjava-verifier/src/test/java/liquidjava/rj_language/ast/ExpressionFormatterTest.java

Lines changed: 41 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -2,111 +2,84 @@
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
44

5-
import java.util.List;
6-
75
import org.junit.jupiter.api.Test;
86

7+
import liquidjava.rj_language.parsing.RefinementsParser;
8+
99
class ExpressionFormatterTest {
1010

11+
private static Expression parse(String refinement) {
12+
return RefinementsParser.createAST(refinement, "");
13+
}
14+
1115
@Test
1216
void formatsUnaryAtoms() {
13-
assertEquals("!x", new UnaryExpression("!", new Var("x")).toDisplayString());
14-
assertEquals("!false", new UnaryExpression("!", new LiteralBoolean(false)).toDisplayString());
17+
assertEquals("!x", parse("!x").toDisplayString());
18+
assertEquals("!false", parse("!false").toDisplayString());
1519
}
1620

1721
@Test
1822
void formatsInternalVariables() {
19-
assertEquals("x", new Var("x").toDisplayString());
20-
assertEquals("x²", new Var("#x_2").toDisplayString());
21-
assertEquals("#fresh¹²", new Var("#fresh_12").toDisplayString());
22-
assertEquals("#ret³", new Var("#ret_3").toDisplayString());
23-
assertEquals("this#Class", new Var("this#Class").toDisplayString());
23+
assertEquals("x", parse("x").toDisplayString());
24+
assertEquals("x²", parse("#x_2").toDisplayString());
25+
assertEquals("#fresh¹²", parse("#fresh_12").toDisplayString());
26+
assertEquals("#ret³", parse("#ret_3").toDisplayString());
27+
assertEquals("this#Class", parse("this#Class").toDisplayString());
2428
}
2529

2630
@Test
2731
void formatsEnums() {
28-
assertEquals("Color.RED", new Enum("Color", "RED").toDisplayString());
32+
assertEquals("Color.RED", parse("Color.RED").toDisplayString());
2933
}
3034

3135
@Test
3236
void formatsUnaryCompounds() {
33-
Expression comparison = new BinaryExpression(new Var("x"), ">", new LiteralInt(0));
34-
35-
assertEquals("x > 0", comparison.toDisplayString());
36-
assertEquals("!(x > 0)", new UnaryExpression("!", comparison).toDisplayString());
37-
assertEquals("-(-x)", new UnaryExpression("-", new GroupExpression(new UnaryExpression("-", new Var("x"))))
38-
.toDisplayString());
37+
assertEquals("x > 0", parse("x > 0").toDisplayString());
38+
assertEquals("!(x > 0)", parse("!(x > 0)").toDisplayString());
39+
assertEquals("-(-x)", parse("-(-x)").toDisplayString());
3940
}
4041

4142
@Test
4243
void formatsBinaryPrecedence() {
43-
Expression sum = new BinaryExpression(new Var("a"), "+", new Var("b"));
44-
Expression product = new BinaryExpression(new Var("b"), "*", new Var("c"));
45-
46-
assertEquals("(a + b) * c", new BinaryExpression(sum, "*", new Var("c")).toDisplayString());
47-
assertEquals("a * (a + b)", new BinaryExpression(new Var("a"), "*", sum).toDisplayString());
48-
assertEquals("a + b * c", new BinaryExpression(new Var("a"), "+", product).toDisplayString());
49-
assertEquals("a - (a + b)", new BinaryExpression(new Var("a"), "-", sum).toDisplayString());
50-
assertEquals("a + b + c", new BinaryExpression(sum, "+", new Var("c")).toDisplayString());
51-
assertEquals("b * c * c", new BinaryExpression(product, "*", new Var("c")).toDisplayString());
44+
assertEquals("(a + b) * c", parse("(a + b) * c").toDisplayString());
45+
assertEquals("a * (a + b)", parse("a * (a + b)").toDisplayString());
46+
assertEquals("a + b * c", parse("a + b * c").toDisplayString());
47+
assertEquals("a - (a + b)", parse("a - (a + b)").toDisplayString());
48+
assertEquals("a + b + c", parse("a + b + c").toDisplayString());
49+
assertEquals("b * c * c", parse("b * c * c").toDisplayString());
5250
}
5351

5452
@Test
5553
void omitsUnnecessaryGroupParentheses() {
56-
Expression comparison = new BinaryExpression(new FunctionInvocation("size", List.of(new Var("#stack_294"))),
57-
">", new LiteralInt(0));
58-
Expression groupedComparison = new GroupExpression(comparison);
59-
60-
assertEquals("size(stack²⁹⁴) > 0", groupedComparison.toDisplayString());
61-
assertEquals("size(stack²⁹⁴) > 0 && ready",
62-
new BinaryExpression(groupedComparison, "&&", new Var("ready")).toDisplayString());
63-
assertEquals("ready && size(stack²⁹⁴) > 0",
64-
new BinaryExpression(new Var("ready"), "&&", groupedComparison).toDisplayString());
54+
assertEquals("size(stack²⁹⁴) > 0", parse("(size(#stack_294) > 0)").toDisplayString());
55+
assertEquals("size(stack²⁹⁴) > 0 && ready", parse("(size(#stack_294) > 0) && ready").toDisplayString());
56+
assertEquals("ready && size(stack²⁹⁴) > 0", parse("ready && (size(#stack_294) > 0)").toDisplayString());
6557
}
6658

6759
@Test
6860
void formatsRightGrouping() {
69-
Expression groupedSum = new GroupExpression(new BinaryExpression(new Var("b"), "+", new Var("c")));
70-
Expression groupedComparison = new GroupExpression(
71-
new BinaryExpression(new LiteralInt(1), ">", new LiteralInt(0)));
72-
73-
assertEquals("a - (b + c)", new BinaryExpression(new Var("a"), "-", groupedSum).toDisplayString());
74-
assertEquals("x == (1 > 0)", new BinaryExpression(new Var("x"), "==", groupedComparison).toDisplayString());
61+
assertEquals("a - (b + c)", parse("a - (b + c)").toDisplayString());
62+
assertEquals("x == (1 > 0)", parse("x == (1 > 0)").toDisplayString());
7563
}
7664

7765
@Test
7866
void formatsLogicalExpressions() {
79-
Expression andExpression = new BinaryExpression(new Var("a"), "&&", new Var("b"));
80-
Expression orExpression = new BinaryExpression(new Var("b"), "||", new Var("c"));
81-
Expression implication = new BinaryExpression(new Var("b"), "-->", new Var("c"));
82-
83-
assertEquals("a && b || c", new BinaryExpression(andExpression, "||", new Var("c")).toDisplayString());
84-
assertEquals("a && (b || c)", new BinaryExpression(new Var("a"), "&&", orExpression).toDisplayString());
85-
assertEquals("a --> b --> c", new BinaryExpression(new Var("a"), "-->", implication).toDisplayString());
86-
assertEquals("(a --> b) --> c",
87-
new BinaryExpression(new BinaryExpression(new Var("a"), "-->", new Var("b")), "-->", new Var("c"))
88-
.toDisplayString());
89-
assertEquals("a && b && c", new BinaryExpression(andExpression, "&&", new Var("c")).toDisplayString());
90-
assertEquals("a || b || c",
91-
new BinaryExpression(new BinaryExpression(new Var("a"), "||", new Var("b")), "||", new Var("c"))
92-
.toDisplayString());
67+
assertEquals("a && b || c", parse("a && b || c").toDisplayString());
68+
assertEquals("a && (b || c)", parse("a && (b || c)").toDisplayString());
69+
assertEquals("a --> b --> c", parse("a --> b --> c").toDisplayString());
70+
assertEquals("(a --> b) --> c", parse("(a --> b) --> c").toDisplayString());
71+
assertEquals("a && b && c", parse("a && b && c").toDisplayString());
72+
assertEquals("a || b || c", parse("a || b || c").toDisplayString());
9373
}
9474

9575
@Test
9676
void formatsTernaryExpressions() {
97-
Expression ite = new Ite(new Var("a"), new Var("b"), new Var("c"));
98-
Expression nestedElse = new Ite(new Var("c"), new Var("d"), new Var("e"));
99-
100-
assertEquals("(a ? b : c) + d", new BinaryExpression(ite, "+", new Var("d")).toDisplayString());
101-
assertEquals("(a ? b : c) ? d : e", new Ite(ite, new Var("d"), new Var("e")).toDisplayString());
102-
assertEquals("a ? (b ? c : d) : e",
103-
new Ite(new Var("a"), new Ite(new Var("b"), new Var("c"), new Var("d")), new Var("e"))
104-
.toDisplayString());
105-
assertEquals("a ? b : c ? d : e", new Ite(new Var("a"), new Var("b"), nestedElse).toDisplayString());
106-
assertEquals("(a ? b : c) ? d : e",
107-
new Ite(new GroupExpression(ite), new Var("d"), new Var("e")).toDisplayString());
108-
assertEquals("a ? b : c ? d : e",
109-
new Ite(new Var("a"), new Var("b"), new GroupExpression(nestedElse)).toDisplayString());
110-
assertEquals("a ? b : c", new Ite(new Var("a"), new Var("b"), new Var("c")).toDisplayString());
77+
assertEquals("(a ? b : c) + d", parse("(a ? b : c) + d").toDisplayString());
78+
assertEquals("(a ? b : c) ? d : e", parse("(a ? b : c) ? d : e").toDisplayString());
79+
assertEquals("a ? (b ? c : d) : e", parse("a ? (b ? c : d) : e").toDisplayString());
80+
assertEquals("a ? b : c ? d : e", parse("a ? b : c ? d : e").toDisplayString());
81+
assertEquals("(a ? b : c) ? d : e", parse("(a ? b : c) ? d : e").toDisplayString());
82+
assertEquals("a ? b : c ? d : e", parse("a ? b : (c ? d : e)").toDisplayString());
83+
assertEquals("a ? b : c", parse("a ? b : c").toDisplayString());
11184
}
11285
}

0 commit comments

Comments
 (0)