Commit 893abd5e authored by Philip Makedonski's avatar Philip Makedonski
Browse files

+ support for formal parameters (WIP)

parent 587a8b7e
Loading
Loading
Loading
Loading
+38 −19
Original line number Diff line number Diff line
@@ -292,6 +292,35 @@ rule Function2FD
    //TODO: add distinction between value and template?
}

/*
//TODO: Breaks generation
rule FP2FFP 
    transform f : TDL!FormalParameter
    to ffp : TTCN!FunctionFormalPar {
	//guard : false

	var fd = f.eContainer.equivalent();
	
	if (fd.parameterList.oclIsUndefined()) {
		fd.parameterList = new TTCN!FunctionFormalParList();
	}
	
	//ffp.name = f.TTCNname();
	
	f.dataType.getTTCNType();

    ffp.template = new TTCN!FormalTemplatePar();
    ffp.~kind = fp.template;
    
    ffp.~kind.name = f.TTCNname();
    
    //TODO: direction support?
    
    ffp.~kind.type = fp.dataType.getTTCNType();
    fd.parameterList.params.add(ffp);
}
*/

rule TC2FD
    transform tc : TDL!TestConfiguration
    to fd : TTCN!FunctionDef {
@@ -406,19 +435,11 @@ rule TD2FD
    transform td : TDL!TestDescription
    to fd : TTCN!FunctionDef {
    
    fd.name = td.TTCNname();
    
    var md = new TTCN!ModuleDefinition();
    md.def = fd;

    var m = td.eContainer.equivalent();
    m.defs.definitions.add(md);
    td.transformTo(fd);
        
    fd.runsOn = new TTCN!RunsOnSpec();
    fd.runsOn.component = ("MTC_"+td.testConfiguration.TTCNname()).getComponent();

    fd.statement = new TTCN!StatementBlock();

    stack.put(fd.name,new OrderedSet());
    stack.get(fd.name).add(fd.statement);

@@ -435,20 +456,15 @@ rule TD2FD
        sl.sc.add(";");
    }


    for (ci in td.testConfiguration.componentInstance.select(c|simulateSUT or c.role = TDL!ComponentInstanceRole#Tester)) {
        var cf = new TTCN!FunctionDef();
        cf.name = td.getMainContext(ci);
    
        var md = new TTCN!ModuleDefinition();
        md.def = cf;
    	td.transformTo(cf);
   
        var m = td.eContainer.equivalent();
        m.defs.definitions.add(md);
        cf.name = td.getMainContext(ci);
    
        cf.runsOn = new TTCN!RunsOnSpec();
        cf.runsOn.component = ci.type.equivalent();
        cf.statement = new TTCN!StatementBlock();
    
        stack.put(cf.name,new OrderedSet());
        stack.get(cf.name).add(cf.statement);
@@ -467,7 +483,6 @@ rule TD2FD
        
        sl.statements.add(fs);
        sl.sc.add(";");
        
    }   
    
    if (td.behaviourDescription.isDefined()) {
@@ -484,6 +499,7 @@ rule TD2FD
        var tmd = new TTCN!ModuleDefinition();
        tmd.def = tc;
    
        var m = td.eContainer.equivalent();
        m.defs.definitions.add(tmd);
        
        tc.spec = new TTCN!ConfigSpec();
@@ -515,6 +531,9 @@ rule TD2FD
        tsb.behavior.`function` = new TTCN!FunctionInstance();
        tsb.behavior.`function`.ref = fd;
        
        //TODO: add parameters
        
        
        tsl.statements.add(tsb);
        tsl.sc.add(";");