Sync with 5.2.0
[deliverable/titan.core.git] / function_test / Semantic_Analyser / TTCN3_SA_13_TD.script
CommitLineData
970ed795
EL
1.******************************************************************************
2.* Copyright (c) 2000-2014 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.******************************************************************************/
8text.
9:lang eng.
10.*
11:docname.Test Description
12:docno.
13:rev.PA3
14:date.2013-01-16
15.*
16:prep.ETH/XZR ETHBAAT
17:subresp.ETHBAAT
18:appr.ETH/RZ (Gyula Koos)
19:checked.ETHGRY
20.*
21:title.Test description of the TTCN-3 Semantic Analyzer: IsBound, Ispresent, AllFrom, Embedded functions
22:contents level=3.
23.*---------------------------------------------------------------------*
24:h1.PREREQUISITES AND PREPARATIONS
25.*---------------------------------------------------------------------*
26.*---------------------------------------------------------------------*
27:h2.Scope of the Test Object
28.*---------------------------------------------------------------------*
29:xmp tab=1 nokeep.
30This TD contains unified test cases related to TTCN3 Executor's "isbound", "ispresent" and "all from" function.
31DON'T YOU DARE TO WRITE AN INSPECTION RECORD ABOUT THIS FILE
32
33:exmp.
34
35:p.:us.Revision Information:eus.
36
37:xmp nokeep.
38:us.History:eus.
39
40REV DATE PREPARED CHANGE
41=== ========== ======== ======
42PA2 2012-12-11 ETHBAAT embedded functions
43PA3 2013-01-11 ETHBAAT structured macro
44PA4 2013-01-16 ETHBAAT structured macro moved into Config_Parser/PreprocessingCfgFiles_TD.script
45:exmp.
46
47.*---------------------------------------------------------------------*
48:h2.Test Tools
49.*---------------------------------------------------------------------*
50:p.:us.Software Tools:eus.
51:xmp tab=2 nokeep.
52
53 SAtester
54
55:exmp.
56:np.
57.*---------------------------------------------------------------------*
58:h1.REQUIREMENT-BASED TESTS
59.*---------------------------------------------------------------------*
60.*---------------------------------------------------------------------*
61:h2.Testing Isbound feature
62.*---------------------------------------------------------------------*
63
64.*---------------------------------------------------------------------*
65:h3. Aggregated isbound testcases - Positive tests
66.*---------------------------------------------------------------------*
67:xmp tab=0.
68
69<TC - Aggregated isbound testcases - Positive tests >
70
71<EXECUTE_PARALLEL>
72
73<MODULE TTCN IsBound_Test IsBound_Test.ttcn>
74module IsBound_Test {
75
76type port MyChrMessage_PT message {
77 inout charstring
78} with { extension "internal"}
79
80type component MTC_CT {
81 port MyChrMessage_PT my_PCO;
82 var integer v_counter1 :=0;
83
84}
85//===== SIMPLE, NOT TOO DEEP =====
86type record of charstring ROC;
87type record of integer ROI;
88type record MyRecord {
89 integer i optional,
90 float x optional,
91 charstring c
92}
93
94type record of ROI ROROI;
95
96type union MyUnion1 {
97 ROC roc,
98 integer i,
99 ROI roi,
100 MyRecord r
101}
102
103const MyUnion1 c_myunion1:= { roc:= { "1aa", "2bb", "3cc"}}
104const MyUnion1 c_myunion2:= { i:= 5}
105
106
107//====== DEEP 3===============
108type record MyRec2{
109 ROC roc optional,
110 ROI roi optional,
111 MyUnion1 u optional,
112 MyRecord r optional
113}
114
115type record of MyRec2 MyRecOf
116
117 type record MyRec3{
118 ROROI roroi optional,
119 MyRec2 r optional
120 }
121
122 const MyRec2 c_myrec2_1:={
123 roc:=omit,
124 roi:={},
125 u:={r:={ i:=1, x:=1.0, c:="one"}},
126 r:={ i:=1, x:=1.0, c:="one"}
127 }
128 const MyRec2 c_myrec2_2:={
129 roc:={},
130 roi:={10,9,8},
131 u:={r:={ i:=1, x:=1.0, c:="one"}},
132 r:={ i:=1, x:=1.0, c:="one"}
133 }
134
135
136 //partially initialized record:
137 const MyRec2 c_myrec2_part:={
138 roc:={},
139 roi:={10,9,8},
140 u:={ r:={ /*i:=1,*/ x:=1.0, c:="one"}},
141 r:={ i:=1, x:=1.0, c:="one"}
142 }
143 const MyRec3 c_myrec3_1 := {
144 roroi:= { {1,2,3,4,5,6,7,8,9},{10} },
145 r:= omit
146 }
147
148 const MyRec3 c_myrec3_2 := {
149 roroi:= { {1,2,3,4,5,6,7,8,9},{10} },
150 r:= {
151 roc:={},
152 roi:={},
153 u:={i:=5},
154 r:=omit
155 }
156 }
157
158 const MyRec3 c_myrec3_innerOmits := {
159 roroi:= { {1,2,3,4,5,6,7,8,9},{10} },
160 r:= {
161 roc:=omit,
162 roi:=omit,
163 u:=omit,
164 r:=omit
165 }
166 }
167
168
169 //==== Templates =====
170
171
172 //===== SIMPLE TYPES =====
173 testcase tc_simple_charstring() runs on MTC_CT {
174 var charstring vl_ch;
175 if(isbound(vl_ch)){setverdict(fail)} else {setverdict(pass)}
176 vl_ch:="honey"
177 if(isbound(vl_ch)) {setverdict(pass)} else {setverdict(fail)}
178 }
179
180 testcase tc_simple_charstring_template() runs on MTC_CT {
181 var template charstring vlt_ch;
182 if(isbound(vlt_ch)){setverdict(fail)} else {setverdict(pass)}
183 vlt_ch:="AB?D*"
184 if(isbound(vlt_ch)) {setverdict(pass)} else {setverdict(fail)}
185 }
186
187 testcase tc_simple_charstring_template_pattern() runs on MTC_CT {
188 var template charstring vlt_ch;
189 if(isbound(vlt_ch)){setverdict(fail)} else {setverdict(pass)}
190 vlt_ch:= pattern "AB?D"
191 if(isbound(vlt_ch)) {setverdict(pass)} else {setverdict(fail)}
192 }
193
194 testcase tc_simple_integer() runs on MTC_CT {
195 var integer vl_i;
196 if(isbound(vl_i)){setverdict(fail)} else {setverdict(pass)}
197 vl_i:=5;
198 if(isbound(vl_i)) {setverdict(pass)} else {setverdict(fail)}
199
200 var template integer vtl_i :=*;
201 if(isbound( vtl_i )) {setverdict(pass)}else {setverdict(fail)};
202 vtl_i:=5;
203 if(isbound( vtl_i )) {setverdict(pass)}else {setverdict(fail)};
204 }
205
206 testcase tc_simple_octetstring() runs on MTC_CT {
207 var octetstring vl_o;
208 if(isbound(vl_o)){setverdict(fail)} else {setverdict(pass)}
209 vl_o:='ABBA'O;
210 if(isbound(vl_o)) {setverdict(pass)} else {setverdict(fail)}
211 }
212
213 //======= SPECIAL TYPES ======
214
215 altstep as_empty() runs on MTC_CT {
216 [] my_PCO.receive {}
217 };
218
219 function f_empty() runs on MTC_CT {
220 log("f_empty called");
221 }
222
223 testcase tc_special_default_value() runs on MTC_CT {
224 var default vl_default;
225 if(isbound(vl_default)){setverdict(fail)}else {setverdict(pass)};
226
227 vl_default := null;
228 if(isbound(vl_default)) {setverdict(pass)} else {setverdict(fail)}
229
230 vl_default := activate(as_empty());
231 //log("default altstep after activate:", vl_default);
232 if(isbound(vl_default)){setverdict(pass)}else {setverdict(fail)};
233
234 deactivate(vl_default);
235 //log("default altstep after deactivate:", vl_default);
236 if(isbound(vl_default)){setverdict(pass)}else {setverdict(fail)};
237 }
238
239 testcase tc_special_compref() runs on MTC_CT {
240 var MTC_CT vc_myComp;
241 log("vc_myComp before create:", vc_myComp);
242 if(isbound(vc_myComp)){setverdict(fail)}else {setverdict(pass)};
243
244 vc_myComp:= MTC_CT.create("hali");
245 log("vc_myComp after create:", vc_myComp);
246 if(isbound(vc_myComp)){setverdict(pass)}else {setverdict(fail)};
247
248 vc_myComp.start(f_empty());
249 if(isbound(vc_myComp)){setverdict(pass)}else {setverdict(fail)};
250
251 vc_myComp.done;
252 if(isbound(vc_myComp)){setverdict(pass)}else {setverdict(fail)};
253 }
254
255 //========= Compound =====
256 testcase tc_unionOfRecordOfs1() runs on MTC_CT {
257 var MyUnion1 vl_u:= c_myunion1;
258 if(isbound(vl_u)) {setverdict(pass)} else {setverdict(fail)}
259 if(isbound(vl_u.roc)){setverdict(pass)} else {setverdict(fail)}
260 if(isbound(vl_u.roc[0])){setverdict(pass)}else {setverdict(fail)}
261 if(isbound(vl_u.roc[1])){setverdict(pass)}else {setverdict(fail)}
262 if(isbound(vl_u.roc[2])){setverdict(pass)}else {setverdict(fail)}
263 if(isbound(vl_u.roc[3])){setverdict(fail)}else {setverdict(pass)}
264 if(isbound(vl_u.roc[99])){setverdict(fail)}else {setverdict(pass)}
265 if(isbound(vl_u.i)){setverdict(fail)}else {setverdict(pass)}
266 if(isbound(vl_u.roi)){setverdict(fail)}else {setverdict(pass)}
267 if(isbound(vl_u.roi[0])){setverdict(fail)}else {setverdict(pass)}
268 if(isbound(vl_u.roi[1])){setverdict(fail)} else {setverdict(pass)}
269 log(vl_u.roc);
270 }
271
272 testcase tc_unionOfRecordOfs2() runs on MTC_CT {
273 var MyUnion1 vl_u:= c_myunion2;
274 if(isbound(vl_u)) {setverdict(pass)} else {setverdict(fail)}
275 if(isbound(vl_u.roc)){setverdict(fail)} else {setverdict(pass)}
276 if(isbound(vl_u.roc[0])){setverdict(fail)} else {setverdict(pass)}
277 if(isbound(vl_u.roc[1])){setverdict(fail)} else {setverdict(pass)}
278 if(isbound(vl_u.roc[2])){setverdict(fail)} else {setverdict(pass)}
279 if(isbound(vl_u.roc[3])){setverdict(fail)} else {setverdict(pass)}
280 if(isbound(vl_u.roc[99])){setverdict(fail)} else {setverdict(pass)}
281 if(isbound(vl_u.r)){setverdict(fail)} else {setverdict(pass)};
282 if(isbound(vl_u.r.i)){setverdict(fail)} else {setverdict(pass)};
283 if(isbound(vl_u.r.x)){setverdict(fail)} else {setverdict(pass)};
284 if(isbound(vl_u.r.c)){setverdict(fail)} else {setverdict(pass)};
285 //checks if the selected item remained the same
286 if(isbound(vl_u.i)){setverdict(pass)}else {setverdict(fail)}
287 if(isbound(vl_u.roi)){setverdict(fail)} else {setverdict(pass)}
288 if(isbound(vl_u.roi[0])){setverdict(fail)}else {setverdict(pass)}
289 if(isbound(vl_u.roi[1])){setverdict(fail)} else {setverdict(pass)}
290 }
291
292
293testcase tc_compilationerror1() runs on MTC_CT {
294 var MyUnion1 vl_u:= c_myunion2;
295 if(isbound(vl_u)) {setverdict(pass)} else {setverdict(fail)}
296 if(isbound(vl_u.roc)){setverdict(fail)} else {setverdict(pass)}
297 if(isbound(vl_u.roc[0])){setverdict(fail)}else {setverdict(pass)}
298 if(isbound(vl_u.r.x)){setverdict(fail)}else {setverdict(pass)}
299 if(isbound(vl_u.roc[99])){setverdict(fail)} else {setverdict(pass)}
300}
301
302
303
304 testcase tc_union_modify() runs on MTC_CT {
305 var MyUnion1 vl_u:= c_myunion2;
306 if(isbound(vl_u)) {setverdict(pass)} else {setverdict(fail)}
307 if(isbound(vl_u.roc)){setverdict(fail)} else {setverdict(pass)}
308 if(isbound(vl_u.roi)){setverdict(fail)} else {setverdict(pass)}
309
310 vl_u:=c_myunion1;
311 if(isbound(vl_u)) {setverdict(pass)} else {setverdict(fail)}
312 if(isbound(vl_u.roc)){setverdict(pass)} else {setverdict(fail)}
313 if(isbound(vl_u.roc[0])){setverdict(pass)}else {setverdict(fail)}
314 if(isbound(vl_u.roc[1])){setverdict(pass)}else {setverdict(fail)}
315 if(isbound(vl_u.roc[2])){setverdict(pass)}else {setverdict(fail)}
316 if(isbound(vl_u.roc[3])){setverdict(fail)}
317 if(isbound(vl_u.roc[99])){setverdict(fail)}
318 if(isbound(vl_u.i)){setverdict(fail)}
319 if(isbound(vl_u.roi)){setverdict(fail)}
320 if(isbound(vl_u.roi[0])){setverdict(fail)}
321 if(isbound(vl_u.roi[1])){setverdict(fail)} else {setverdict(pass)}
322 log(vl_u.roc);
323 }
324 //expected:error
325 testcase tc_sideeffect1() runs on MTC_CT {
326 var MyUnion1 vl_u:= c_myunion1; // { roc:= { "1aa", "2bb", "3cc"}}
327 if(isbound(vl_u.roc[3])){setverdict(fail)}else {setverdict(pass)}
328 if(ispresent(vl_u.roc[3])){setverdict(fail)}else {setverdict(pass)}
329 }
330
331 //expected:error
332 testcase tc_sideeffect2() runs on MTC_CT {
333 var MyUnion1 vl_u:= c_myunion1; // { roc:= { "1aa", "2bb", "3cc"}}
334 var integer vl_oldsize:=0, vl_newsize:=0;
335 vl_oldsize:=sizeof(vl_u.roc);
336
337 if(isbound(vl_u.i)){setverdict(fail)}else {setverdict(pass)}
338
339 if(isbound(vl_u.roc)) {setverdict(pass)}else {setverdict(fail)}
340
341 //checks if size is unchenged
342 if(isbound(vl_u.roc[4])) {setverdict(fail)}else {setverdict(pass)}
343 vl_newsize:=sizeof(vl_u.roc);
344 if(vl_newsize == vl_oldsize) {setverdict(pass)}else {setverdict(fail)}
345 //log(vl_u.i);
346 }
347
348 //====== DEEP 2-3 ===============
349 testcase tc_recordOf_omit1() runs on MTC_CT {
350 var MyRec2 vl_r:=c_myrec2_1;
351 if(isbound(vl_r.roc)){setverdict(pass)}else {setverdict(fail)};
352 }
353
354 testcase tc_recordOf_omit2() runs on MTC_CT {
355 var MyRec2 vl_r:=c_myrec2_1;
356 if(isbound(vl_r.roc[0])){setverdict(fail)}else {setverdict(pass)};
357 }
358
359 testcase tc_recordOf_emptyRoi1() runs on MTC_CT {
360 var MyRec2 vl_r:=c_myrec2_1;
361 if(isbound(vl_r.roi)){setverdict(pass)}else {setverdict(fail)};
362 }
363
364 testcase tc_recordOf_emptyRoi2() runs on MTC_CT {
365 var MyRec2 vl_r:=c_myrec2_1;
366 if(isbound(vl_r.roi[0])){setverdict(fail)}else {setverdict(pass)};
367 }
368
369 testcase tc_recordOf_emptyRoi3() runs on MTC_CT {
370 var MyRec2 vl_r:=c_myrec2_1;
371 if(isbound(vl_r.roi[90])){setverdict(fail)}else {setverdict(pass)};
372 }
373
374 testcase tc_record_completlyInit() runs on MTC_CT {
375 var MyRec2 vl_r:=c_myrec2_1;
376 if(isbound(vl_r)){setverdict(pass)}else {setverdict(fail)};
377 }
378
379 testcase tc_record_partiallyInit1() runs on MTC_CT {
380 var MyRec2 vl_r:=c_myrec2_part;
381 if(isbound(vl_r)){setverdict(pass)}else {setverdict(fail)};
382 }
383
384
385 testcase tc_record_partiallyInit3() runs on MTC_CT {
386 var MyRec2 vl_r:=c_myrec2_part;
387 if(isbound(vl_r.roc)){setverdict(pass)}else {setverdict(fail)};
388 }
389
390 testcase tc_record_partiallyInit4() runs on MTC_CT {
391 var MyRec2 vl_r:=c_myrec2_part;
392 if(isbound(vl_r.roi)){setverdict(pass)}else {setverdict(fail)};
393 }
394
395 testcase tc_record_partiallyInit5() runs on MTC_CT {
396 var MyRec2 vl_r:=c_myrec2_part;
397 if(isbound(vl_r.u)){setverdict(pass)}else {setverdict(fail)};
398 }
399
400 testcase tc_record_partiallyInit6() runs on MTC_CT {
401 var MyRec2 vl_r:=c_myrec2_part;
402 if(isbound(vl_r.u.r)){setverdict(pass)}else {setverdict(fail)};
403 }
404
405 testcase tc_record_partiallyInit7() runs on MTC_CT {
406 var MyRec2 vl_r:=c_myrec2_part;
407 if(isbound(vl_r.u.r.i)){setverdict(fail)}else {setverdict(pass)};
408 }
409
410 testcase tc_record_partiallyInit8() runs on MTC_CT {
411 var MyRec2 vl_r:=c_myrec2_part;
412 if(isbound(vl_r.u.r.x)){setverdict(pass)}else {setverdict(fail)};
413 }
414
415 testcase tc_record_partiallyInit9() runs on MTC_CT {
416 var MyRec2 vl_r:=c_myrec2_part;
417 if(isbound(vl_r.u.r.c)){setverdict(pass)}else {setverdict(fail)};
418 }
419
420 testcase tc_record_partiallyInit10() runs on MTC_CT {
421 var MyRec2 vl_r:=c_myrec2_part;
422 if(isbound(vl_r.u.i)){setverdict(fail)}else {setverdict(pass)};
423 }
424
425
426 testcase tc_record_partiallyInit11() runs on MTC_CT {
427 var MyRec2 vl_r:={ r:={}}
428 if(isbound(vl_r.r)){setverdict(fail)}else {setverdict(pass)};
429 }
430
431 testcase tc_record_partiallyInit12() runs on MTC_CT {
432 var MyRec2 vl_r:={ r:={i:=5}}
433 if(isbound(vl_r.r)){setverdict(pass)}else {setverdict(fail)};
434 if(isbound(vl_r.r.i)){setverdict(pass)}else {setverdict(fail)};
435 }
436
437 testcase tc_record_partiallyInit13() runs on MTC_CT {
438 var MyRec2 vl_r:={ r:={i:=5,x:=-,c:= -}}
439 if(isbound(vl_r)){setverdict(pass)}else {setverdict(fail)};
440 if(isbound(vl_r.r)){setverdict(pass)}else {setverdict(fail)};
441 if(isbound(vl_r.r.i)){setverdict(pass)}else {setverdict(fail)};
442 }
443
444 testcase tc_recordOf_union() runs on MTC_CT {
445 var MyRec2 vl_r:=c_myrec2_1;
446 if(isbound(vl_r.u)){setverdict(pass)}else {setverdict(fail)};
447 if(isbound(vl_r.u.r)){setverdict(pass)}else {setverdict(fail)};
448 if(isbound(vl_r.u.r.i)){setverdict(pass)}else {setverdict(fail)};
449 if(isbound(vl_r.u.r.x)){setverdict(pass)}else {setverdict(fail)};
450 if(isbound(vl_r.u.r.c)){setverdict(pass)}else {setverdict(fail)};
451 if(isbound(vl_r.u.roi)){setverdict(fail)}else {setverdict(pass)};
452 if(isbound(vl_r.u.roi[3])){setverdict(fail)}else {setverdict(pass)};
453 if(isbound(vl_r.u.i)){setverdict(fail)}else {setverdict(pass)};
454 if(isbound(vl_r.u.roc)){setverdict(fail)}else {setverdict(pass)};
455 if(isbound(vl_r.u.roc[0])){setverdict(fail)}else {setverdict(pass)};
456 }
457
458 testcase tc_recordOf_recordOfRecordOfInt() runs on MTC_CT {
459 var MyRec3 vl_r:=c_myrec3_1;
460 if(isbound(vl_r.roroi)){setverdict(pass)}else {setverdict(fail)};
461 if(isbound(vl_r.roroi[0])){setverdict(pass)}else {setverdict(fail)};
462 if(isbound(vl_r.roroi[1])){setverdict(pass)}else {setverdict(fail)};
463 if(isbound(vl_r.roroi[2])){setverdict(fail)}else {setverdict(pass)};
464 if(isbound(vl_r.roroi[200])){setverdict(fail)}else {setverdict(pass)};
465 if(isbound(vl_r.roroi[0][0])){setverdict(pass)}else {setverdict(fail)};
466 if(isbound(vl_r.roroi[0][8])){setverdict(pass)}else {setverdict(fail)};
467 if(isbound(vl_r.roroi[0][9])){setverdict(fail)}else {setverdict(pass)};
468 if(isbound(vl_r.roroi[1][0])){setverdict(pass)}else {setverdict(fail)};
469 if(isbound(vl_r.roroi[1][1])){setverdict(fail)}else {setverdict(pass)};
470 if(isbound(vl_r.roroi[2][0])){setverdict(fail)}else {setverdict(pass)};
471 }
472
473 testcase tc_recordOf_recordInRecord() runs on MTC_CT {
474 var MyRec3 vl_r:=c_myrec3_2;
475 if(isbound(vl_r.r)) {setverdict(pass)}else {setverdict(fail)};
476 if(isbound(vl_r.r.roc)) {setverdict(pass)}else {setverdict(fail)};
477 if(isbound(vl_r.r.roi)) {setverdict(pass)}else {setverdict(fail)};
478 if(isbound(vl_r.r.u)) {setverdict(pass)}else {setverdict(fail)};
479 if(isbound(vl_r.r.u)) {setverdict(pass)}else {setverdict(fail)};
480 if(isbound(vl_r.r.u.i)) {setverdict(pass)}else {setverdict(fail)};
481 if(isbound(vl_r.r.r)) {setverdict(pass)}else {setverdict(fail)}; //fails!
482 }
483
484 testcase tc_recordOf_recordInRecord_innerOmits() runs on MTC_CT {
485 var MyRec3 vl_r:=c_myrec3_innerOmits;
486 if(isbound(vl_r.roroi)) {setverdict(pass)}else {setverdict(fail)};
487 if(isbound(vl_r.r)) {setverdict(pass)}else {setverdict(fail)};
488 if(isbound(vl_r.r.roc)) {setverdict(pass)}else {setverdict(fail)};
489 if(isbound(vl_r.r.roi)) {setverdict(pass)}else {setverdict(fail)};
490 if(isbound(vl_r.r.u)) {setverdict(pass)}else {setverdict(fail)};
491 if(isbound(vl_r.r.r)){setverdict(pass)}else {setverdict(fail)};
492 }
493
494
495 template MyRecOf t_recOf1 := (
496 { [0]:= { roc:=omit }, [1]:= {roc:=omit} },
497 { [0]:= { roc:=omit }, [1]:= {roc:={"one", "two"}} },
498 { [0]:= { roc:=omit }, [2]:= {u:={i:=5}} }
499 )
500
501 testcase tc_recordOf_template1() runs on MTC_CT {
502 var template MyRecOf vtl_recOf:= t_recOf1;
503 if(isbound( vtl_recOf )) {setverdict(pass)}else {setverdict(fail)};
504 if(isbound( t_recOf1 )) {setverdict(pass)}else {setverdict(fail)};
505 }
506
507 testcase tc_recordOf_template2() runs on MTC_CT {
508 var template MyRecOf vtl_recOf:= t_recOf1;
509 if(isbound( vtl_recOf[0] )) {setverdict(fail)}else {setverdict(pass)};
510 if(isbound( vtl_recOf[1] )) {setverdict(fail)}else {setverdict(pass)};
511 if(isbound( vtl_recOf[2] )) {setverdict(fail)}else {setverdict(pass)};
512 }
513
514 //========== JOKER in templates====================
515
516 testcase tc_record_withJoker1() runs on MTC_CT {
517 var template MyRec2 vtl_rec2_j;
518 if(isbound(vtl_rec2_j)) {setverdict(fail)}else {setverdict(pass)};
519 vtl_rec2_j:={
520 roc:=*
521 }
522 if(isbound(vtl_rec2_j)) {setverdict(pass)}else {setverdict(fail)};
523 if(isbound(vtl_rec2_j.roc)) {setverdict(pass)}else {setverdict(fail)};
524 if(isbound(vtl_rec2_j.roc[0])) {setverdict(fail)}else {setverdict(pass)};
525 }
526 testcase tc_record_withJoker2() runs on MTC_CT {
527 var template MyRec2 vtl_rec2_j;
528 vtl_rec2_j:={
529 roc:={ ?,? }
530 }
531 if(isbound(vtl_rec2_j)) {setverdict(pass)}else {setverdict(fail)};
532 if(isbound(vtl_rec2_j.roc)) {setverdict(pass)}else {setverdict(fail)};
533 if(isbound(vtl_rec2_j.roc[0])){setverdict(pass)}else {setverdict(fail)};
534 if(isbound(vtl_rec2_j.roc[1])){setverdict(pass)}else {setverdict(fail)};
535 if(isbound(vtl_rec2_j.roc[10])){setverdict(fail)}else {setverdict(pass)};
536 if(isbound(vtl_rec2_j.roi)){setverdict(fail)}else {setverdict(pass)};
537 if(isbound(vtl_rec2_j.u)){setverdict(fail)}else {setverdict(pass)};
538 if(isbound(vtl_rec2_j.r)){setverdict(fail)}else {setverdict(pass)};
539 }
540
541 testcase tc_record_withJoker3() runs on MTC_CT {
542 var template MyRec2 vtl_rec2_j;
543 vtl_rec2_j:={
544 u := *
545 }
546 if(isbound(vtl_rec2_j)) {setverdict(pass)}else {setverdict(fail)};
547 if(isbound(vtl_rec2_j.roc)){setverdict(fail)}else {setverdict(pass)};
548 if(isbound(vtl_rec2_j.roi)){setverdict(fail)}else {setverdict(pass)};
549 if(isbound(vtl_rec2_j.u)){setverdict(pass)}else {setverdict(fail)};
550 if(isbound(vtl_rec2_j.u.i)){setverdict(fail)}else {setverdict(pass)};
551 }
552
553 testcase tc_record_withJoker4() runs on MTC_CT {
554 var template MyRec2 vtl_rec2_j;
555 vtl_rec2_j:={
556 roc:=omit,
557 u:={i:=?}
558 }
559 if(isbound(vtl_rec2_j)) {setverdict(pass)}else {setverdict(fail)};
560 if(isbound(vtl_rec2_j.roc)){setverdict(pass)}else {setverdict(fail)};
561 if(isbound(vtl_rec2_j.roi)){setverdict(fail)}else {setverdict(pass)};
562 if(isbound(vtl_rec2_j.u)){setverdict(pass)}else {setverdict(fail)};
563 if(isbound(vtl_rec2_j.u.i)){setverdict(pass)}else {setverdict(fail)};
564 }
565
566 testcase tc_record_withJoker5() runs on MTC_CT {
567 var template MyRec2 vtl_rec2_j;
568 vtl_rec2_j:={
569 r:= ?
570 }
571 if(isbound(vtl_rec2_j)) {setverdict(pass)}else {setverdict(fail)};
572 if(isbound(vtl_rec2_j.roc)){setverdict(fail)}else {setverdict(pass)};
573 if(isbound(vtl_rec2_j.roi)){setverdict(fail)}else {setverdict(pass)};
574 if(isbound(vtl_rec2_j.u)){setverdict(fail)}else {setverdict(pass)};
575 if(isbound(vtl_rec2_j.u.i)){setverdict(fail)}else {setverdict(pass)};
576 if(isbound(vtl_rec2_j.r)) {setverdict(pass)}else {setverdict(fail)};
577 if(isbound(vtl_rec2_j.r.i)) {setverdict(pass)}else {setverdict(fail)};
578 if(isbound(vtl_rec2_j.r.x)) {setverdict(pass)}else {setverdict(fail)};
579 if(isbound(vtl_rec2_j.r.c)) {setverdict(pass)}else {setverdict(fail)};
580 }
581
582 testcase tc_record_withJoker6() runs on MTC_CT {
583 var template MyRec2 vtl_rec2_j;
584 vtl_rec2_j:={
585 r:= *
586 }
587 if(isbound(vtl_rec2_j)) {setverdict(pass)}else {setverdict(fail)};
588 if(isbound(vtl_rec2_j.roc)){setverdict(fail)}else {setverdict(pass)};
589 if(isbound(vtl_rec2_j.roi)){setverdict(fail)}else {setverdict(pass)};
590 if(isbound(vtl_rec2_j.u)){setverdict(fail)}else {setverdict(pass)};
591 if(isbound(vtl_rec2_j.u.i)){setverdict(fail)}else {setverdict(pass)};
592 if(isbound(vtl_rec2_j.r)) {setverdict(pass)}else {setverdict(fail)};
593 if(isbound(vtl_rec2_j.r.i)) {setverdict(fail)}else {setverdict(pass)};
594 if(isbound(vtl_rec2_j.r.x)) {setverdict(fail)}else {setverdict(pass)};
595 if(isbound(vtl_rec2_j.r.c)) {setverdict(fail)}else {setverdict(pass)};
596 }
597
598 group g_TR_HO72812 {
599 type record MyRecord_HO72812
600 {
601 record {
602 boolean innerField1 optional,
603 integer innerField2 optional
604 } field1 optional,
605 integer field2
606 }
607 testcase tc_record_TR_HO72813() runs on MTC_CT {
608 var MyRecord_HO72812 vl_MyRecord := { field1 := {}, field2 := 5 };
609 if(isbound(vl_MyRecord)) {setverdict(pass)} else {setverdict(fail)}
610 if(isbound(vl_MyRecord.field1)) {setverdict(fail)} else {setverdict(pass)}
611 if(isbound(vl_MyRecord.field2)) {setverdict(pass)} else {setverdict(fail)}
612 vl_MyRecord.field1 := omit
613 if(isbound(vl_MyRecord.field1)) {setverdict(pass)} else {setverdict(fail)}
614 if(isbound(vl_MyRecord.field1.innerField1)) {setverdict(fail)} else {setverdict(pass)}
615 if(isbound(vl_MyRecord.field1.innerField1)) {setverdict(fail)} else {setverdict(pass)}
616 if(ispresent(vl_MyRecord.field1)) {setverdict(fail)} else {setverdict(pass)}
617
618 vl_MyRecord := { field1 := {innerField1:=true, innerField2:=1 } }
619 if(isbound(vl_MyRecord.field1)) {setverdict(pass)} else {setverdict(fail)}
620 if(isbound(vl_MyRecord.field1.innerField1)) {setverdict(pass)} else {setverdict(fail)}
621 if(isbound(vl_MyRecord.field1.innerField2)) {setverdict(pass)} else {setverdict(fail)}
622 }
623 }
624
625
626 template integer t_i(integer i, integer j) :=i+j;
627
628 testcase tc_runtimeExprEval() runs on MTC_CT {
629 var template integer vt_i:= t_i(1,2);
630 var integer vl_i:=1, vl_j:=0;
631 if(isbound(vt_i)) {setverdict(pass)} else {setverdict(fail)};
632 if(isbound(t_i(1,2))) {setverdict(pass)} else {setverdict(fail)};
633 if(isbound(t_i(1,2*vl_i))) {setverdict(pass)} else {setverdict(fail)};
634 //if(isbound(t_i(1,2/vl_j))) {setverdict(pass)} else {setverdict(fail)}; //DTE
635 }
636
637
638 control {
639
640 execute(tc_simple_charstring());
641 execute(tc_simple_charstring_template());
642 execute(tc_simple_charstring_template_pattern());
643
644 execute(tc_simple_integer());
645 execute(tc_simple_octetstring());
646 execute(tc_special_default_value());
647 execute(tc_special_compref());
648
649 execute(tc_unionOfRecordOfs1());
650 execute(tc_unionOfRecordOfs2());
651 execute(tc_compilationerror1());
652 execute(tc_union_modify());
653 execute(tc_sideeffect1());
654 execute(tc_sideeffect2());
655 execute(tc_recordOf_omit1());//failed, corrected
656 execute(tc_recordOf_omit2());
657 execute(tc_recordOf_emptyRoi1());
658 execute(tc_recordOf_emptyRoi2());
659 execute(tc_recordOf_emptyRoi3());
660 execute(tc_record_completlyInit());
661 execute(tc_record_partiallyInit1());
662 execute(tc_record_partiallyInit3());
663 execute(tc_record_partiallyInit4());
664 execute(tc_record_partiallyInit5());
665 execute(tc_record_partiallyInit6());
666 execute(tc_record_partiallyInit7());
667 execute(tc_record_partiallyInit8());
668 execute(tc_record_partiallyInit9());
669 execute(tc_record_partiallyInit10());
670 execute(tc_record_partiallyInit11()); //<=======IT CAUSED COMPILATION ERROR
671 execute(tc_record_partiallyInit12());
672 execute(tc_record_partiallyInit13());
673 execute(tc_recordOf_union());
674 execute(tc_recordOf_recordOfRecordOfInt());
675 execute(tc_recordOf_recordInRecord());
676 execute(tc_recordOf_recordInRecord_innerOmits());
677 execute(tc_recordOf_template1());
678 execute(tc_recordOf_template2());
679 execute(tc_record_withJoker1());
680 execute(tc_record_withJoker2());
681 execute(tc_record_withJoker3());
682 execute(tc_record_withJoker4());
683 execute(tc_record_withJoker5());
684 execute(tc_record_withJoker6());
685 execute(tc_record_TR_HO72813());
686 //execute(tc_runtimeDivisionByZero()); //DTE !!!
687 execute(tc_runtimeExprEval());
688 }
689
690}//module
691
692
693<END_MODULE>
694
695<RESULT IF_PASS POSITIVE 45>
696Verdict: pass
697<END_RESULT>
698
699<END_TC>
700
701:exmp.
702
703.*---------------------------------------------------------------------*
704:h3. Aggregated isbound testcases - Negative tests
705.*---------------------------------------------------------------------*
706:xmp tab=0.
707
708<TC - Aggregated isbound testcases - Negative tests >
709
710
711<EXECUTE_PARALLEL>
712<VERDICT_LEAF ERROR>
713
714<MODULE TTCN IsBound_Test IsBound_Test.ttcn>
715
716module IsBound_Test {
717type port MyChrMessage_PT message {
718 inout charstring
719} with { extension "internal"}
720
721type component MTC_CT {
722 port MyChrMessage_PT my_PCO;
723 var integer v_counter1 :=0;
724
725}
726//===== SIMPLE, NOT TOO DEEP =====
727type record of charstring ROC;
728type record of integer ROI;
729type record MyRecord {
730 integer i optional,
731 float x optional,
732 charstring c
733}
734
735type record of ROI ROROI;
736 type union MyUnion1 {
737 ROC roc,
738 integer i,
739 ROI roi,
740 MyRecord r
741}
742
743const MyUnion1 c_myunion1:= { roc:= { "1aa", "2bb", "3cc"}}
744const MyUnion1 c_myunion2:= { i:= 5}
745
746 testcase tc_runtimeDivisionByZero() runs on MTC_CT {
747 var MyUnion1 vl_u:= c_myunion2;
748 if(isbound(vl_u)) {setverdict(pass)} else {setverdict(fail)}
749 if(isbound(vl_u.i)){setverdict(pass)}else {setverdict(fail)}
750 if(isbound(vl_u.i/2)){setverdict(pass)}else {setverdict(fail)}
751 if(isbound(vl_u.i*0)){setverdict(pass)}else {setverdict(fail)}
752 log("Expected DTE comes!!!");
753 if(isbound(vl_u.i/(vl_u.i-5))){setverdict(fail)}else {setverdict(pass)} //DTE - OK
754 }
755
756 control {
757 execute(tc_runtimeDivisionByZero()); //DTE !!!
758 }
759
760}//module
761<END_MODULE>
762
763<RESULT IF_PASS POSITIVE>
764error: Integer division by zero.
765<END_RESULT>
766
767<END_TC>
768:exmp.
769
770.*---------------------------------------------------------------------*
771:h3. Isbound testcases - Compilation error
772.*---------------------------------------------------------------------*
773:xmp tab=0.
774
775<TC - Isbound testcases - Compilation error >
776
777
778<COMPILE>
779<VERDICT_LEAF ERROR>
780
781<MODULE TTCN IsBound_Test IsBound_Test.ttcn>
782
783module IsBound_Test {
784type port MyChrMessage_PT message {
785 inout charstring
786} with { extension "internal"}
787
788type component MTC_CT {
789 port MyChrMessage_PT my_PCO;
790 var integer v_counter1 :=0;
791
792}
793//===== SIMPLE, NOT TOO DEEP =====
794type record of charstring ROC;
795type record of integer ROI;
796type record MyRecord {
797 integer i optional,
798 float x optional,
799 charstring c
800}
801
802type record of ROI ROROI;
803 type union MyUnion1 {
804 ROC roc,
805 integer i,
806 ROI roi,
807 MyRecord r
808}
809
810const MyUnion1 c_myunion1:= { roc:= { "1aa", "2bb", "3cc"}}
811const MyUnion1 c_myunion2:= { i:= 5}
812
813testcase tc_compilationerror2() runs on MTC_CT {
814 var MyUnion1 vl_u:= c_myunion2;
815 if(isbound(vl_u.i/0)){setverdict(fail)}else {setverdict(pass)}
816}
817
818control {
819 execute(tc_compilationerror2()); //DTE !!!
820}
821
822}//module
823<END_MODULE>
824
825<RESULT IF_PASS POSITIVE>
826error: Second operand of operation `/' should not be zero
827<END_RESULT>
828
829<END_TC>
830:exmp.
831
832.*---------------------------------------------------------------------*
833:h2.Testing feature "all from" - Negative tests
834.*---------------------------------------------------------------------*
835
836
837.*---------------------------------------------------------------------*
838:h3. Value list: 'all from' can not refer to permutation or AnyElementsOrNone
839.*---------------------------------------------------------------------*
840:xmp tab=0.
841
842<TC - Value list: 'all from' can not refer to permutation or AnyElementsOrNone >
843
844<COMPILE>
845
846<MODULE TTCN all_from all_from.ttcn >
847
848module all_from {
849type record of integer RoI;
850template RoI t_RoI2 := {1, *, 3};
851template integer t_i10 := ((all from t_RoI2),100);
852template integer t_i11 := (100,all from t_RoI2);
853template integer t_i12 := (100,all from t_RoI2,-1);
854
855}//module
856<END_MODULE>
857
858<RESULT COUNT 3>
859error: 'all from' can not refer to permutation or AnyElementsOrNone
860<END_RESULT>
861
862<END_TC>
863:exmp
864
865*---------------------------------------------------------------------*
866:h3. Value list: (integer) is not compatible with the list template type (RoI)
867.*---------------------------------------------------------------------*
868:xmp tab=0.
869
870<TC - Value list: (integer) is not compatible with the list template type (RoI) >
871
872<COMPILE>
873
874<MODULE TTCN all_from all_from.ttcn >
875module all_from {
876type record of integer RoI;
877template RoI t_RoI1 := {3, 4, 5};
878template RoI t_i1 := (all from t_RoI1);
879
880}//module
881<END_MODULE>
882
883<RESULT COUNT 3>
884error: record of value was expected
885<END_RESULT>
886
887<END_TC>
888:exmp
889
890*---------------------------------------------------------------------*
891:h3. Value list: Matching mechanism can not be used as target of 'all from'
892.*---------------------------------------------------------------------*
893:xmp tab=0.
894
895<TC - Value list: Matching mechanism can not be used as target of 'all from' >
896
897<COMPILE>
898
899<MODULE TTCN all_from all_from.ttcn >
900module all_from {
901type record of integer RoI;
902template RoI t_RoI2 := ?;
903template RoI t_i1 := (all from t_RoI2);
904template integer t_i2 := (all from t_RoI2);
905}//module
906<END_MODULE>
907
908<RESULT COUNT 2>
909error: Matching mechanism can not be used as target of 'all from'
910<END_RESULT>
911
912<END_TC>
913:exmp
914*---------------------------------------------------------------------*
915:h3. Value list: (integer) is not compatible with the list template type (SoI)
916.*---------------------------------------------------------------------*
917:xmp tab=0.
918
919<TC - Value list: (integer) is not compatible with the list template type (SoI) >
920
921<COMPILE>
922
923<MODULE TTCN all_from all_from.ttcn >
924module all_from {
925type record of integer RoI;
926type set of integer SoI;
927template RoI t_RoI1 := {3, 4, 5};
928template SoI t_i := (all from t_RoI1);
929
930}//module
931<END_MODULE>
932
933<RESULT COUNT 3>
934error: set of value was expected
935<END_RESULT>
936
937<END_TC>
938:exmp
939.*---------------------------------------------------------------------*
940:h3. Value list: Length restriction cannot be used in a template of type `integer'
941.*---------------------------------------------------------------------*
942:xmp tab=0.
943
944<TC - Value list: Length restriction cannot be used in a template of type `integer' >
945
946<COMPILE>
947
948<MODULE TTCN all_from all_from.ttcn >
949
950module all_from {
951type record of integer RoI;
952template RoI MyTemplate := { permutation ( 1, 2, 3 ), * length (0..5) };
953
954}//module
955<END_MODULE>
956
957<RESULT COUNT 1>
958error: Length restriction cannot be used in a template of type `integer'
959<END_RESULT>
960
961<END_TC>
962:exmp.
963
964*---------------------------------------------------------------------*
965:h3. Complement: 'all from' can not refer to permutation or AnyElementsOrNone
966.*---------------------------------------------------------------------*
967:xmp tab=0.
968
969<TC - Complement: 'all from' can not refer to permutation or AnyElementsOrNone >
970
971<COMPILE>
972
973<MODULE TTCN all_from all_from.ttcn >
974
975module all_from {
976type record of integer RoI;
977template RoI t_RoI2 := {1, *, 3};
978template integer t_i10 := complement ((all from t_RoI2),100);
979template integer t_i11 := complement (100,all from t_RoI2);
980template integer t_i12 := complement (100,all from t_RoI2,-1);
981
982}//module
983<END_MODULE>
984
985<RESULT COUNT 3>
986error: 'all from' can not refer to permutation or AnyElementsOrNone
987<END_RESULT>
988
989<END_TC>
990:exmp
991
992*---------------------------------------------------------------------*
993:h3. Complement: (integer) is not compatible with the list template type (RoI)
994.*---------------------------------------------------------------------*
995:xmp tab=0.
996
997<TC - Complement: (integer) is not compatible with the list template type (RoI) >
998
999<COMPILE>
1000
1001<MODULE TTCN all_from all_from.ttcn >
1002module all_from {
1003type record of integer RoI;
1004template RoI t_RoI1 := {3, 4, 5};
1005template RoI t_i1 := complement(all from t_RoI1);
1006
1007}//module
1008<END_MODULE>
1009
1010<RESULT COUNT 3>
1011error: record of value was expected
1012<END_RESULT>
1013
1014<END_TC>
1015:exmp
1016
1017*---------------------------------------------------------------------*
1018:h3. Complement: Matching mechanism can not be used as target of 'all from'
1019.*---------------------------------------------------------------------*
1020:xmp tab=0.
1021
1022<TC - Complement: Matching mechanism can not be used as target of 'all from' >
1023
1024<COMPILE>
1025
1026<MODULE TTCN all_from all_from.ttcn >
1027module all_from {
1028type record of integer RoI;
1029template RoI t_RoI2 := ?;
1030template RoI t_i1 := (all from t_RoI2);
1031template integer t_i2 := complement(all from t_RoI2);
1032}//module
1033<END_MODULE>
1034
1035<RESULT COUNT 2>
1036error: Matching mechanism can not be used as target of 'all from'
1037<END_RESULT>
1038
1039<END_TC>
1040:exmp
1041*---------------------------------------------------------------------*
1042:h3. Complement: (integer) is not compatible with the list template type (SoI)
1043.*---------------------------------------------------------------------*
1044:xmp tab=0.
1045
1046<TC - Complement: (integer) is not compatible with the list template type (SoI) >
1047
1048<COMPILE>
1049
1050<MODULE TTCN all_from all_from.ttcn >
1051module all_from {
1052type record of integer RoI;
1053type set of integer SoI;
1054template RoI t_RoI1 := {3, 4, 5};
1055template SoI t_i := complement(all from t_RoI1);
1056
1057}//module
1058<END_MODULE>
1059
1060<RESULT COUNT 3>
1061error: set of value was expected
1062<END_RESULT>
1063
1064<END_TC>
1065:exmp
1066
1067*---------------------------------------------------------------------*
1068:h3. Permutation: Matching mechanism can not be used as target of 'all from'
1069.*---------------------------------------------------------------------*
1070:xmp tab=0.
1071
1072<TC - Permutation: Matching mechanism can not be used as target of 'all from' >
1073
1074<COMPILE>
1075
1076<MODULE TTCN all_from all_from.ttcn >
1077
1078module all_from {
1079type record of integer RoI;
1080template RoI t_RoI2 := *;
1081template RoI t_i10 := { permutation((all from t_RoI2),100),99 }
1082template RoI t_i11 := {permutation(100,all from t_RoI2)};
1083template RoI t_i12 := {permutation(100,all from t_RoI2,-1)};
1084
1085}//module
1086<END_MODULE>
1087
1088<RESULT COUNT 3>
1089error: Matching mechanism can not be used as target of 'all from'
1090<END_RESULT>
1091
1092<END_TC>
1093:exmp
1094*---------------------------------------------------------------------*
1095:h3. Permutation: syntax error, unexpected PermutationKeyword
1096.*---------------------------------------------------------------------*
1097:xmp tab=0.
1098
1099<TC -Permutation: syntax error, unexpected PermutationKeyword >
1100
1101<COMPILE>
1102
1103<MODULE TTCN all_from all_from.ttcn >
1104
1105module all_from {
1106type record of integer RoI;
1107template RoI t_RoI2 := {1, *, 3};
1108template RoI t_i10 := permutation((all from t_RoI2),100);
1109
1110}//module
1111<END_MODULE>
1112
1113<RESULT COUNT 1>
1114error: at or before token `permutation': syntax error, unexpected PermutationKeyword
1115<END_RESULT>
1116
970ed795
EL
1117<END_TC>
1118:exmp
1119
1120.*---------------------------------------------------------------------*
1121:h1.Abbreviations
1122.*---------------------------------------------------------------------*
1123:list.
1124:li D='ASN.1'.Abstract Syntax Notation 1
1125:li D='EDML'.Ericsson Document Markup Language
1126:li D='SA'.Semantic Analyser
1127:li D='TTCN-3'.Test and Test Control Notation version 3
1128:elist.
1129
1130.*---------------------------------------------------------------------*
1131:h1.References
1132.*---------------------------------------------------------------------*
1133:list.
1134:li D='[1]'.3/ETH/RUS-2003:0087 Uen
1135:nl.Requirement Specification for TITAN's TTCN-3 Semantic Analyser
1136:li D='[2]'.1/174 02-FCPCA 101 22 Uen
1137:nl.Statement of Compliance for TITAN project
1138:li D='[3]'.ETSI ES 201 873-1, v3.0.0 Mockup v1 (2004-03):
1139:nl.Testing and Test Control Notation version 3.,
1140:nl.Part 1: TTCN-3 Core Language
1141:elist.
1142
1143.*---------------------------------------------------------------------*
1144:h1.Terminology
1145.*---------------------------------------------------------------------*
1146:list.
1147:li D='TITAN'.Ericsson's TTCN-3 Test Environment
1148:elist.
1149
1150:etext.
This page took 0.0661040000000001 seconds and 5 git commands to generate.