Search in sources :

Example 6 with ABSRef

use of apet.testCases.ABSRef in project abstools by abstools.

the class ABSUnitTestCaseBuilder method createObjectsInHeap.

void createObjectsInHeap(String testMethodName, Set<String> heapNames, Map<String, InterfaceTypeUse> objectsInHeap, ClassDecl testClass, Map<ABSRef, ABSObject> initialHeap, Block testMethodBlock) {
    String setMethodForTest = testCaseNameBuilder.initialTestMethodName(testMethodName);
    Block modifyBlock = initialiseDeltaForTestClass(testClass, testCaseNameBuilder.initialTestMethodName(testMethodName));
    testMethodBlock.addStmtNoTransform(getExpStmt(getCall(getThis(), setMethodForTest, true)));
    Map<String, String> typeHierarchy = new HashMap<String, String>();
    Map<String, List<Stmt>> initialisations = new HashMap<String, List<Stmt>>();
    List<String> initialisationsOrders = new ArrayList<String>();
    for (ABSRef r : initialHeap.keySet()) {
        makeSetStatements(typeHierarchy, initialisations, initialisationsOrders, testMethodName, heapNames, initialHeap, objectsInHeap, r, initialHeap.get(r), testClass);
    }
    for (String ref : initialisationsOrders) {
        for (Stmt s : initialisations.get(ref)) {
            modifyBlock.addStmtNoTransform(s);
        }
    }
    String testClassName = testClass.getName();
    DeltaDecl delta = deltaBuilder.getDeltaFor(testClassName);
    ModifyClassModifier cm = null;
    for (ModuleModifier m : delta.getModuleModifiers()) {
        if (m.getName().equals(testClassName)) {
            cm = (ModifyClassModifier) m;
            break;
        }
    }
    for (String r : objectsInHeap.keySet()) {
        FieldDecl field = new FieldDecl();
        field.setName(r);
        InterfaceTypeUse inf = objectsInHeap.get(r);
        field.setAccess(inf);
        testClass.addField(field);
        // allow access of subtype information
        cm.addModifier(new RemoveFieldModifier(field.treeCopyNoTransform()));
        FieldDecl newField = new FieldDecl();
        newField.setName(r);
        newField.setAccess(new InterfaceTypeUse(typeHierarchy.get(inf.getName()), new abs.frontend.ast.List<abs.frontend.ast.Annotation>()));
        cm.addModifier(new AddFieldModifier(newField));
    }
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) RemoveFieldModifier(abs.frontend.ast.RemoveFieldModifier) DeltaDecl(abs.frontend.ast.DeltaDecl) AbsASTBuilderUtil.getExpStmt(abs.backend.tests.AbsASTBuilderUtil.getExpStmt) Stmt(abs.frontend.ast.Stmt) ModifyClassModifier(abs.frontend.ast.ModifyClassModifier) FieldDecl(abs.frontend.ast.FieldDecl) ABSRef(apet.testCases.ABSRef) ModuleModifier(abs.frontend.ast.ModuleModifier) InterfaceTypeUse(abs.frontend.ast.InterfaceTypeUse) Block(abs.frontend.ast.Block) List(java.util.List) ArrayList(java.util.ArrayList) AddFieldModifier(abs.frontend.ast.AddFieldModifier)

Example 7 with ABSRef

use of apet.testCases.ABSRef in project abstools by abstools.

the class MethodTestCaseBuilder method makeMethodCall.

private Call makeMethodCall(String testName, Set<String> heapNames, String methodName, List<ABSData> inArgs, boolean sync) {
    if (inArgs.size() == 0) {
        throw new IllegalStateException("Inputs for a method must at least have a reference");
    }
    ABSData r = inArgs.get(0);
    if (!(r instanceof ABSRef)) {
        throw new IllegalStateException("Inputs for a method must at least have a reference");
    }
    PureExp[] ps = new PureExp[inArgs.size() - 1];
    for (int i = 1; i < inArgs.size(); i++) {
        ABSData d = inArgs.get(i);
        PureExp exp = pureExpBuilder.createPureExpression(testName, heapNames, d);
        ps[i - 1] = exp;
    }
    String rn = getABSDataValue(r);
    VarUse var = new VarUse(heapRefBuilder.heapReferenceForTest(testName, rn));
    Call call = getCall(var, methodName, sync, ps);
    return call;
}
Also used : Call(abs.frontend.ast.Call) PreviousCall(apet.testCases.PreviousCall) AbsASTBuilderUtil.getCall(abs.backend.tests.AbsASTBuilderUtil.getCall) ABSRef(apet.testCases.ABSRef) ABSData(apet.testCases.ABSData) PureExp(abs.frontend.ast.PureExp) VarUse(abs.frontend.ast.VarUse)

Aggregations

ABSRef (apet.testCases.ABSRef)7 VarUse (abs.frontend.ast.VarUse)4 Block (abs.frontend.ast.Block)3 InterfaceTypeUse (abs.frontend.ast.InterfaceTypeUse)3 NullExp (abs.frontend.ast.NullExp)3 PureExp (abs.frontend.ast.PureExp)3 ABSData (apet.testCases.ABSData)3 HashMap (java.util.HashMap)3 DataTypeUse (abs.frontend.ast.DataTypeUse)2 EqExp (abs.frontend.ast.EqExp)2 InterfaceDecl (abs.frontend.ast.InterfaceDecl)2 ABSTerm (apet.testCases.ABSTerm)2 PreviousCall (apet.testCases.PreviousCall)2 ArrayList (java.util.ArrayList)2 List (java.util.List)2 DeclNamePredicate (abs.backend.tests.AbsASTBuilderUtil.DeclNamePredicate)1 AbsASTBuilderUtil.getCall (abs.backend.tests.AbsASTBuilderUtil.getCall)1 AbsASTBuilderUtil.getDecl (abs.backend.tests.AbsASTBuilderUtil.getDecl)1 AbsASTBuilderUtil.getExpStmt (abs.backend.tests.AbsASTBuilderUtil.getExpStmt)1 AddFieldModifier (abs.frontend.ast.AddFieldModifier)1