package org.overture.vdm2jml.tests;
import java.io.File;
import java.util.LinkedList;
import java.util.List;
import org.junit.Assert;
import org.overture.ast.lex.LexLocation;
import org.overture.codegen.vdm2jml.JmlGenMain;
import org.overture.test.framework.Properties;
abstract public class JmlGenTestBase
{
public static final boolean VERBOSE = false;
public static final String VDM_LIB_PATH = "src" + File.separatorChar
+ "test" + File.separatorChar + "resources" + File.separatorChar
+ "lib";
public static final String TESTS_VDM2JML_PROPERTY_PREFIX = "tests.vdm2jml.override.";
public static final String TEST_EXEC_FOLDER_PATH = "target"
+ File.separatorChar + "jml";
public static final String GEN_JAVA_FOLDER = TEST_EXEC_FOLDER_PATH
+ File.separatorChar + "code";
protected File inputFile;
protected File genJavaFolder;
public JmlGenTestBase(File inputFile)
{
super();
this.inputFile = inputFile;
this.genJavaFolder = new File(GEN_JAVA_FOLDER, getTestName());
}
protected File getTestDataFolder()
{
return inputFile.getParentFile();
}
public String getTestName()
{
int dotIdx = inputFile.getName().indexOf('.');
Assert.assertTrue("Got unexpected file name '" + inputFile.getName()
+ "'", dotIdx > 0);
return inputFile.getName().substring(0, dotIdx);
}
protected void unconfigureResultGeneration()
{
Properties.recordTestResults = false;
}
abstract protected String getPropertyId();
protected void configureResultGeneration()
{
LexLocation.absoluteToStringLocation = false;
if (System.getProperty(TESTS_VDM2JML_PROPERTY_PREFIX + "all") != null
|| getPropertyId() != null
&& System.getProperty(TESTS_VDM2JML_PROPERTY_PREFIX
+ getPropertyId()) != null)
{
Properties.recordTestResults = true;
}
}
public String[] getJmlGenMainProcessArgs(File outputFolder)
{
List<String> javaCgArgs = new LinkedList<String>();
javaCgArgs.add(inputFile.getAbsolutePath());
if (VERBOSE)
{
javaCgArgs.add(JmlGenMain.PRINT_ARG);
}
javaCgArgs.add(JmlGenMain.OUTPUT_ARG);
javaCgArgs.add(outputFolder.getAbsolutePath());
javaCgArgs.add(JmlGenMain.FOLDER_ARG);
javaCgArgs.add(new File(VDM_LIB_PATH).getAbsolutePath());
javaCgArgs.add(JmlGenMain.NO_TRACE);
// javaCgArgs.add(JmlGenMain.REPORT_VIOLATIONS_ARG);
return javaCgArgs.toArray(new String[] {});
}
}