package apet.absunit; import java.util.Collections; import java.util.List; import java.util.Set; import abs.frontend.ast.Exp; import abs.frontend.ast.FnApp; import abs.frontend.ast.Model; import abs.frontend.ast.PureExp; import apet.testCases.ABSData; import apet.testCases.PreviousCall; final class FunctionTestCaseBuilder extends ABSUnitTestCaseBuilder { private final PureExpressionBuilder pureExpBuilder; FunctionTestCaseBuilder(PureExpressionBuilder pureExpBuilder, DeltaForGetSetFieldsBuilder deltaBuilder, Model model) { super(pureExpBuilder, deltaBuilder, model); this.pureExpBuilder = pureExpBuilder; } @Override Exp makeTestExecution(String testName, Set<String> heap, String testExecutionName, List<ABSData> inArgs) { abs.frontend.ast.List<PureExp> ps = new abs.frontend.ast.List<PureExp>(); FnApp fa = new FnApp(); if (inArgs.size() == 0) { throw new IllegalStateException("Inputs for a method must at least have a reference"); } fa.setName(testExecutionName); fa.setParamList(ps); for (int i=0; i<inArgs.size(); i++) { ABSData d = inArgs.get(i); PureExp exp = pureExpBuilder.createPureExpression(testName, heap, d); fa.setParam(exp,i); } return fa; } @Override List<Exp> makePreviousCalls(String testName, Set<String> heapNames, List<PreviousCall> calls) { //function is sequential return Collections.emptyList(); } }