package org.overture.vdm2jml.tests;
import java.util.List;
import org.junit.Before;
import org.overture.ast.analysis.AnalysisException;
import org.overture.ast.lex.Dialect;
import org.overture.ast.modules.AModuleModules;
import org.overture.ast.node.INode;
import org.overture.codegen.ir.IRSettings;
import org.overture.codegen.tests.output.util.OutputTestBase;
import org.overture.codegen.utils.GeneratedData;
import org.overture.codegen.vdm2java.JavaCodeGen;
import org.overture.codegen.vdm2java.JavaSettings;
import org.overture.codegen.vdm2jml.JmlGenerator;
import org.overture.config.Release;
import org.overture.config.Settings;
public abstract class JmlSlOutputTestBase extends OutputTestBase
{
public static final String JML_SL_TRACE_UPDATE_PROPERTY = "tests.vdm2jml.override.";
public JmlSlOutputTestBase(String nameParameter, String inputParameter,
String resultParameter)
{
super(nameParameter, inputParameter, resultParameter);
}
@Override
public GeneratedData genCode(List<INode> ast) throws AnalysisException
{
List<AModuleModules> modules = buildModulesList(ast);
JmlGenerator jmlGen = new JmlGenerator(getJavaGen());
return jmlGen.generateJml(modules);
}
@Before
public void init()
{
Settings.dialect = Dialect.VDM_SL;
Settings.release = Release.VDM_10;
}
public JavaSettings getJavaSettings()
{
JavaSettings javaSettings = new JavaSettings();
javaSettings.setDisableCloning(false);
return javaSettings;
}
public JavaCodeGen getJavaGen()
{
JavaCodeGen javaGen = new JavaCodeGen();
javaGen.setSettings(getIrSettings());
javaGen.setJavaSettings(getJavaSettings());
return javaGen;
}
@Override
public IRSettings getIrSettings()
{
IRSettings irSettings = super.getIrSettings();
irSettings.setGenerateTraces(true);
irSettings.setGeneratePostConds(true);
irSettings.setGeneratePreConds(true);
return irSettings;
}
@Override
protected boolean updateCheck()
{
if (frameworkUpdateCheck())
{
return true;
}
if (System.getProperty(JML_SL_TRACE_UPDATE_PROPERTY + "all") != null)
{
return true;
}
return false;
}
}