package org.jmlspecs.openjmltest.testcases; import org.jmlspecs.openjmltest.TCBase; import org.junit.Test; public class typecheckingvisibility extends TCBase { @Override public void setUp() throws Exception { // noCollectDiagnostics = true; // jmldebug = true; super.setUp(); main.addOptions("-no-purityCheck"); } @Test public void testLocalVisibility() { helpTCF("TestJava.java","public class TestJava { /*@ private invariant (\\forall int i; i>0; i!= 0); */ }"); } @Test public void testLocalVisibility2() { helpTCF("TestJava.java","public class TestJava { /*@ public invariant (\\forall int i; i>0; i!= 0); */ }"); } @Test public void testLocalVisibility3() { helpTCF("TestJava.java","public class TestJava { /*@ public invariant 0 == (\\let int i = 0; i); */ }"); } @Test public void testVisibility1() { helpTCF("TestJava.java","public class TestJava { public int i; \n/*@ invariant i == 0; */ }" ,"/TestJava.java:2: An identifier with public visibility may not be used in a invariant clause with package visibility",16 ); } @Test public void testVisibility2() { helpTCF("TestJava.java","public class TestJava { public int i; \n/*@ invariant this.i == 0; */ }" ,"/TestJava.java:2: An identifier with public visibility may not be used in a invariant clause with package visibility",20 ); } @Test public void testVisibilityBehavior() { helpTCF("TestJava.java","public class TestJava { private /*@ spec_public */ int i; \n/*@ public normal_behavior requires this.i == 0; */ public void m(){} }" ); } @Test public void testVisibilityBehavior2() { helpTCF("TestJava.java","public class TestJava { private /*@ spec_public */ int i; \n/*@ public normal_behavior requires this.i == 0; */ public void m(){} }" ); } }