/***************************************************
 ** @author   STF 487
 ** @version  0.0.1
 ** @purpose  1:5.4.1.2, verify that test case definition can contain in, out and inout template formal parameters
 ** @verdict  pass accept, ttcn3verdict:pass
 ***************************************************/

// The following requirement is tested:
// Templates parameters can be defined for templates, functions, altsteps, and test cases.
// To enable a parameterized object to accept templates or matching symbols as actual parameters,
// the extra keyword template shall be added before the type field of the corresponding formal
// parameter. This makes the parameter a template parameter and in effect extends the allowed actual
// parameters for the associated type to include the appropriate set of matching attributes (see
// annex B) as well as the normal set of values.
// Formal template parameters may be in, inout or out parameters. The default for formal template
// parameters is in parameterization.

module Sem_05040102_parameters_of_kind_template_007 {

	type component GeneralComp {
	}

	testcase TC_Sem_05040102_parameters_of_kind_template_007(
        template integer p_int1, in template integer p_int2, out template integer p_int3, inout template integer p_int4) runs on GeneralComp {
        setverdict(pass);
	}

	control {
        var template integer v_int1, v_int2 := ?;
		execute(TC_Sem_05040102_parameters_of_kind_template_007((1..3), 2, v_int1, v_int2));
	}
}
