/*****************************************************************
 ** @author   STF 433
 ** @version  0.0.1
 ** @purpose  1:15.6.4, Test modification of signature parameters.
 ** @verdict  pass reject
 *****************************************************************/

module NegSem_150604_ReferencingSignatureParameters_001 {

/**
 * @desc testing of inline return template for remote procedure call
 * @param p_par1 only input parameter
 * @param p_par2 must have value 4 at return
 * @param p_par3 must have value 5 at return
 * @return must return value 1
 */

signature p_NegSem_150604_ReferencingSignatureParameters_001(in integer p_par1, out integer p_par2, inout integer p_par3) return integer;

template p_NegSem_150604_ReferencingSignatureParameters_001 s_baseTemplate := (
	{p_par1 := -, p_par2 := 4, p_par3 := ?} , {p_par1 := -, p_par2 := 4, p_par3 := 1}
);

template p_NegSem_150604_ReferencingSignatureParameters_001 s_returnTemplate modifies s_baseTemplate := {
	p_par3 := 5
}	//cannot modify list value template

template p_NegSem_150604_ReferencingSignatureParameters_001 s_wrongTemplate modifies s_baseTemplate := {
	p_par3 := 3
}	//cannot modify list value template


    type port remotePort procedure {
    	out p_NegSem_150604_ReferencingSignatureParameters_001;
	}

type component GeneralComp {
	  port remotePort PCO;
}

testcase TC_NegSem_150604_ReferencingSignatureParameters_001() runs on GeneralComp {

}

control{
    execute(TC_NegSem_150604_ReferencingSignatureParameters_001());
}

}