ttcn3mapping.etl 68.6 KB
Newer Older
}


operation TDL!DataUse getVerdictStatement() : TTCN!FunctionStatement {
    var sfs = new TTCN!FunctionStatement();
    sfs.verdict = new TTCN!SetLocalVerdict();
    sfs.verdict.expression = new TTCN!Value();
    //TODO: handle corresponding verdict properly
    if (self.isKindOf(TDL!DataInstanceUse)) {
        sfs.verdict.expression.predef = new TTCN!PredefinedValue();
        if (self.dataInstance.name = "pass") {
            sfs.verdict.expression.predef.verdictType = TTCN!VerdictTypeValue#pass;
        } else if (self.dataInstance.name = "fail") {
            sfs.verdict.expression.predef.verdictType = TTCN!VerdictTypeValue#fail;
        } else if (self.dataInstance.name = "inconclusive") {
            sfs.verdict.expression.predef.verdictType = TTCN!VerdictTypeValue#inconc;
        } else {
            //TODO
        }
    } else {
       //TODO
    }
    return sfs;
}

operation TDL!CompoundBehaviour execute() {
    //TODO
    for (b in self.block.behaviour) {
        b.execute();
    }
operation TDL!TimerStart execute() {
    var ci = self.componentInstance;
    if (simulateSUT or ci.role = TDL!ComponentInstanceRole#Tester) {
        var sc = self.getMainContext(ci);
        var sb = stack.get(sc).last();
        var ssl = new TTCN!FunctionStatementList();
        
        var sfs = new TTCN!FunctionStatement();
        
        sfs.timer = new TTCN!TimerStatements();
        sfs.timer.start = new TTCN!StartTimerStatement();
        sfs.timer.start.ref = self.timer.equivalent();
        sfs.timer.start.expr = self.period.getDataUseValue();
        
        ssl.statements.add(sfs);
        ssl.sc.add(";");

        sb.stat.add(ssl);
    }
}

operation TDL!TimerStop execute() {
    var ci = self.componentInstance;
    if (simulateSUT or ci.role = TDL!ComponentInstanceRole#Tester) {
        var sc = self.getMainContext(ci);
        var sb = stack.get(sc).last();
        var ssl = new TTCN!FunctionStatementList();
        
        var sfs = new TTCN!FunctionStatement();
        
        sfs.timer = new TTCN!TimerStatements();
        sfs.timer.stop = new TTCN!StopTimerStatement();
        sfs.timer.stop.ref = new TTCN!TimerRefOrAll();
        sfs.timer.stop.ref.ref = self.timer.equivalent();
        
        ssl.statements.add(sfs);
        ssl.sc.add(";");

        sb.stat.add(ssl);
    }
}

operation TDL!TimeOut execute() {
    //TODO: handle in an alt statement?
    var ci = self.componentInstance;
    if (simulateSUT or ci.role = TDL!ComponentInstanceRole#Tester) {
        var sc = self.getMainContext(ci);
        var sb = stack.get(sc).last();
        var ssl = new TTCN!FunctionStatementList();
        
        var sfs = new TTCN!FunctionStatement();
        
        sfs.timer = new TTCN!TimerStatements();
        sfs.timer.timeout = new TTCN!TimeoutStatement();
        sfs.timer.timeout.ref = new TTCN!TimerRefOrAny();
        sfs.timer.timeout.ref.ref = self.timer.equivalent();
        
        ssl.statements.add(sfs);
        ssl.sc.add(";");

        sb.stat.add(ssl);
    }
}


operation TDL!Behaviour execute() {
    ("  Skipping " +self.type.name+" (not yet supported)").println();
    if (self.type.name = "ParallelBehaviour" and false) {
        (indent+"group Parallel").printlno();
        var i = 0;
        for (block in self.block) {
            for (b in block.behaviour) {
                b.execute(indent+"  ");
            }
            if (i <= block.size()) {
                (indent+"else").printlno();
            }
            i = i+1;
        }
        (indent+"end").printlno();
    }