package org.jmlspecs.openjmltest.testcases;
import org.jmlspecs.openjmltest.RacBase;
import org.junit.Test;
/** These tests exercise the RAC checking. They compile a test class
* using RAC and then execute the resulting program, catching that
* programs output. All the tests here have valid JML - they are testing
* whether the RAC translations work correctly.
* @author David R. Cok
*
*/
public class racJML extends RacBase {
/** Sets the classpath used for these tests. The bin in the classpath
* brings in the currently compiled runtime classes (so we don't have
* to build jmlruntime.jar)
*/
String[] ordrac = new String[]{jdk, "-ea", "-classpath","bin"+z+"../OpenJML/bin-runtime"+z+"testdata",null};
@Override
public void setUp() throws Exception {
testspecpath1 = "$A"+z+"$B"+z+"$SS";
rac = ordrac;
jdkrac = false;
//noCollectDiagnostics = true; print = true;
super.setUp();
//main.addOptions("-verboseness=4");
expectedNotes = 0;
main.addOptions("-jmltesting");
}
@Test
public void testLBLObject() {
helpTCX("tt.TestJava","package tt; \n"
+"public class TestJava { \n"
+" public static void main(String... args) { \n"
+" //@ assert JML.lbl(\"AL\",\"Z\") != null; \n"
+" }\n"
+"}"
,"LABEL AL = Z"
);
}
@Test
public void testLBLString() {
helpTCX("tt.TestJava","package tt; \n"
+"public class TestJava { \n"
+" public static void main(String... args) { \n"
+" //@ assert JML.lbl(\"AL\",\"XYZ\").equals(\"XYZ\"); \n"
+" }\n"
+"}"
,"LABEL AL = XYZ"
);
}
@Test
public void testLBLboolean() {
helpTCX("tt.TestJava","package tt; \n"
+"public class TestJava { \n"
+" public static void main(String... args) { \n"
+" //@ assert JML.lbl(\"AL\",args.length == 0); \n"
+" }\n"
+"}"
,"LABEL AL = true"
);
}
@Test
public void testLBLint() {
helpTCX("tt.TestJava","package tt; \n"
+"public class TestJava { \n"
+" public static void main(String... args) { \n"
+" //@ assert JML.lbl(\"AL\",args.length) == 0; \n"
+" }\n"
+"}"
,"LABEL AL = 0"
);
}
@Test
public void testLBLlong() {
helpTCX("tt.TestJava","package tt; \n"
+"public class TestJava { \n"
+" public static void main(String... args) { \n"
+" //@ assert JML.lbl(\"AL\",(long)args.length) == 0; \n"
+" }\n"
+"}"
,"LABEL AL = 0"
);
}
@Test
public void testLBLshort() {
//main.addOptions("-show");
helpTCX("tt.TestJava","package tt; \n"
+"public class TestJava { \n"
+" public static void main(String... args) { \n"
+" //@ assert JML.lbl(\"AL\",(short)args.length) == 0; \n"
+" }\n"
+"}"
,"LABEL AL = 0"
);
}
@Test
public void testLBLbyte() {
helpTCX("tt.TestJava","package tt; \n"
+"public class TestJava { \n"
+" public static void main(String... args) { \n"
+" //@ assert JML.lbl(\"AL\",(byte)args.length) == 0; \n"
+" }\n"
+"}"
,"LABEL AL = 0"
);
}
@Test
public void testLBLchar() {
helpTCX("tt.TestJava","package tt; \n"
+"public class TestJava { \n"
+" public static void main(String... args) { \n"
+" //@ assert JML.lbl(\"AL\",'Z') == 'Z'; \n"
+" }\n"
+"}"
,"LABEL AL = Z"
);
}
@Test
public void testLBLdouble() {
helpTCX("tt.TestJava","package tt; \n"
+"public class TestJava { \n"
+" // @ ensures (\\lbl INPUTX i) == \\result;\n"
+" //@ ensures JML.lbl(\"INPUT\",i) == \\result;\n"
+" public static double m(double i) { return i; }\n"
+" public static void main(String... args) { "
+" //@ assert JML.lbl(\"AL\",5.0) != 0.0; }\n"
+"}"
,"LABEL AL = 5.0"
);
}
}