conformance_test/positive_tests added
[deliverable/titan.core.git] / conformance_test / positive_tests / 13_messages / 13_toplevel / Sem_13_toplevel_declaring_msg_various_types_014.ttcn
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
7 *
8 * Contributors:
9 * Adrien Kirjak – initial implementation
10 *
11 ** @version 0.0.1
12 ** @purpose 1:13, Port with type anytype can send and receive messages of any basic or structured type: 'verdicttype' type.
13 ** @verdict pass accept, ttcn3verdict:pass
14 ***************************************************/
15
16 // #reqname /Requirements/13 Declaring messages/Any type can be declared as type of message in a message port type
17
18
19 module Sem_13_toplevel_declaring_msg_various_types_014{
20 type record CompositeType{
21 integer i
22 }
23
24 type set MySet{
25 integer int1,
26 charstring str1
27 }
28
29 type enumerated MyEnum{
30 Perl,Bash,Python
31 }
32
33 type integer MyArray[3];
34
35 type union MyUnion{
36 integer int,
37 float real
38 }
39
40 type record MsgType1{
41 integer i,
42 float k,
43 boolean b,
44 verdicttype v,
45 bitstring bs,
46 hexstring hs,
47 octetstring os,
48 charstring cs,
49 universal charstring ucs,
50 CompositeType rec1,
51 MySet set1,
52 MyUnion union1,
53 MyEnum enum1,
54 MyArray arr1
55 }
56
57 type record MsgType2{
58 integer j
59 }
60
61 type port MyPort message{
62 inout integer;
63 inout float;
64 inout boolean;
65 inout verdicttype;
66 inout bitstring;
67 inout hexstring;
68 inout octetstring;
69 inout charstring;
70 inout universal charstring;
71 inout CompositeType;
72 inout MySet;
73 inout MyUnion;
74 inout MyEnum;
75 inout MyArray;
76 } with {extension "internal"}
77
78 type component Sender{
79 timer t_timer := 2.0;
80 port MyPort src;
81 }
82
83 type component Receiver{
84 port MyPort dst;
85 }
86 type component MTC {}
87
88 function make_union() return MyUnion
89 {
90 var MyUnion result;
91 result.int := 1;
92 return result;
93 }
94
95 const MsgType1 c_values := {
96 i := 1,
97 k := 1.0,
98 b := true,
99 v := pass,
100 bs := '0101'B,
101 hs := '123ABD'H,
102 os := 'FF96'O,
103 cs := "ab",
104 ucs := "the",
105 rec1 := {1},
106 set1 := {int1:=1, str1:="the"},
107 union1 := {int := 1},
108 enum1 := Bash,
109 arr1 := {1,2,3}
110 };
111
112 function f_sender() runs on Sender
113 {
114 // verdicttype
115 t_timer.start;
116 src.send(c_values.v);
117 alt {
118 [] src.receive(c_values.v) { setverdict(pass); }
119 [] src.receive {
120 setverdict(fail, "Unexpected data, expected verdicttype ", c_values.v);
121 stop;
122 }
123 [] t_timer.timeout {
124 setverdict(fail, "No response from echo service");
125 stop;
126 }
127 }
128 }
129
130 function f_receiver() runs on Receiver
131 {
132 timer t_timer := 30.0;
133 t_timer.start;
134 alt
135 {
136 [] dst.receive(c_values.v) { setverdict(pass); dst.send(c_values.v); }
137
138 [] dst.receive { setverdict(fail, "Unexpected messagem expected verdicttype", c_values.v); stop; }
139 [] t_timer.timeout { setverdict(fail, "No more messages"); stop; }
140 }
141 }
142
143 testcase TC_Sem_13_toplevel_declaring_msg_various_types_014() runs on MTC system MTC
144 {
145 var Sender c_sender := Sender.create;
146 var Receiver c_receiver := Receiver.create;
147 connect(c_sender:src, c_receiver:dst);
148 c_sender.start(f_sender());
149 c_receiver.start(f_receiver());
150 c_sender.done;
151 c_receiver.kill;
152 }
153 control {
154 execute(TC_Sem_13_toplevel_declaring_msg_various_types_014())
155 }
156 }
This page took 0.034745 seconds and 5 git commands to generate.