package test;
import icecaptools.IcecapProgressMonitor;
import icecaptools.launching.ShellCommand;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Constructor;
import java.util.Arrays;
import java.util.Iterator;
import main.TestAll;
public class TestJML extends TestAll {
private StringBuffer workspace;
private String location;
@Override
protected String getInputFolder(StringBuffer path) {
location = path.toString();
String[] elements = path.toString().split("" + File.separatorChar);
workspace = new StringBuffer();
for (int i = 0; i < elements.length - 1; i++) {
if (elements[i].trim().length() > 0) {
workspace.append(File.separatorChar);
workspace.append(elements[i]);
}
}
return path.toString() + "bin";
}
@Override
protected Iterator<File> getTestDirectories(StringBuffer path) {
StringBuffer javax_safetycritical_test = new StringBuffer();
StringBuffer javax_realtime_test = new StringBuffer();
javax_safetycritical_test.append(path);
javax_safetycritical_test.append("src");
javax_safetycritical_test.append(File.separatorChar);
javax_safetycritical_test.append("javax");
javax_safetycritical_test.append(File.separatorChar);
javax_safetycritical_test.append("safetycritical");
javax_safetycritical_test.append(File.separatorChar);
javax_safetycritical_test.append("test");
javax_realtime_test.append(path);
javax_realtime_test.append("src");
javax_realtime_test.append(File.separatorChar);
javax_realtime_test.append("javax");
javax_realtime_test.append(File.separatorChar);
javax_realtime_test.append("realtime");
javax_realtime_test.append(File.separatorChar);
javax_realtime_test.append("test");
return Arrays
.asList(new File[] { new File(javax_safetycritical_test.toString()),
new File(javax_realtime_test.toString()) }).iterator();
}
@Override
protected String getInputPackage(File testsDirectory) {
if (testsDirectory.getAbsolutePath().contains("realtime")) {
return "javax.realtime.test";
} else {
return "javax.safetycritical.test";
}
}
@Override
protected String getVMSource(StringBuffer path) {
StringBuffer vmSource = new StringBuffer();
vmSource.append(System.getProperty("user.home"));
vmSource.append(File.separatorChar);
vmSource.append("git");
vmSource.append(File.separatorChar);
vmSource.append("hvm-scj");
vmSource.append(File.separatorChar);
vmSource.append("icecapvm");
vmSource.append(File.separatorChar);
return vmSource.toString();
}
@Override
protected void preCompile(String testPackage, String testClass) throws Exception {
String elements[] = testClass.split("\\.");
String className = elements[0];
Class<?> cls = Class.forName(testPackage + "." + className);
@SuppressWarnings("rawtypes")
Constructor constructor = cls.getConstructor(new Class[0]);
BasicJMLTest test = (BasicJMLTest) constructor.newInstance(new Object[0]);
String command = test.getJMLAnnotationCommand();
StringBuffer icecapsdk = new StringBuffer();
icecapsdk.append(System.getProperty("user.home"));
icecapsdk.append(File.separatorChar);
icecapsdk.append("git");
icecapsdk.append(File.separatorChar);
icecapsdk.append("hvm-scj");
icecapsdk.append(File.separatorChar);
icecapsdk.append("icecapSDK");
command = command.replace("WORKSPACE", workspace);
command = command.replace("ICECAPSDK", icecapsdk);
ShellCommand.executeCommand(command, System.out, true, location, null, 0, new IcecapProgressMonitor() {
@Override
public void worked(String string) {
}
@Override
public boolean isCanceled() {
return false;
}
@Override
public void worked(int i) {
}
@Override
public void subTask(String string) {
}
});
}
public static void main(String[] args) throws Throwable {
new TestJML().performTest();
}
}