package org.overture.codegen.tests.output.base;
import java.util.List;
import org.overture.ast.analysis.AnalysisException;
import org.overture.ast.definitions.SClassDefinition;
import org.overture.ast.lex.Dialect;
import org.overture.ast.modules.AModuleModules;
import org.overture.ast.node.INode;
import org.overture.codegen.ir.CodeGenBase;
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.config.Settings;
public abstract class JavaOutputTestBase extends OutputTestBase
{
public JavaOutputTestBase(String nameParameter, String inputParameter,
String resultParameter)
{
super(nameParameter, inputParameter, resultParameter);
}
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;
}
public GeneratedData genCode(List<INode> ast) throws AnalysisException
{
if (Settings.dialect == Dialect.VDM_SL)
{
List<AModuleModules> modules = buildModulesList(ast);
return getJavaGen().generate(CodeGenBase.getNodes(modules));
} else
{
List<SClassDefinition> classes = buildClassList(ast);
return getJavaGen().generate(CodeGenBase.getNodes(classes));
}
}
}