package org.overture.codegen.tests.output.util;
import java.io.File;
import java.util.LinkedList;
import java.util.List;
import org.junit.Assert;
import org.junit.Before;
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.utils.GeneralCodeGenUtils;
import org.overture.config.Release;
import org.overture.config.Settings;
abstract public class OutputTestBase extends SpecificationTestBase
{
public OutputTestBase(String nameParameter, String inputParameter,
String resultParameter)
{
super(nameParameter, inputParameter, resultParameter);
}
@Before
public void init()
{
File f = new File(modelPath);
if (GeneralCodeGenUtils.isVdmPpSourceFile(f))
{
Settings.dialect = Dialect.VDM_PP;
} else if (GeneralCodeGenUtils.isVdmSlSourceFile(f))
{
Settings.dialect = Dialect.VDM_SL;
} else if (GeneralCodeGenUtils.isVdmRtSourceFile(f))
{
Settings.dialect = Dialect.VDM_RT;
} else
{
Assert.fail("The file does not have a valid VDM source file extension. Got: "
+ modelPath);
}
Settings.release = Release.VDM_10;
}
public List<AModuleModules> buildModulesList(List<INode> ast)
{
List<AModuleModules> modules = new LinkedList<AModuleModules>();
for (INode c : ast)
{
if (c instanceof AModuleModules)
{
modules.add((AModuleModules) c);
} else
{
Assert.fail("Expected only modules got " + c);
}
}
return modules;
}
public List<SClassDefinition> buildClassList(List<INode> ast)
{
List<SClassDefinition> classes = new LinkedList<SClassDefinition>();
for (INode c : ast)
{
if (c instanceof SClassDefinition)
{
classes.add((SClassDefinition) c);
} else
{
Assert.fail("Expected only classes got " + c);
}
}
return classes;
}
abstract protected String getUpdatePropertyString();
}