1 /******************************************************************************
2 * Copyright (c) 2000-2016 Ericsson Telecom AB
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
9 * Adrien Kirjak – initial implementation
12 ** @purpose 1:24, Ensure instances of messages can be declared and passed via parameter
13 ** @verdict pass accept, ttcn3verdict:pass
14 ***************************************************/
16 * #reqname /Requirements/13 Declaring messages/Sorts of message insances/Parameter as a message
20 module Sem_13_declaring_msg_007 {
21 type record CompositeType{
30 type enumerated MyEnum{
34 type integer MyArray[3];
50 universal charstring ucs,
62 type port MyPort1 message{
65 } with {extension "internal"}
67 type port MyPort2 message{
70 } with {extension "internal"}
72 type component Sender{
76 type component Receiver{
82 function make_union() return MyUnion
89 const MsgType1 c_message := {
100 set1 := {int1:=1, str1:="the"},
101 union1 := { int := 1},
106 template MsgType1 global:= {i := 1, k:=1.0, b:=true, v:=pass, bs:='0101'B, hs:='123ABD'H,
107 os:='FF96'O, cs:="""ab""", ucs:="the", rec1:={i:=1}, set1:={int1:=1, str1:="the"}, union1 := make_union(), enum1:=Bash, arr1:={1,2,3} };
109 function f_sender(in MsgType1 v_message) runs on Sender
114 function f_receiver() runs on Receiver
116 var MsgType1 v_message;
117 timer t_timer := 3.0;
121 [] dst.receive(global) -> value v_message { setverdict(pass); }
122 [] t_timer.timeout { setverdict(fail); }
126 testcase TC_Sem_13_declaring_msg_007() runs on MTC system MTC
128 var MsgType1 v_message := {
129 i := 1, k:=1.0, b:=true, v:=pass,
130 bs:='0101'B, hs:='123ABD'H,
131 os:='FF96'O, cs:="""ab""", ucs:="the",
132 rec1:={i:=1}, set1:={int1:=1, str1:="the"},
133 union1 := make_union(),
134 enum1:=Bash, arr1:={1,2,3}
137 var Sender c_sender := Sender.create;
138 var Receiver c_receiver := Receiver.create;
139 connect(c_sender:src, c_receiver:dst);
140 c_sender.start(f_sender(v_message));
141 c_receiver.start(f_receiver());
147 execute(TC_Sem_13_declaring_msg_007())