Sync with 5.4.0
[deliverable/titan.core.git] / regression_test / enumOper / TenumOper.ttcn
1 /******************************************************************************
2 * Copyright (c) 2000-2015 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 module TenumOper {
9 // ********** Type definitions *********************
10 type component emptyComponent {};
11 type enumerated myenum1 {xx1,xx2,xx3};
12 type enumerated myenum2 {xx3,xx4,xx5}; // reuse identifiers
13 type enumerated myenum3 {xx6(2),xx7(4),xx8(1)}; // with numbers
14 type enumerated myenum4 {xx9,xx10(3),xx11}; // partly with numbers
15
16 type myenum1 myenumSubtype1 (xx1)
17 type myenum1 myenumSubtype2
18
19 type record myrecord {
20 myenum1 e1 optional,
21 myenum3 e3
22 }
23
24 type record of myenum4 myrecordof;
25
26 // *************** Constanst ***********************
27 const myenum1 cg_1:= xx2;
28 const myenumSubtype1 cg_mye1 := xx1
29
30 template myenum1 t_mye1 := cg_mye1
31 template myenum1 t_mye2 := xx1
32 template myenumSubtype1 t_mye3 := xx1
33
34 modulepar myenumSubtype1 tsp_mod1 := xx1
35
36 testcase tc_enumAssign() runs on emptyComponent{
37 var myenum1 vl1:= xx1;
38 var myenum1 vl2;
39 vl2:= xx2;
40 if (vl1==xx1) {setverdict(pass);} //at declaration
41 else {setverdict(fail);}
42 if (vl2==xx2) {setverdict(pass);} //later
43 else {setverdict(fail);}
44 }
45
46 testcase tc_enumConst() runs on emptyComponent{
47 const myenum1 cl_1:=xx1;
48 if (cg_1==xx2) {setverdict(pass);} //definition part
49 else {setverdict(fail);}
50 if (cl_1==xx1) {setverdict(pass);} //testcase
51 else {setverdict(fail);}
52 }
53
54 testcase tc_enumCompEq() runs on emptyComponent {
55 var myenum1 vl1,vl2,vl3;
56 var myenum2 vl4;
57 vl1:=xx1;
58 vl2:=xx1;
59 vl3:=xx3;
60 vl4:=xx3;
61 if (vl1==vl2) {setverdict(pass);} //variable_variable
62 else {setverdict(fail);}
63 if (not(vl3==vl2)) {setverdict(pass);} //variable_variable
64 else {setverdict(fail);}
65 if (vl1==xx1) {setverdict(pass);} //variable_value
66 else {setverdict(fail);}
67 if (not(vl1==xx2)) {setverdict(pass);} //variable_value
68 else {setverdict(fail);}
69 if (xx1==vl1) {setverdict(pass);} //value_variable
70 else {setverdict(fail);}
71 if (not(xx3==vl1)) {setverdict(pass);} //value_variable
72 else {setverdict(fail);}
73 }
74
75 testcase tc_enumCompNotEq() runs on emptyComponent
76 { var myenum1 vl1,vl2,vl3;
77 var myenum2 vl4
78 vl1:=xx1;
79 vl2:=xx3;
80 vl3:=xx1;
81 vl4:=xx3;
82 if (vl1!=vl2) {setverdict(pass);} //variable_variable
83 else {setverdict(fail);}
84 if (not(vl1!=vl3)) {setverdict(pass);} //variable_variable
85 else {setverdict(fail);}
86 if (vl1!=xx2) {setverdict(pass);} //variable_value
87 else {setverdict(fail);}
88 if (not(vl1!=xx1)) {setverdict(pass);} //variable_value
89 else {setverdict(fail);}
90 if (xx2!=vl2) {setverdict(pass);} //value_variable
91 else {setverdict(fail);}
92 if (not(xx3!=vl2)) {setverdict(pass);} //value_variable
93 else {setverdict(fail);}
94 }
95
96 testcase tc_enumCompLess() runs on emptyComponent
97 { var myenum1 vl1,vl2,vl3;
98 vl1:=xx1;
99 vl2:=xx1;
100 vl3:=xx2;
101 if (vl1<vl3) {setverdict(pass);} //variable_variable
102 else {setverdict(fail);}
103 if (not(vl1<vl2)) {setverdict(pass);} //variable_variable
104 else {setverdict(fail);}
105 if (not(vl3<vl1)) {setverdict(pass);} //variable_variable
106 else {setverdict(fail);}
107 if (vl1<xx2) {setverdict(pass);} //variable_value
108 else {setverdict(fail);}
109 if (not(vl1<xx1)) {setverdict(pass);} //variable_value
110 else {setverdict(fail);}
111 if (not(vl3<xx1)) {setverdict(pass);} //variable_value
112 else {setverdict(fail);}
113 if (xx1<vl3) {setverdict(pass);} //value_variable
114 else {setverdict(fail);}
115 if (not(xx1<vl2)) {setverdict(pass);} //value_variable
116 else {setverdict(fail);}
117 if (not(xx2<vl1)) {setverdict(pass);} //value_variable
118 else {setverdict(fail);}
119 }
120
121 testcase tc_enumCompLessEq() runs on emptyComponent
122 { var myenum1 vl1,vl2,vl3;
123 vl1:=xx1;
124 vl2:=xx1;
125 vl3:=xx2;
126 if (vl1<=vl3) {setverdict(pass);} //variable_variable
127 else {setverdict(fail);}
128 if (vl1<=vl2) {setverdict(pass);} //variable_variable
129 else {setverdict(fail);}
130 if (not(vl3<=vl1)) {setverdict(pass);} //variable_variable
131 else {setverdict(fail);}
132 if (vl1<=xx2) {setverdict(pass);} //variable_value
133 else {setverdict(fail);}
134 if (vl1<=xx1) {setverdict(pass);} //variable_value
135 else {setverdict(fail);}
136 if (not(vl3<=xx1)) {setverdict(pass);} //variable_value
137 else {setverdict(fail);}
138 if (xx1<=vl3) {setverdict(pass);} //value_variable
139 else {setverdict(fail);}
140 if (xx1<=vl2) {setverdict(pass);} //value_variable
141 else {setverdict(fail);}
142 if (not(xx2<=vl1)) {setverdict(pass);} //value_variable
143 else {setverdict(fail);}
144 }
145
146 testcase tc_enumCompGreat() runs on emptyComponent
147 { var myenum1 vl1,vl2,vl3;
148 vl1:=xx1;
149 vl2:=xx1;
150 vl3:=xx2;
151 if (vl3>vl1) {setverdict(pass);} //variable_variable
152 else {setverdict(fail);}
153 if (not(vl1>vl2)) {setverdict(pass);} //variable_variable
154 else {setverdict(fail);}
155 if (not(vl1>vl3)) {setverdict(pass);} //variable_variable
156 else {setverdict(fail);}
157 if (vl3>xx1) {setverdict(pass);} //variable_value
158 else {setverdict(fail);}
159 if (not(vl1>xx1)) {setverdict(pass);} //variable_value
160 else {setverdict(fail);}
161 if (not(vl2>xx2)) {setverdict(pass);} //variable_value
162 else {setverdict(fail);}
163 if (xx2>vl1) {setverdict(pass);} //value_variable
164 else {setverdict(fail);}
165 if (not(xx1>vl2)) {setverdict(pass);} //value_variable
166 else {setverdict(fail);}
167 if (not(xx1>vl3)) {setverdict(pass);} //value_variable
168 else {setverdict(fail);}
169 }
170
171 testcase tc_enumCompGreatEq() runs on emptyComponent
172 { var myenum1 vl1,vl2,vl3;
173 vl1:=xx1;
174 vl2:=xx1;
175 vl3:=xx2;
176 if (vl3>=vl1) {setverdict(pass);} //variable_variable
177 else {setverdict(fail);}
178 if (vl1>=vl2) {setverdict(pass);} //variable_variable
179 else {setverdict(fail);}
180 if (not(vl1>=vl3)) {setverdict(pass);} //variable_variable
181 else {setverdict(fail);}
182 if (vl3>=xx1) {setverdict(pass);} //variable_value
183 else {setverdict(fail);}
184 if (vl1>=xx1) {setverdict(pass);} //variable_value
185 else {setverdict(fail);}
186 if (not(vl2>=xx2)) {setverdict(pass);} //variable_value
187 else {setverdict(fail);}
188 if (xx2>=vl1) {setverdict(pass);} //value_variable
189 else {setverdict(fail);}
190 if (xx1>=vl2) {setverdict(pass);} //value_variable
191 else {setverdict(fail);}
192 if (not(xx1>=vl3)) {setverdict(pass);} //value_variable
193 else {setverdict(fail);}
194 }
195
196 // in the number tests the automatic choice of numbers counts.
197 testcase tc_enumNumb1() runs on emptyComponent
198 { var myenum1 vl1,vl2,vl3; // automatic numbers
199 vl1:=xx1;
200 vl2:=xx2;
201 vl3:=xx3;
202 if (vl1<vl2) {setverdict(pass);}
203 else {setverdict(fail);}
204 if (vl2<vl3) {setverdict(pass);}
205 else {setverdict(fail);}
206 }
207
208 testcase tc_enumNumb2() runs on emptyComponent
209 { var myenum3 vl1,vl2,vl3; // manual numbers
210 vl1:=xx6; //2
211 vl2:=xx7; //4
212 vl3:=xx8; //1
213 if (vl3<vl1) {setverdict(pass);}
214 else {setverdict(fail);}
215 if (vl1<vl2) {setverdict(pass);}
216 else {setverdict(fail);}
217 }
218
219 testcase tc_enumNumb3() runs on emptyComponent
220 { var myenum4 vl1,vl2,vl3; // semi-automatic numbers
221 vl1:=xx9; //0 - automatic
222 vl2:=xx10; //3 - manual
223 vl3:=xx11; //1 - automatic
224 if (vl1<vl3) {setverdict(pass);}
225 else {setverdict(fail);}
226 if (vl3<vl2) {setverdict(pass);}
227 else {setverdict(fail);}
228 }
229
230 function f_enumReturn() return myenumSubtype1
231 {
232 var template myenumSubtype2 vt_mye1 := xx1
233 var myenumSubtype2 vl_mye1 := xx1
234 var myenumSubtype2 vl_myenumSubtype1 := valueof(t_mye1)
235 var myenumSubtype2 vl_myenumSubtype2 := cg_mye1
236 if (cg_mye1 == valueof(vt_mye1)) { return cg_mye1 }
237 else { return valueof(vt_mye1) }
238 if (vl_mye1 == vl_myenumSubtype1 and vl_myenumSubtype1 == vl_myenumSubtype2) { return valueof(t_mye1) }
239 else { return cg_mye1 }
240 }
241
242 testcase tc_enumSubtypes() runs on emptyComponent
243 {
244 if (f_enumReturn() == xx1) { setverdict(pass) }
245 else { setverdict(fail) }
246 }
247
248 testcase tc_enumIsvalue() runs on emptyComponent
249 {
250 var myenum1 x1 := xx1, x2;
251 template myenum1 subenum := (xx1,xx2);
252 template myenum1 every := ?;
253 template myenum1 actual := xx1;
254
255 if ( isvalue(x1) ) { setverdict(pass); } else { setverdict(fail); };
256 if ( isvalue(x2) ) { setverdict(fail); } else { setverdict(pass); };
257 if ( isvalue(subenum) ) { setverdict(fail); } else { setverdict(pass); };
258 if ( isvalue(every) ) { setverdict(fail); } else { setverdict(pass); };
259 if ( isvalue(actual) ) { setverdict(pass); } else { setverdict(fail); };
260
261 if ( isvalue(myenum1 : ( xx1 )) ) { setverdict(pass); } else { setverdict(fail); };
262 if ( isvalue(myenum1 : ( xx1, xx2 )) ) { setverdict(fail); } else { setverdict(pass); };
263 if ( isvalue(myenum1 : *) ) { setverdict(fail); } else { setverdict(pass); };
264
265 if ( isvalue(modifies actual := xx2) ) { setverdict(pass); } else { setverdict(fail); };
266 if ( isvalue(modifies actual := *) ) { setverdict(fail); } else { setverdict(pass); };
267 if ( isvalue(modifies subenum := xx2) ) { setverdict(pass); } else { setverdict(fail); };
268 }
269
270 testcase tc_int2enum() runs on emptyComponent
271 {
272 var myenum1 e1 := xx1;
273 var myenum2 e2;
274 var integer i := 2;
275 var myrecord rec1 := { e1 := omit, e3 := xx7 };
276 var myrecord rec2;
277 var myrecordof recof1 := { xx10, xx11 };
278 var myrecordof recof2 := { xx9 };
279
280 int2enum(1, e1);
281 int2enum(i, e2);
282 int2enum(5 - 3, rec1.e3);
283 int2enum(lengthof(recof1), rec1.e1);
284 int2enum(enum2int(cg_1), rec2.e3);
285 int2enum(1 + str2int("2"), recof1[1]);
286 int2enum(2 / 2, recof2[2]);
287
288 if (e1 != xx2) { setverdict(fail, "e1 = ", e1); }
289 if (e2 != xx5) { setverdict(fail, "e2 = ", e2); }
290 if (rec1 != { e1 := xx3, e3 := xx6 }) { setverdict(fail, "rec1 = ", rec1) };
291 if (log2str(rec2) != "{ e1 := <unbound>, e3 := xx8 (1) }") { setverdict(fail, "rec2 = ", rec2); }
292 if (recof1 != { xx10, xx10 }) { setverdict(fail, "recof1 = ", recof1); }
293 if (log2str(recof2) != "{ xx9 (0), <unbound>, xx11 (1) }") { setverdict(fail, "recof2 = ", recof2); }
294 setverdict(pass);
295 }
296
297 control {
298 const myenum1 cl_1 := xx1; // can constants be declared in the control part
299 const myenum2 cl_2 := xx3;
300 const myenum3 cl_3 := xx6;
301 const myenum4 cl_4 := xx9;
302 var myenum1 vl_1; // can variable be declared in the control part
303 var myenum2 vl_2;
304 var myenum3 vl_3;
305 var myenum4 vl_4;
306
307 execute(tc_enumAssign());
308 execute(tc_enumConst());
309 execute(tc_enumCompEq());
310 execute(tc_enumCompNotEq());
311 execute(tc_enumCompLess());
312 execute(tc_enumCompLessEq());
313 execute(tc_enumCompGreat());
314 execute(tc_enumCompGreatEq());
315 execute(tc_enumNumb1());
316 execute(tc_enumNumb2());
317 execute(tc_enumNumb3());
318 execute(tc_enumSubtypes());
319 execute(tc_enumIsvalue());
320 execute(tc_int2enum());
321 }
322 }
This page took 0.041962 seconds and 5 git commands to generate.