File tree Expand file tree Collapse file tree 3 files changed +82
-0
lines changed
liquidjava-example/src/main/java/testSuite Expand file tree Collapse file tree 3 files changed +82
-0
lines changed Original file line number Diff line number Diff line change 1+ package testSuite ;
2+
3+ import liquidjava .specification .StateRefinement ;
4+ import liquidjava .specification .StateSet ;
5+
6+ @ SuppressWarnings ("unused" )
7+ @ StateSet ({"photoMode" , "videoMode" , "noMode" })
8+ class CorrectEnumResetMode {
9+ enum Mode {
10+ Photo , Video , Unknown
11+ }
12+
13+ Mode mode ;
14+
15+ @ StateRefinement (to ="noMode(this)" )
16+ public CorrectEnumResetMode () {}
17+
18+ @ StateRefinement (from ="noMode(this) && mode == Mode.Photo" , to ="photoMode(this)" )
19+ @ StateRefinement (from ="noMode(this) && mode == Mode.Video" , to ="videoMode(this)" )
20+ public void setMode (Mode mode ) {
21+ this .mode = mode ;
22+ }
23+
24+ @ StateRefinement (from ="photoMode(this)" , to ="noMode(this)" )
25+ @ StateRefinement (from ="videoMode(this)" , to ="noMode(this)" )
26+ public void resetMode () {
27+ this .mode = null ;
28+ }
29+
30+ @ StateRefinement (from ="photoMode(this)" )
31+ public void takePhoto () {}
32+
33+ @ StateRefinement (from ="videoMode(this)" )
34+ public void takeVideo () {}
35+
36+ public static void main (String [] args ) {
37+ CorrectEnumResetMode st = new CorrectEnumResetMode ();
38+ st .setMode (Mode .Photo ); // noMode -> photoMode
39+ st .takePhoto ();
40+ st .resetMode (); // photoMode -> noMode
41+ st .setMode (Mode .Video ); // noMode -> videoMode
42+ st .takeVideo ();
43+ }
44+ }
Original file line number Diff line number Diff line change 1+ // Refinement Error
2+ package testSuite ;
3+
4+ import liquidjava .specification .Refinement ;
5+
6+ @ SuppressWarnings ("unused" )
7+ class ErrorEnumFunctionRefinement {
8+ enum Color { Red , Green , Blue }
9+
10+ Color c ;
11+
12+ Color changeColor (@ Refinement ("newColor == Color.Red || newColor == Color.Green" ) Color newColor ) {
13+ c = newColor ; // correct
14+ return c ;
15+ }
16+
17+ public static void main (String [] args ) {
18+ ErrorEnumFunctionRefinement e = new ErrorEnumFunctionRefinement ();
19+ e .changeColor (Color .Red ); // correct
20+ e .changeColor (Color .Blue ); // error
21+ }
22+ }
Original file line number Diff line number Diff line change 1+ // Refinement Error
2+ package testSuite ;
3+
4+ import liquidjava .specification .Refinement ;
5+
6+ @ SuppressWarnings ("unused" )
7+ class ErrorEnumNull {
8+ enum Color {
9+ Red , Green , Blue
10+ }
11+
12+ public static void main (String [] args ) {
13+ @ Refinement ("c == Color.Red || c == Color.Green" )
14+ Color c = null ; // error
15+ }
16+ }
You can’t perform that action at this time.
0 commit comments