package org.overture.pog.tests.newtests; import static org.junit.Assert.fail; import java.util.List; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.overture.ast.analysis.AnalysisException; import org.overture.ast.node.INode; import org.overture.core.testing.ParamNoResultFileTest; import org.overture.pog.pub.IProofObligation; import org.overture.pog.pub.IProofObligationList; import org.overture.pog.pub.ProofObligationGenerator; @RunWith(Parameterized.class) public abstract class AbsIntegrityTest extends ParamNoResultFileTest<Boolean> { protected final IntegrityCheck icVisitor; public AbsIntegrityTest(String nameParameter, String testParameter, IntegrityCheck icVisitor) { super(nameParameter, testParameter); this.icVisitor = icVisitor; } @Override public Boolean processModel(List<INode> arg0) { try { IProofObligationList ipol = ProofObligationGenerator.generateProofObligations(arg0); for (IProofObligation po : ipol) { po.getValueTree().getPredicate().apply(icVisitor); if (!icVisitor.getProblemNodes().isEmpty()) { fail("Integrity error in" + po.toString() + "\n Problem Nodes: \n" + icVisitor.getProblemNodes().toString()); } } } catch (AnalysisException e) { fail("Could not process " + testName); } return true; } @Override protected void processResult(Boolean actual) { // dont need to do anything } }