package org.overture.pog.tests.newtests; import static org.junit.Assert.fail; import java.lang.reflect.Type; import java.util.Collection; import java.util.List; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import org.overture.ast.analysis.AnalysisException; import org.overture.ast.node.INode; import org.overture.core.testing.ParamStandardTest; import org.overture.core.testing.PathsProvider; import org.overture.pog.pub.IProofObligationList; import org.overture.pog.pub.ProofObligationGenerator; import com.google.gson.reflect.TypeToken; @RunWith(Parameterized.class) public class PogBasicTest extends ParamStandardTest<PogTestResult> { private final static String MICRO_ROOT = "src/test/resources/micro"; private static final String UPDATE_PROPERTY = "testing.update.pog.basic"; public PogBasicTest(String nameParameter, String testParameter, String resultParameter) { super(nameParameter, testParameter, resultParameter); } @Parameters(name = "{index} : {0}") public static Collection<Object[]> testData() { return PathsProvider.computePaths(MICRO_ROOT); } @Override public PogTestResult processModel(List<INode> ast) { try { IProofObligationList ipol = ProofObligationGenerator.generateProofObligations(ast); return PogTestResult.convert(ipol); } catch (AnalysisException e) { fail("Could not process test file " + testName); } return null; } @Override protected String getUpdatePropertyString() { return UPDATE_PROPERTY; } @Override public Type getResultType() { Type resultType = new TypeToken<PogTestResult>() { }.getType(); return resultType; } }