/***************************************************************** ** @author STF 487 ** @version 0.0.1 ** @purpose 1:6.2.10, Ensure that extending a component with several other component works properly ** @verdict pass accept, ttcn3verdict:pass *****************************************************************/ /* The following requirements are tested: * When defining component types by extending more than one parent type, * there shall be no name clash between the definitions of the different parent types, * i.e. there shall not be a port, variable, constant or timer identifier that is declared * in any two of the parent types (directly or by means of extension). */ module Sem_060210_ReuseofComponentTypes_002 { //MyCompA has a port pt_myPortA type component MyCompA { port loopbackPort pt_myPortA; } //MyComp has a port pt_myPortB type component MyCompB { port loopbackPort pt_myPortB; } //Component GeneralComp has a timer and inherit two ports from MyCompA and MyCompB type component GeneralComp extends MyCompA, MyCompB { timer t; } type port loopbackPort message { inout integer; inout float; } testcase TC_Sem_060210_ReuseofComponentTypes_002() runs on GeneralComp { //Send an integer from pt_myPortA: pt_myPortA.send(2); alt { [] pt_myPortA.receive(2) { setverdict(pass); } [] pt_myPortA.receive { setverdict(fail); } } //Send an integer from pt_myPortB: pt_myPortB.send(1.0); alt { [] pt_myPortB.receive(1.0) { setverdict(pass); } [] pt_myPortB.receive { setverdict(fail); } } } control{ execute(TC_Sem_060210_ReuseofComponentTypes_002()); } }