11package liquidjava .rj_language .opt ;
22
33import static liquidjava .utils .VCTestUtils .*;
4- import static org .junit .jupiter .api .Assertions .assertEquals ;
54import liquidjava .processor .VCImplication ;
65import liquidjava .rj_language .Predicate ;
76import liquidjava .rj_language .ast .BinaryExpression ;
@@ -15,19 +14,14 @@ class VCFoldingTest {
1514
1615 @ Test
1716 void foldsIntegerArithmeticAndComparisons () {
18- VCImplication implication = vc ("1 + 2 == 3" );
19-
20- assertSimplificationSteps (folding , implication , step ("3 == 3" ), step ("true" ));
17+ assertSimplificationSteps (folding , vc ("1 + 2 == 3" ), step ("3 == 3" ), step ("true" ));
2118 assertSimplificationSteps (folding , vc ("4 > 7" ), step ("false" ));
2219 }
2320
2421 @ Test
2522 void foldsRealAndMixedNumericExpressions () {
26- VCImplication realArithmetic = vc ("1.5 + 2.0 == 3.5" );
27- VCImplication mixedArithmetic = vc ("2 + 0.5 > 2" );
28-
29- assertSimplificationSteps (folding , realArithmetic , step ("3.5 == 3.5" ), step ("true" ));
30- assertSimplificationSteps (folding , mixedArithmetic , step ("2.5 > 2" ), step ("true" ));
23+ assertSimplificationSteps (folding , vc ("1.5 + 2.0 == 3.5" ), step ("3.5 == 3.5" ), step ("true" ));
24+ assertSimplificationSteps (folding , vc ("2 + 0.5 > 2" ), step ("2.5 > 2" ), step ("true" ));
3125 }
3226
3327 @ Test
@@ -44,19 +38,14 @@ void leavesRealDivisionAndModuloByZeroUnchanged() {
4438
4539 @ Test
4640 void foldsIntegerDivisionTowardZeroForNegativeResults () {
47- VCImplication implication = vc ("(2 - 7) / 2 == -2" );
48-
49- assertSimplificationSteps (folding , implication , step ("(2 - 7) / 2 == -2" ), step ("-5 / 2 == -2" ),
41+ assertSimplificationSteps (folding , vc ("(2 - 7) / 2 == -2" ), step ("(2 - 7) / 2 == -2" ), step ("-5 / 2 == -2" ),
5042 step ("-2 == -2" ), step ("-2 == -2" ), step ("true" ));
5143 }
5244
5345 @ Test
5446 void foldsIntegerModuloWithJavaSignedRemainder () {
55- VCImplication negativeDividend = vc ("-5 % 2 < 0" );
56- VCImplication negativeDivisor = vc ("5 % -2 > 0" );
57-
58- assertSimplificationSteps (folding , negativeDividend , step ("-5 % 2 < 0" ), step ("-1 < 0" ), step ("true" ));
59- assertSimplificationSteps (folding , negativeDivisor , step ("5 % -2 > 0" ), step ("1 > 0" ), step ("true" ));
47+ assertSimplificationSteps (folding , vc ("-5 % 2 < 0" ), step ("-5 % 2 < 0" ), step ("-1 < 0" ), step ("true" ));
48+ assertSimplificationSteps (folding , vc ("5 % -2 > 0" ), step ("5 % -2 > 0" ), step ("1 > 0" ), step ("true" ));
6049 }
6150
6251 @ Test
@@ -85,9 +74,7 @@ void foldsPartialComparisonsWithoutDroppingSymbolicTerms() {
8574 @ Test
8675 void foldsUnaryExpressions () {
8776 assertSimplificationSteps (folding , vc ("!true" ), step ("false" ));
88- VCImplication implication = vc ("-3 < 0" );
89-
90- assertSimplificationSteps (folding , implication , step ("-3 < 0" ), step ("true" ));
77+ assertSimplificationSteps (folding , vc ("-3 < 0" ), step ("-3 < 0" ), step ("true" ));
9178 }
9279
9380 @ Test
@@ -99,9 +86,7 @@ void foldsIteExpressions() {
9986
10087 @ Test
10188 void foldsIteBranchesBeforeComparingThem () {
102- VCImplication implication = vc ("cond ? 1 + 2 : 3" );
103-
104- assertSimplificationSteps (folding , implication , step ("cond ? 3 : 3" ), step ("3" ));
89+ assertSimplificationSteps (folding , vc ("cond ? 1 + 2 : 3" ), step ("cond ? 3 : 3" ), step ("3" ));
10590 }
10691
10792 @ Test
@@ -118,6 +103,16 @@ void foldsEnumEqualityAndInequality() {
118103 assertSimplificationSteps (folding , vc ("Mode.Photo != Mode.Video" ), step ("true" ));
119104 }
120105
106+ @ Test
107+ void recordsOriginWhenOnlyGroupIsUnwrapped () {
108+ assertSimplificationSteps (folding , vc ("(x > 0)" ), step ("x > 0" ));
109+ }
110+
111+ @ Test
112+ void recordsOriginWhenFoldingLaterImplication () {
113+ assertSimplificationSteps (folding , vc ("x > 0" , "1 + 2 > 0" ), step ("x > 0" , "3 > 0" ), step ("x > 0" , "true" ));
114+ }
115+
121116 @ Test
122117 void foldsResolvedEnumLiterals () {
123118 Enum limit = new Enum ("Config" , "LIMIT" );
@@ -138,23 +133,4 @@ void foldsResolvedEnumLiteralsInsideLargerExpression() {
138133
139134 assertSimplificationSteps (folding , implication , step ("3 + 2 == 5" ), step ("5 == 5" ), step ("true" ));
140135 }
141-
142- @ Test
143- void recordsOriginWhenOnlyGroupIsUnwrapped () {
144- VCImplication implication = vc ("(x > 0)" );
145- VCSimplificationResult result = assertSimplificationSteps (folding , implication , step ("x > 0" ));
146-
147- assertEquals ("x > 0" , result .getImplication ().getRefinement ().toString ());
148- }
149-
150- @ Test
151- void recordsOriginWhenFoldingLaterImplication () {
152- VCImplication implication = vc ("x > 0" , "1 + 2 > 0" );
153-
154- VCSimplificationResult result = assertSimplificationSteps (folding , implication , step ("x > 0" , "3 > 0" ));
155-
156- result = assertSimplificationSteps (folding , result .getImplication (), step ("x > 0" , "true" ));
157- assertEquals ("true" , result .getImplication ().getNext ().getRefinement ().getExpression ().toDisplayString ());
158- }
159-
160136}
0 commit comments