package javax.safetycritical.test.safelet;
import javax.realtime.MemoryArea;
import javax.realtime.PriorityParameters;
import javax.safetycritical.ManagedMemory;
import javax.safetycritical.Mission;
import javax.safetycritical.MissionSequencer;
import javax.safetycritical.Safelet;
import javax.safetycritical.StorageParameters;
import javax.safetycritical.TestPortal;
import javax.scj.util.Const;
import javax.scj.util.Priorities;
import test.BasicJMLTest;
import unitTest.TestCase;
import unitTest.TestResult;
import unitTest.TestSuite;
/*
* OpenJML call:
*
* cd /home/hso/java/SCJ_Workspace/OpenJMLTest
*
* Safelet:
*
* java -jar /home/hso/java/SCJ_Workspace/OpenJMLTest/lib/openjml.jar -cp /home/hso/git/hvm-scj/icecapSDK/bin/ -d /home/hso/git/hvm-scj/icecapSDK/bin/ -noInternalSpecs -rac -racCheckAssumptions -racJavaChecks -nullableByDefault -showNotImplemented -specspath ./specs /home/hso/git/hvm-scj/icecapSDK/src/javax/safetycritical/Safelet.java
*
* TckTestSafelet1:
*
* java -jar /home/hso/java/SCJ_Workspace/OpenJMLTest/lib/openjml.jar -cp /home/hso/git/hvm-scj/icecapSDK/bin/:./bin/ -d /home/hso/java/SCJ_Workspace/OpenJMLTest/bin/ -noInternalSpecs -rac -racCheckAssumptions -racJavaChecks -nullableByDefault -showNotImplemented -specspath ./specs ./src/javax/safetycritical/test/safelet/TckTestSafelet1.java
*
*/
public class TckTestSafelet1 extends BasicJMLTest {
public static void main(String[] args) {
Const.setDefaultErrorReporter();
TestSuite suite = new TestSuite();
TestResult result = new TestResult();
int numberOfCases = TestSafelet1.testCount;
TestCase test = new TestSafelet1(result, numberOfCases);
suite.addTest(test);
suite.run(result);
result.print(test.getClass().getName(), numberOfCases);
if (result.JMLerrorCount() + result.errorCount() == 0)
{
args = null;
}
}
@Override
public String getJMLAnnotationCommand() {
return "java -jar WORKSPACE/OpenJMLTest/lib/openjml.jar -cp ICECAPSDK/bin/ -d ICECAPSDK/bin/ -noInternalSpecs -rac -racCheckAssumptions -racJavaChecks -nullableByDefault -showNotImplemented -specspath ./specs ICECAPSDK/src/javax/safetycritical/Safelet.java WORKSPACE/OpenJMLTest/src/javax/safetycritical/test/safelet/TckTestSafelet1.java ";
}
}
class TestSafelet1 extends TestCase
{
//--- Stub classes ----------------------------------
class SafeletStub1 implements Safelet<MissionStub1>
{
/*@
also
ensures true;
@*/
public MissionSequencer<MissionStub1> getSequencer()
{
// seq in immortal memory
MissionSequencer<MissionStub1> seq = new SequencerStub1();
devices.Console.println("==> area of " + seq + " is " + MemoryArea.getMemoryArea(seq));
return seq;
}
public long immortalMemorySize()
{
return Const.IMMORTAL_MEM;
}
// /*@
// also
// ensures true;
// @*/
public void initializeApplication()
{
Integer a = new Integer(1234);
System.out.println("=> area of " + a + " is " + MemoryArea.getMemoryArea(a));
}
}
class SequencerStub1 extends MissionSequencer<MissionStub1>
{
SequencerStub1()
{
super (new PriorityParameters (Priorities.PR95),
new StorageParameters(
Const.OUTERMOST_SEQ_BACKING_STORE,
new long[] { Const.HANDLER_STACK_SIZE },
Const.PRIVATE_MEM,
Const.IMMORTAL_MEM,
Const.MISSION_MEM));
}
public MissionStub1 getNextMission()
{
return null;
}
}
class MissionStub1 extends Mission
{
public void initialize()
{
}
public long missionMemorySize ()
{
return Const.MISSION_MEM;
}
}
// --- TestSafelet1 ---------------------------------
static final int testCount = 3;
public TestSafelet1 (TestResult result,int testCount)
{
super (result, testCount);
}
public void test (int i)
{
TestPortal.ManagedMemory_allocateBackingStore(Const.OUTERMOST_SEQ_BACKING_STORE);
ManagedMemory mem = TestPortal.ManagedMemory_allocateImmortalMemory(Const.IMMORTAL_MEM);
switch (i) {
case 1:
javax.safetycritical.TestPortal.executeInAreaOf(mem, new Runnable()
{
public void run()
{
new SafeletStub1().getSequencer();
}
} );
case 2:
javax.safetycritical.TestPortal.executeInAreaOf(mem, new Runnable()
{
public void run()
{
new SafeletStub1().immortalMemorySize();
}
} );
break;
case 3:
javax.safetycritical.TestPortal.executeInAreaOf(mem, new Runnable()
{
public void run()
{
new SafeletStub1().initializeApplication();
}
} );
break;
default: break;
}
}
}