package org.jmlspecs.openjmltest.testcases; import java.util.Collection; import org.jmlspecs.openjmltest.EscBase; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.ParameterizedWithNames; import org.junit.runners.Parameterized.Parameters; @RunWith(ParameterizedWithNames.class) public class escenums extends EscBase { public escenums(String options, String solver) { super(options,solver); } @Test public void testBasicEnum() { helpTCX("tt.TestJava","package tt; \n" +"public enum TestJava { AA \n" +"}" ); } @Test public void testBasicEnum2() { helpTCX("tt.TestJava","package tt; \n" +"public enum TestJava { AA, BB, CC \n" +"}" ); } @Test public void testUseEnum() { helpTCX("tt.TestJava","package tt; \n" +" enum Z { AA, BB, CC } \n" +" public class TestJava {\n" +" public void m() {\n" +" //@ assert Z.AA != Z.BB; \n" +" }\n" +"}" ); } @Test public void testUseEnum2() { helpTCX("tt.TestJava","package tt; \n" +" enum Z { AA, BB, CC } \n" +" public class TestJava {\n" +" public void m() {\n" +" //@ assert Z.AA == Z.AA; \n" +" }\n" +"}" ); } @Test public void testUseEnum3() { helpTCX("tt.TestJava","package tt; \n" +" enum Z { AA, BB, CC } \n" +" public class TestJava {\n" +" public void m() {\n" +" Object o = new Object();\n" +" //@ assert Z.AA != o; \n" +" }\n" +"}" ); } @Test public void testUseEnum4() { helpTCX("tt.TestJava","package tt; \n" +" enum Z { AA, BB, CC } \n" +" public class TestJava {\n" +" public void m(Object o) {\n" +" //@ assume !(o instanceof Z) ;\n" +" //@ assert Z.AA != o; \n" +" }\n" +"}" ); } @Test public void testUseEnum4a() { helpTCX("tt.TestJava","package tt; \n" +" enum Z { AA, BB, CC } \n" +" public class TestJava {\n" +" public void m(Object o) {\n" +" //@ assume (o instanceof Z) ;\n" +" //@ assert o == Z.AA || o == Z.CC || o == Z.BB; \n" +" }\n" +"}" ); } @Test public void testUseEnum5() { helpTCX("tt.TestJava","package tt; \n" +" enum Z { AA, BB, CC } \n" +" public class TestJava {\n" +" public void m(Object o) {\n" +" //@ assert Z.AA != o; \n" +" }\n" +"}" ,"/tt/TestJava.java:5: warning: The prover cannot establish an assertion (Assert) in method m",12 ); } @Test public void enumSwitch() { helpTCX("tt.TestJava","package tt; \n" +"public class TestJava {\n" +" //@ ensures \\result > 0;\n" +" //@ ensures the_value == MyEnum.ONE ==> \\result == 2;\n" +" //@ ensures the_value == MyEnum.TWO ==> \\result == 4;\n" +" //@ ensures the_value == MyEnum.THREE ==> \\result == 8;\n" +" public int switchStatement(final MyEnum the_value) {\n" +" int result = 0;\n" +" switch (the_value) {\n" +" case ONE: \n" +" result = 2;\n" +" break; \n" +" \n" +" case TWO: \n" +" result = 4; \n" +" break; \n" +" \n" +" case THREE: \n" +" result = 8; \n" +" break; \n" +" \n" +" default: \n" +" result = 1; \n" +" } \n" +" return result; \n" +" } \n" +" \n" +" static public enum MyEnum { \n" +" ONE, TWO, THREE; \n" +" } \n" +"} \n" ); } }