Sync with 5.4.0
[deliverable/titan.core.git] / regression_test / templateRecof / TtemplateRecof.ttcn
CommitLineData
970ed795 1/******************************************************************************
3abe9331 2 * Copyright (c) 2000-2015 Ericsson Telecom AB
970ed795
EL
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 ******************************************************************************/
8module TtemplateRecof {
9type component mycomp {};
10type record of integer templateRecof_myrecof;
11type record templateRecof_rec {
12 templateRecof_myrecof x1,
13 templateRecof_myrecof x2,
14 templateRecof_myrecof x3 optional };
15template templateRecof_rec templateRecof_tSpec :={ //specific values
16 x1:={1,1},
17 x2:={2,1},
18 x3:={3,1} };
19template templateRecof_rec templateRecof_tList :={ //specific value and value list
20 x1:={1,1},
21 x2:=({2,1},{3,1},{6,1}),
22 x3:={3,1} };
23template templateRecof_rec templateRecof_tComp :={ //specific value and compl. list
24 x1:={1,1},
25 x2:=complement ({2,1},{3,1},{6,1}),
26 x3:={3,1} };
27template templateRecof_rec templateRecof_tOmit :={ //omitting values
28 x1:={1,1},
29 x2:={2,1},
30 x3:=omit } ;
31template templateRecof_rec templateRecof_tAny :={ //specific and any value
32 x1:={1,1},
33 x2:={2,1},
34 x3:=? } ;
35template templateRecof_rec templateRecof_tAnyorNone :={ //specific and AnyorNone value
36 x1:={1,1},
37 x2:={2,1},
38 x3:=* };
39template templateRecof_rec templateRecof_tLength1 :={ //specific value and length (fix)
40 x1:={1,1},
41 x2:={2,1},
42 x3:=* length(3) };
43template templateRecof_rec templateRecof_tLength2 :={ //specific value and length (range)
44 x1:={1,1},
45 x2:={2,1},
46 x3:=? length(2..4) };
47template templateRecof_rec templateRecof_tLength3 :={ //specific value and length (range, infinity)
48 x1:={1,1},
49 x2:={2,1},
50 x3:=? length(2..infinity) };
51template templateRecof_rec templateRecof_tIfpresent :={ // specific value and ifpresent
52 x1:={1,1},
53 x2:={2,1},
54 x3:={3,1} ifpresent };
55template templateRecof_rec templateRecof_tLengthIfp :={ //specific value and length (fix), ifpresent
56 x1:={1,1},
57 x2:={2,1},
58 x3:=? length(3) ifpresent};
59template templateRecof_rec templateRecof_tAnyEl :={ //specific value and any element inside value
60 x1:={1,1},
61 x2:={2,1},
62 x3:={3,?,1} } ;
63template templateRecof_rec templateRecof_tAnyorNoneEl :={ //specific value and Any number of elements or none inside value
64 x1:={1,1},
65 x2:={2,1},
66 x3:={3,*,1} };
67
68template templateRecof_rec aliased_template := templateRecof_tAnyorNoneEl;
69
70testcase templateRecofSpec() runs on mycomp {
71var templateRecof_myrecof temp:={3,1};
72var templateRecof_rec x1,x2; //specific value
73x1:={ x1:={1,1}, x2:={2,1}, x3:=temp };
74x2:={ x1:={2,1}, x2:={2,1}, x3:=temp };
75//match
76if (match(x1,templateRecof_tSpec)) {setverdict(pass);}
77 else {setverdict(fail);}
78//no match
79if (not(match(x2,templateRecof_tSpec))) {setverdict(pass);}
80 else {setverdict(fail);}
81}
82
83testcase templateRecofList() runs on mycomp {
84var templateRecof_myrecof temp:={3,1};
85var templateRecof_rec x1,x2,x3; //value list
86x1:={ x1:={1,1}, x2:={6,1}, x3:=temp };
87x2:={ x1:={1,1}, x2:={7,1}, x3:=temp };
88x3:={ x1:={8,1}, x2:={6,1}, x3:=temp };
89//match
90if (match(x1,templateRecof_tList)) {setverdict(pass);}
91 else {setverdict(fail);}
92//no match: out of list
93if (not(match(x2,templateRecof_tList))) {setverdict(pass);}
94 else {setverdict(fail);}
95//no match: other field
96if (not(match(x3,templateRecof_tList))) {setverdict(pass);}
97 else {setverdict(fail);}
98}
99
100testcase templateRecofComp() runs on mycomp {
101var templateRecof_myrecof temp:={3,1};
102var templateRecof_rec x1,x2,x3; //complemented list
103x1:={ x1:={1,1}, x2:={7,1}, x3:=temp };
104x2:={ x1:={1,1}, x2:={6,1}, x3:=temp };
105x3:={ x1:={2,1}, x2:={7,1}, x3:=temp };
106//match
107if (match(x1,templateRecof_tComp)) {setverdict(pass);}
108 else {setverdict(fail);}
109//no match: in the list
110if (not(match(x2,templateRecof_tComp))) {setverdict(pass);}
111 else {setverdict(fail);}
112//no match: other field
113if (not(match(x3,templateRecof_tComp))) {setverdict(pass);}
114 else {setverdict(fail);}
115}
116
117testcase templateRecofOmit() runs on mycomp {
118var templateRecof_myrecof temp:={3,1};
119var templateRecof_rec x1,x2,x3; //omitting value
120x1:={ x1:={1,1}, x2:={2,1}, x3:=omit };
121x2:={ x1:={1,1}, x2:={2,1}, x3:=temp };
122x3:={ x1:={2,1}, x2:={2,1}, x3:=omit };
123//match
124if (match(x1,templateRecof_tOmit)) {setverdict(pass);}
125 else {setverdict(fail);}
126//no match: not omitted
127if (not(match(x2,templateRecof_tOmit))) {setverdict(pass);}
128 else {setverdict(fail);}
129//no match: other field
130if (not(match(x3,templateRecof_tOmit))) {setverdict(pass);}
131 else {setverdict(fail);}
132}
133
134testcase templateRecofAny() runs on mycomp {
135var templateRecof_myrecof temp:={3,1};
136var templateRecof_rec x1,x2,x3; //any value
137x1:={ x1:={1,1}, x2:={2,1}, x3:=temp };
138x2:={ x1:={1,1}, x2:={2,1}, x3:=omit };
139x3:={ x1:={2,1}, x2:={2,1}, x3:=temp };
140//match
141if (match(x1,templateRecof_tAny)) {setverdict(pass);}
142 else {setverdict(fail);}
143//no match: field omitted
144if (not(match(x2,templateRecof_tAny))) {setverdict(pass);}
145 else {setverdict(fail);}
146//no match: other field
147if (not(match(x3,templateRecof_tAny))) {setverdict(pass);}
148 else {setverdict(fail);}
149}
150
151testcase templateRecofAnyorNone() runs on mycomp {
152var templateRecof_myrecof temp:={3,1};
153var templateRecof_rec x1,x2,x3; //AnyorNone value
154x1:={ x1:={1,1}, x2:={2,1}, x3:=omit };
155x2:={ x1:={1,1}, x2:={2,1}, x3:=temp };
156x3:={ x1:={2,1}, x2:={2,1}, x3:=omit };
157//match: omitted
158if (match(x1,templateRecof_tAnyorNone)) {setverdict(pass);}
159 else {setverdict(fail);}
160//match: value
161if (match(x2,templateRecof_tAnyorNone)) {setverdict(pass);}
162 else {setverdict(fail);}
163//no match: other field
164if (not(match(x3,templateRecof_tAnyorNone))) {setverdict(pass);}
165 else {setverdict(fail);}
166}
167
168testcase templateRecofLength1() runs on mycomp {
169var templateRecof_myrecof temp1:={1,2,3}; //length (fix)
170var templateRecof_myrecof temp2:={1,2};
171var templateRecof_rec x1,x2,x3,x4;
172x1:={ x1:={1,1}, x2:={2,1}, x3:=temp1 };
173x2:={ x1:={1,1}, x2:={2,1}, x3:=omit };
174x3:={ x1:={1,1}, x2:={2,1}, x3:=temp2 };
175x4:={ x1:={1,1,1}, x2:={2,1}, x3:=temp1 };
176//match: proper length
177if (match(x1,templateRecof_tLength1)) {setverdict(pass);}
178 else {setverdict(fail);}
179//match: omitted
180if (match(x2,templateRecof_tLength1)) {setverdict(pass);}
181 else {setverdict(fail);}
182// no match: not proper length
183if (not(match(x3,templateRecof_tLength1))) {setverdict(pass);}
184 else {setverdict(fail);}
185//no match: other field
186if (not(match(x4,templateRecof_tLength1))) {setverdict(pass);}
187 else {setverdict(fail);}
188}
189
190testcase templateRecofLength2() runs on mycomp {
191var templateRecof_myrecof temp1:={1,2}; // length (range)
192var templateRecof_myrecof temp2:={1};
193var templateRecof_rec x1,x2,x3;
194x1:={ x1:={1,1}, x2:={2,1}, x3:=temp1 };
195x2:={ x1:={1,1}, x2:={2,1}, x3:=temp2 };
196x3:={ x1:={1}, x2:={2,1}, x3:=temp1 };
197//match
198if (match(x1,templateRecof_tLength2)) {setverdict(pass);}
199 else {setverdict(fail);}
200// no match: not proper length
201if (not(match(x2,templateRecof_tLength2))) {setverdict(pass);}
202 else {setverdict(fail);}
203//no match: other field
204if (not(match(x3,templateRecof_tLength2))) {setverdict(pass);}
205 else {setverdict(fail);}
206}
207
208testcase templateRecofLength3() runs on mycomp {
209var templateRecof_myrecof temp1:={1,2}; // length (range, infinity)
210var templateRecof_myrecof temp2:={1};
211var templateRecof_rec x1,x2,x3;
212x1:={ x1:={1,1}, x2:={2,1}, x3:=temp1 };
213x2:={ x1:={1,1}, x2:={2,1}, x3:=temp2 };
214x3:={ x1:={1}, x2:={2,1}, x3:=temp1 };
215//match
216if (match(x1,templateRecof_tLength3)) {setverdict(pass);}
217 else {setverdict(fail);}
218// no match: not proper length
219if (not(match(x2,templateRecof_tLength3))) {setverdict(pass);}
220 else {setverdict(fail);}
221//no match: other field
222if (not(match(x3,templateRecof_tLength3))) {setverdict(pass);}
223 else {setverdict(fail);}
224}
225
226testcase templateRecofIfpresent() runs on mycomp {
227var templateRecof_myrecof temp1:={3,1}; //ifpresent
228var templateRecof_myrecof temp2:={4,1};
229var templateRecof_rec x1,x2,x3,x4;
230x1:={ x1:={1,1}, x2:={2,1}, x3:=temp1 };
231x2:={ x1:={1,1}, x2:={2,1}, x3:=omit };
232x3:={ x1:={1,1}, x2:={2,1}, x3:=temp2 };
233x4:={ x1:={2,1}, x2:={2,1}, x3:=omit };
234//match: present and match
235if (match(x1,templateRecof_tIfpresent)) {setverdict(pass);}
236 else {setverdict(fail);}
237//match: not present
238if (match(x2,templateRecof_tIfpresent)) {setverdict(pass);}
239 else {setverdict(fail);}
240//no match: present and not match
241if (not(match(x3,templateRecof_tIfpresent))) {setverdict(pass);}
242 else {setverdict(fail);}
243//no match: other field
244if (not(match(x4,templateRecof_tIfpresent))) {setverdict(pass);}
245 else {setverdict(fail);}
246}
247
248testcase templateRecofLengthIfp() runs on mycomp {
249var templateRecof_myrecof temp1:={1,2,3}; //length (fix), ifpresent
250var templateRecof_myrecof temp2:={1,2};
251var templateRecof_rec x1,x2,x3,x4;
252x1:={ x1:={1,1}, x2:={2,1}, x3:=temp1 };
253x2:={ x1:={1,1}, x2:={2,1}, x3:=omit };
254x3:={ x1:={1,1}, x2:={2,1}, x3:=temp2 };
255x4:={ x1:={1,1,1}, x2:={2,1}, x3:=temp1 };
256//match: proper length
257if (match(x1,templateRecof_tLengthIfp)) {setverdict(pass);}
258 else {setverdict(fail);}
259//match: omitted
260if (match(x2,templateRecof_tLengthIfp)) {setverdict(pass);}
261 else {setverdict(fail);}
262//no match: not proper length
263if (not(match(x3,templateRecof_tLengthIfp))) {setverdict(pass);}
264 else {setverdict(fail);}
265//no match: other field
266if (not(match(x4,templateRecof_tLengthIfp))) {setverdict(pass);}
267 else {setverdict(fail);}
268}
269
270testcase templateRecofAnyEl() runs on mycomp {
271var templateRecof_myrecof temp1:={3,15,1}; // any element
272var templateRecof_myrecof temp2:={3,1};
273var templateRecof_myrecof temp3:={3,1,4,1};
274var templateRecof_myrecof temp4:={3,1,2};
275var templateRecof_rec x1,x2,x3,x4,x5;
276x1:={ x1:={1,1}, x2:={2,1}, x3:=temp1 };
277x2:={ x1:={1,1}, x2:={2,1}, x3:=temp2 };
278x3:={ x1:={1,1}, x2:={2,1}, x3:=temp3 };
279x4:={ x1:={1,1}, x2:={2,1}, x3:=temp4 };
280x5:={ x1:={1}, x2:={2,1}, x3:=temp1 };
281//match
282if (match(x1,templateRecof_tAnyEl)) {setverdict(pass);}
283 else {setverdict(fail);}
284//no match: no element
285if (not(match(x2,templateRecof_tAnyEl))) {setverdict(pass);}
286 else {setverdict(fail);}
287//no match: two element
288if (not(match(x3,templateRecof_tAnyEl))) {setverdict(pass);}
289 else {setverdict(fail);}
290//no match: wrong element
291if (not(match(x4,templateRecof_tAnyEl))) {setverdict(pass);}
292 else {setverdict(fail);}
293//no match: other field
294if (not(match(x5,templateRecof_tAnyEl))) {setverdict(pass);}
295 else {setverdict(fail);}
296}
297
298testcase templateRecofAnyorNoneEl() runs on mycomp {
299var templateRecof_myrecof temp1:={3,1}; //Any number of elements or none
300var templateRecof_myrecof temp2:={3,5,1};
301var templateRecof_myrecof temp3:={3,2,5,1};
302var templateRecof_myrecof temp4:={4,2,1};
303var templateRecof_myrecof temp5:={3,5,1,2,1};
304var templateRecof_myrecof temp6:={3,5,1,2};
305var templateRecof_rec x1,x2,x3,x4,x5,x6,x7;
306x1:={ x1:={1,1}, x2:={2,1}, x3:=temp1 };
307x2:={ x1:={1,1}, x2:={2,1}, x3:=temp2 };
308x3:={ x1:={1,1}, x2:={2,1}, x3:=temp3 };
309x4:={ x1:={1,1}, x2:={2,1}, x3:=temp4 };
310x5:={ x1:={1,2}, x2:={2,1}, x3:=temp3 };
311x6:={ x1:={1,1}, x2:={2,1}, x3:=temp5 };
312x7:={ x1:={1,1}, x2:={2,1}, x3:=temp6 };
313//match: no element
314if (match(x1,templateRecof_tAnyorNoneEl)) {setverdict(pass);}
315 else {setverdict(fail);}
316//match: one element
317if (match(x2,templateRecof_tAnyorNoneEl)) {setverdict(pass);}
318 else {setverdict(fail);}
319//match: two element
320if (match(x3,templateRecof_tAnyorNoneEl)) {setverdict(pass);}
321 else {setverdict(fail);}
322//see if the algorithm goes till the end
323if (match(x6,templateRecof_tAnyorNoneEl)) {setverdict(pass);}
324 else {setverdict(fail);}
325 //no match: other element
326if (not(match(x4,templateRecof_tAnyorNoneEl))) {setverdict(pass);}
327 else {setverdict(fail);}
328//no match: other field
329if (not(match(x5,templateRecof_tAnyorNoneEl))) {setverdict(pass);}
330 else {setverdict(fail);}
331//see if the algorithm goes till the end
332if (not(match(x7,templateRecof_tAnyorNoneEl))) {setverdict(pass);}
333 else {setverdict(fail);}
334}
335
336 testcase templateRecofPermutation() runs on mycomp {
337 template templateRecof_rec t1 := {
338 {1,1},
339 {permutation(1,2,3)},
340 {3,1}
341 };
342 template templateRecof_rec t2 := {
343 {1,1},
344 {permutation(1,2,3), 4},
345 {3,1}
346 };
347 template templateRecof_rec t3 := {
348 {1,1},
349 {permutation(1,2,3,*), 4},
350 {3,1}
351 };
352 template templateRecof_rec t4 := {
353 {1,1},
354 {permutation(1,2,?,*), 4},
355 {3,1}
356 };
357 template templateRecof_rec t5 := {
358 {1,1},
359 {permutation(1,2,?), 4},
360 {3,1}
361 };
362 template templateRecof_rec t6 := {
363 {1,1},
364 {permutation(1,2,?,?), 4},
365 {3,1}
366 };
367 template templateRecof_rec t7 := {
368 {1,1},
369 {permutation(?,1,2,?), 4},
370 {3,1}
371 };
372 template templateRecof_rec t8 := {
373 {1,1},
374 {permutation(8,1,2,?), 4},
375 {3,1}
376 };
377 template templateRecof_rec t9 := {
378 {1,1},
379 {permutation(1,*,2,3,*), 4},
380 {3,1}
381 };
382 template templateRecof_rec t10 := {
383 {1,1},
384 {*, permutation(2,3,*), *},
385 {3,1}
386 };
387 template templateRecof_rec t11 := {
388 {1,1},
389 {*, permutation(2,3), *},
390 {3,1}
391 };
392 template templateRecof_rec t12 := {
393 {1,1},
394 {*, permutation(2,3,*), *, 4},
395 {3,1}
396 };
397 template templateRecof_rec t13 := {
398 {1,1},
399 {*, permutation(2,3,*), *, 4, *},
400 {3,1}
401 };
402 template templateRecof_rec t14 := {
403 {1,1},
404 {*, permutation(2,?), *, 4, *},
405 {3,1}
406 };
407 template templateRecof_rec t15 := {
408 {1,1},
409 {*, permutation(2,?), ?, 4, *},
410 {3,1}
411 };
412 template templateRecof_rec t16 := {
413 {1,1},
414 {1, *, permutation(3,?), ?, 4, *},
415 {3,1}
416 };
417 template templateRecof_rec t17 := {
418 {1,1},
419 {1, *, permutation(3,?), ?, *},
420 {3,1}
421 };
422 template templateRecof_rec t18 := {
423 {1,1},
424 {permutation(3,?), permutation(4, *)},
425 {3,1}
426 };
427 template templateRecof_rec t19 := {
428 {1,1},
429 {?, permutation(3,?), permutation(4, *)},
430 {3,1}
431 };
432 template templateRecof_rec t20 := {
433 {1,1},
434 {permutation(2,1), permutation(4,3)},
435 {3,1}
436 };
437 var templateRecof_rec v1 := {x1:={1,1}, x2:={1,2,3}, x3:={3,1}};
438 var templateRecof_rec v2 := {x1:={1,1}, x2:={2,3,1}, x3:={3,1}};
439 var templateRecof_rec v3 := {x1:={1,1}, x2:={1,2,3,4}, x3:={3,1}};
440
441 if(match(v1,t1)) {setverdict(pass);} else {setverdict(fail);}
442 if(match(v2,t1)) {setverdict(pass);} else {setverdict(fail);}
443 if(not match(v3,t1)) {setverdict(pass);} else {setverdict(fail);}
444 if(match(v3,t2)) {setverdict(pass);} else {setverdict(fail);}
445 if(match(v3,t3)) {setverdict(pass);} else {setverdict(fail);}
446 if(match(v3,t4)) {setverdict(pass);} else {setverdict(fail);}
447 if(match(v3,t5)) {setverdict(pass);} else {setverdict(fail);}
448 if(not match(v3,t6)) {setverdict(pass);} else {setverdict(fail);}
449 if(not match(v3,t7)) {setverdict(pass);} else {setverdict(fail);}
450 if(not match(v3,t8)) {setverdict(pass);} else {setverdict(fail);}
451 if(match(v3,t9)) {setverdict(pass);} else {setverdict(fail);}
452 if(match(v3,t10)) {setverdict(pass);} else {setverdict(fail);}
453 if(match(v3,t11)) {setverdict(pass);} else {setverdict(fail);}
454 if(match(v3,t12)) {setverdict(pass);} else {setverdict(fail);}
455 if(match(v3,t13)) {setverdict(pass);} else {setverdict(fail);}
456 if(match(v3,t14)) {setverdict(pass);} else {setverdict(fail);}
457 if(match(v3,t15)) {setverdict(pass);} else {setverdict(fail);}
458 if(not match(v3,t16)) {setverdict(pass);} else {setverdict(fail);}
459 if(match(v3,t17)) {setverdict(pass);} else {setverdict(fail);}
460 if(not match(v3,t18)) {setverdict(pass);} else {setverdict(fail);}
461 if(match(v3,t19)) {setverdict(pass);} else {setverdict(fail);}
462 if(match(v3,t20)) {setverdict(pass);} else {setverdict(fail);}
463 }
464
465 type record r_A { charstring f1 }
466 type record of r_A ro_B
467 testcase HK38721() runs on mycomp {
468 var ro_B v_B := { { "" } }
469 // 3.0.4 was unable to compile the generated code for this.
470 log(match("", v_B[0].f1))
471 setverdict(pass)
472 }
473
474testcase templateRecofIsvalue() runs on mycomp {
475 var template templateRecof_myrecof tpl1;
476 var template templateRecof_myrecof tpl2 := { 0,1,2,3,4,5,6,7,8,9 }
477 template templateRecof_myrecof tpl3 := { *,?,*,?,*,?,*,?,*,? };
478 template templateRecof_myrecof tpl4 := { (0,1,2,3),*,?,*,?,*,?,*,?,42 };
479
480 if ( isvalue(tpl1) ) { setverdict(fail); } else { setverdict(pass); };
481 if ( isvalue(tpl2) ) { setverdict(pass); } else { setverdict(fail); }
482 if ( isvalue(tpl3) ) { setverdict(fail); } else { setverdict(pass); };
483 if ( isvalue(tpl4) ) { setverdict(fail); } else { setverdict(pass); };
484}
485
486type record of charstring ROC;
487type record of integer ROI;
488type record MyRecord1 {
489 integer i optional,
490 float x optional,
491 charstring c
492}
493
494type union MyUnion1 {
495 ROC roc,
496 integer i,
497 ROI roi,
498 MyRecord1 r
499}
500
501type record MyRec2 {
502 ROC roc optional,
503 ROI roi optional,
504 MyUnion1 u optional,
505 MyRecord1 r optional
506}
507
508type record of MyRec2 MyRecOf
509
510template MyRecOf t_recOf1 := (
511 { [0]:= { roc:=omit }, [1]:= {roc:=omit} },
512 { [0]:= { roc:=omit }, [1]:= {roc:={"one", "two"}} },
513 { [0]:= { roc:=omit }, [2]:= {u:={i:=5}} }
514)
515
516testcase tc_recordOf_template1() runs on mycomp {
517 var template MyRecOf vtl_recOf:= t_recOf1;
518 if(isbound( vtl_recOf )) {setverdict(pass)}else {setverdict(fail)};
519 if(isbound( t_recOf1 )) {setverdict(pass)}else {setverdict(fail)};
520}
521
522testcase tc_recordOf_template2() runs on mycomp {
523 var template MyRecOf vtl_recOf:= t_recOf1;
524 if(isbound( vtl_recOf[0] )) {setverdict(fail)}else {setverdict(pass)};
525 if(isbound( vtl_recOf[1] )) {setverdict(fail)}else {setverdict(pass)};
526 if(isbound( vtl_recOf[2] )) {setverdict(fail)}else {setverdict(pass)};
527}
528
529testcase tc_recordOf_template1_ispresent() runs on mycomp {
530 var template MyRecOf vtl_recOf:= t_recOf1;
531 if(ispresent( vtl_recOf )) {setverdict(pass)}else {setverdict(fail)};
532 if(ispresent( t_recOf1 )) {setverdict(pass)}else {setverdict(fail)};
533}
534
535testcase tc_recordOf_template2_ispresent() runs on mycomp {
536 var template MyRecOf vtl_recOf:= t_recOf1;
537 if(ispresent( vtl_recOf[0] )) {setverdict(fail)}else {setverdict(pass)};
538 if(ispresent( vtl_recOf[1] )) {setverdict(fail)}else {setverdict(pass)};
539 if(ispresent( vtl_recOf[2] )) {setverdict(fail)}else {setverdict(pass)};
540}
541
542testcase tc_recordOf_template_unbound_elements_lengthof_sizeof() runs on mycomp {
543 var ROI temp;
544 var template ROI ttemp;
545 temp[99] := 0;
546 ttemp[99] := 0;
547 if ((sizeof(temp)==100) and (sizeof(temp)==sizeof(ttemp))) { setverdict(pass); } else { setverdict(fail); }
548 if ((lengthof(temp)==100) and (lengthof(temp)==lengthof(ttemp))) { setverdict(pass); } else { setverdict(fail); }
549}
550
551type record Block {}
552
553type record of Block Blocks;
554
555type record Request {
556 Blocks blocks optional
557}
558
559testcase HO91743() runs on mycomp {
560 var template Request vt_ReqO := { blocks := omit };
561 var template Request vt_ReqQ := { blocks := ? };
562 var template Request vt_ReqS := { blocks := * };
563 var template Block vt_b := {}
564
565 vt_ReqQ.blocks[3] := vt_b;
566 vt_ReqS.blocks[3] := vt_b;
567 // Indexing a template record-of which was omit used to DTE
568 // (in contrast to any-value and any-or-omit, which would create the record-of).
569 // HO91743 unifies the behaviour (record-of is created when indexing omit).
570 vt_ReqO.blocks[3] := vt_b;
571
572 if (lengthof(vt_ReqO.blocks) == 4) { setverdict(pass); } else { setverdict(fail); }
573 if (sizeof (vt_ReqO.blocks) == 4) { setverdict(pass); } else { setverdict(fail); }
574
575 if (lengthof(vt_ReqQ.blocks) == 4) { setverdict(pass); } else { setverdict(fail); }
576 if (sizeof (vt_ReqQ.blocks) == 4) { setverdict(pass); } else { setverdict(fail); }
577
578 if (lengthof(vt_ReqS.blocks) == 4) { setverdict(pass); } else { setverdict(fail); }
579 if (sizeof (vt_ReqS.blocks) == 4) { setverdict(pass); } else { setverdict(fail); }
580}
581
582//=================================================================
583// isbound tests for ROI
584function f_isbound4ROI_getLen(template ROI pl_roi) return integer {
585 var integer i := 0;
586 while(isbound(pl_roi[i])){
587 i:=i+1;
588 }
589 return i;
590}
591
592template ROI t_il0:={};
593template ROI t_il1:={0};
594template ROI t_il2:={0,*};
595template ROI t_il3:={0,?};
596template ROI t_il4:={0,1,2,3,?};
597
598function f(template ROI roi,integer expected){
599 var integer index:= f_isbound4ROI_getLen(roi);
600 if(index==expected) {
601 setverdict(pass,"Result:", index);
602 }else {
603 setverdict(fail,"Result:",index," expected:", expected);
604 }
605}
606
607testcase tc_isbound4ROI0() runs on mycomp {
608 f(t_il0,0);
609}
610
611testcase tc_isbound4ROI1() runs on mycomp {
612 f(t_il1,1);
613}
614
615testcase tc_isbound4ROI2() runs on mycomp {
616 f(t_il2,2);
617}
618
619testcase tc_isbound4ROI3() runs on mycomp {
620 f(t_il3,2);
621}
622
623testcase tc_isbound4ROI4() runs on mycomp {
624 f(t_il4,5);
625}
626
627
628control {
629 execute(templateRecofSpec());
630 execute(templateRecofList());
631 execute(templateRecofComp());
632 execute(templateRecofOmit());
633 execute(templateRecofAny());
634 execute(templateRecofAnyorNone());
635 execute(templateRecofLength1());
636 execute(templateRecofLength2());
637 execute(templateRecofLength3());
638 execute(templateRecofIfpresent());
639 execute(templateRecofLengthIfp());
640 execute(templateRecofAnyEl());
641 execute(templateRecofAnyorNoneEl());
642 execute(templateRecofPermutation());
643 execute(HK38721());
644 execute(templateRecofIsvalue());
645
646 execute(tc_recordOf_template1());
647 execute(tc_recordOf_template2());
648 execute(tc_recordOf_template1_ispresent());
649 execute(tc_recordOf_template2_ispresent());
650
651 execute(tc_recordOf_template_unbound_elements_lengthof_sizeof());
652 execute(HO91743());
653 execute(tc_isbound4ROI0());
654 execute(tc_isbound4ROI1());
655 execute(tc_isbound4ROI2());
656 execute(tc_isbound4ROI3());
657 execute(tc_isbound4ROI4());
658
659}
660}
This page took 0.048801 seconds and 5 git commands to generate.