Sync with 5.4.0
[deliverable/titan.core.git] / regression_test / templateSetof / TtemplateSetof.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 TtemplateSetof {
9type component templateSetof_mycomp {};
10type set of integer templateSetof_mysetof;
11type record templateSetof_rec {
12 templateSetof_mysetof x1,
13 templateSetof_mysetof x2,
14 templateSetof_mysetof x3 optional };
15template templateSetof_rec templateSetof_tSpec :={ //specific values
16 x1:={1,1},
17 x2:={2,1},
18 x3:={3,1} };
19template templateSetof_rec templateSetof_tList :={ //specific value and value list
20 x1:={1,1},
21 x2:=({2,1},{3,1},{6,1}),
22 x3:={3,1} };
23template templateSetof_rec templateSetof_tComp :={ //specific value and compl. list
24 x1:={1,1},
25 x2:=complement ({2,1},{3,1},{6,1}),
26 x3:={3,1} };
27template templateSetof_rec templateSetof_tOmit :={ //omitting values
28 x1:={1,1},
29 x2:={2,1},
30 x3:=omit } ;
31template templateSetof_rec templateSetof_tAny :={ //specific and any value
32 x1:={1,1},
33 x2:={2,1},
34 x3:=? } ;
35template templateSetof_rec templateSetof_tAnyorNone :={ //specific and AnyorNone value
36 x1:={1,1},
37 x2:={2,1},
38 x3:=* };
39template templateSetof_rec templateSetof_tLength1 :={ //specific value and length (fix)
40 x1:={1,1},
41 x2:={2,1},
42 x3:=* length(3) };
43template templateSetof_rec templateSetof_tLength2 :={ //specific value and length (range)
44 x1:={1,1},
45 x2:={2,1},
46 x3:=? length(2..4) };
47template templateSetof_rec templateSetof_tLength3 :={ //specific value and length (range, infinity)
48 x1:={1,1},
49 x2:={2,1},
50 x3:=? length(2..infinity) };
51//template templateSetof_rec templateSetof_tSuperset :={ //specific value and superset
52// x1:={1,1},
53// x2:={2,1},
54// x3:=? superset (1,4) };
55//template templateSetof_rec templateSetof_tSubset :={ //specific value and subset
56// x1:={1,1},
57// x2:={2,1},
58// x3:=? subset (1,2,3,4) };
59template templateSetof_rec templateSetof_tIfpresent :={ //specific value and ifpresent
60 x1:={1,1},
61 x2:={2,1},
62 x3:={3,1} ifpresent };
63template templateSetof_rec templateSetof_tLengthIfp :={ //specific value and length (fix), ifpresent
64 x1:={1,1},
65 x2:={2,1},
66 x3:=? length(3) ifpresent};
67template templateSetof_rec templateSetof_tAnyEl :={ //specific value and any element inside value
68 x1:={1,1},
69 x2:={2,1},
70 x3:={3,?,1} } ;
71template templateSetof_rec templateSetof_tAnyorNoneEl :={ //specific value and Any number of elements or none inside value
72 x1:={1,1},
73 x2:={2,1},
74 x3:={3,*,1} };
75
76testcase templateSetofSpec() runs on templateSetof_mycomp {
77var templateSetof_mysetof temp:={3,1};
78var templateSetof_rec x1,x2,x3; //specific value
79x1:={ x1:={1,1}, x2:={2,1}, x3:=temp };
80x2:={ x1:={1,1}, x2:={1,2}, x3:=temp }; // other order
81x3:={ x1:={2,1}, x2:={2,1}, x3:=temp };
82//match
83if (match(x1,templateSetof_tSpec)) {setverdict(pass);}
84 else {setverdict(fail);}
85//match: other order
86if (match(x2,templateSetof_tSpec)) {setverdict(pass);}
87 else {setverdict(fail);}
88//no match
89if (not(match(x3,templateSetof_tSpec))) {setverdict(pass);}
90 else {setverdict(fail);}
91}
92
93testcase templateSetofList() runs on templateSetof_mycomp {
94var templateSetof_mysetof temp:={3,1};
95var templateSetof_rec x1,x2,x3; //value list
96x1:={ x1:={1,1}, x2:={6,1}, x3:=temp };
97x2:={ x1:={1,1}, x2:={7,1}, x3:=temp };
98x3:={ x1:={8,1}, x2:={6,1}, x3:=temp };
99//match
100if (match(x1,templateSetof_tList)) {setverdict(pass);}
101 else {setverdict(fail);}
102//no match: out of list
103if (not(match(x2,templateSetof_tList))) {setverdict(pass);}
104 else {setverdict(fail);}
105//no match: other field
106if (not(match(x3,templateSetof_tList))) {setverdict(pass);}
107 else {setverdict(fail);}
108}
109
110testcase templateSetofComp() runs on templateSetof_mycomp {
111var templateSetof_mysetof temp:={3,1};
112var templateSetof_rec x1,x2,x3; //complemented list
113x1:={ x1:={1,1}, x2:={7,1}, x3:=temp };
114x2:={ x1:={1,1}, x2:={6,1}, x3:=temp };
115x3:={ x1:={2,1}, x2:={7,1}, x3:=temp };
116//match
117if (match(x1,templateSetof_tComp)) {setverdict(pass);}
118 else {setverdict(fail);}
119//no match: in the list
120if (not(match(x2,templateSetof_tComp))) {setverdict(pass);}
121 else {setverdict(fail);}
122//no match: other field
123if (not(match(x3,templateSetof_tComp))) {setverdict(pass);}
124 else {setverdict(fail);}
125}
126
127testcase templateSetofOmit() runs on templateSetof_mycomp {
128var templateSetof_mysetof temp:={3,1};
129var templateSetof_rec x1,x2,x3; //omitting value
130x1:={ x1:={1,1}, x2:={2,1}, x3:=omit };
131x2:={ x1:={1,1}, x2:={2,1}, x3:=temp };
132x3:={ x1:={2,1}, x2:={2,1}, x3:=omit };
133//match
134if (match(x1,templateSetof_tOmit)) {setverdict(pass);}
135 else {setverdict(fail);}
136//no match: not omitted
137if (not(match(x2,templateSetof_tOmit))) {setverdict(pass);}
138 else {setverdict(fail);}
139//no match: other field
140if (not(match(x3,templateSetof_tOmit))) {setverdict(pass);}
141 else {setverdict(fail);}
142}
143
144testcase templateSetofAny() runs on templateSetof_mycomp {
145var templateSetof_mysetof temp:={3,1};
146var templateSetof_rec x1,x2,x3; //any value
147x1:={ x1:={1,1}, x2:={2,1}, x3:=temp };
148x2:={ x1:={1,1}, x2:={2,1}, x3:=omit };
149x3:={ x1:={2,1}, x2:={2,1}, x3:=temp };
150//match
151if (match(x1,templateSetof_tAny)) {setverdict(pass);}
152 else {setverdict(fail);}
153//no match: field omitted
154if (not(match(x2,templateSetof_tAny))) {setverdict(pass);}
155 else {setverdict(fail);}
156//no match: other field
157if (not(match(x3,templateSetof_tAny))) {setverdict(pass);}
158 else {setverdict(fail);}
159}
160
161testcase templateSetofAnyorNone() runs on templateSetof_mycomp {
162var templateSetof_mysetof temp:={3,1};
163var templateSetof_rec x1,x2,x3; //AnyorNone value
164x1:={ x1:={1,1}, x2:={2,1}, x3:=omit };
165x2:={ x1:={1,1}, x2:={2,1}, x3:=temp };
166x3:={ x1:={2,1}, x2:={2,1}, x3:=omit };
167//match: omitted
168if (match(x1,templateSetof_tAnyorNone)) {setverdict(pass);}
169 else {setverdict(fail);}
170//match: value
171if (match(x2,templateSetof_tAnyorNone)) {setverdict(pass);}
172 else {setverdict(fail);}
173//no match: other field
174if (not(match(x3,templateSetof_tAnyorNone))) {setverdict(pass);}
175 else {setverdict(fail);}
176}
177
178testcase templateSetofLength1() runs on templateSetof_mycomp {
179var templateSetof_mysetof temp1:={1,2,3}; // length (fix)
180var templateSetof_mysetof temp2:={1,2};
181var templateSetof_rec x1,x2,x3,x4;
182x1:={ x1:={1,1}, x2:={2,1}, x3:=temp1 };
183x2:={ x1:={1,1}, x2:={2,1}, x3:=omit };
184x3:={ x1:={1,1}, x2:={2,1}, x3:=temp2 };
185x4:={ x1:={1,1,1}, x2:={2,1}, x3:=temp1 };
186//match: proper size
187if (match(x1,templateSetof_tLength1)) {setverdict(pass);}
188 else {setverdict(fail);}
189//match: omitted
190if (match(x2,templateSetof_tLength1)) {setverdict(pass);}
191 else {setverdict(fail);}
192// no match: not proper length
193if (not(match(x3,templateSetof_tLength1))) {setverdict(pass);}
194 else {setverdict(fail);}
195//no match: other field
196if (not(match(x4,templateSetof_tLength1))) {setverdict(pass);}
197 else {setverdict(fail);}
198}
199
200testcase templateSetofLength2() runs on templateSetof_mycomp {
201var templateSetof_mysetof temp1:={1,2}; // length (range)
202var templateSetof_mysetof temp2:={1};
203var templateSetof_rec x1,x2,x3;
204x1:={ x1:={1,1}, x2:={2,1}, x3:=temp1 };
205x2:={ x1:={1,1}, x2:={2,1}, x3:=temp2 };
206x3:={ x1:={1}, x2:={2,1}, x3:=temp1 };
207//match
208if (match(x1,templateSetof_tLength2)) {setverdict(pass);}
209 else {setverdict(fail);}
210// no match: not proper length
211if (not(match(x2,templateSetof_tLength2))) {setverdict(pass);}
212 else {setverdict(fail);}
213//no match: other field
214if (not(match(x3,templateSetof_tLength2))) {setverdict(pass);}
215 else {setverdict(fail);}
216}
217
218testcase templateSetofLength3() runs on templateSetof_mycomp {
219var templateSetof_mysetof temp1:={1,2}; // length (range, infinity)
220var templateSetof_mysetof temp2:={1};
221var templateSetof_rec x1,x2,x3;
222x1:={ x1:={1,1}, x2:={2,1}, x3:=temp1 };
223x2:={ x1:={1,1}, x2:={2,1}, x3:=temp2 };
224x3:={ x1:={1}, x2:={2,1}, x3:=temp1 };
225//match
226if (match(x1,templateSetof_tLength3)) {setverdict(pass);}
227 else {setverdict(fail);}
228// no match: not proper length
229if (not(match(x2,templateSetof_tLength3))) {setverdict(pass);}
230 else {setverdict(fail);}
231//no match: other field
232if (not(match(x3,templateSetof_tLength3))) {setverdict(pass);}
233 else {setverdict(fail);}
234}
235
236//testcase templateSetofSuperset() runs on templateSetof_mycomp {
237//var templateSetof_mysetof temp1:={1,4}; // superset
238//var templateSetof_mysetof temp2:={2,1,4};
239//var templateSetof_mysetof temp3:={1};
240//var templateSetof_rec x1,x2,x3,x4;
241//x1:={ x1:={1,1}, x2:={2,1}, x3:=temp1 };
242//x2:={ x1:={1,1}, x2:={2,1}, x3:=temp2 };
243//x3:={ x1:={1,1}, x2:={2,1}, x3:=temp3 };
244//x4:={ x1:={1}, x2:={2,1}, x3:=temp1 };
245//match: equal
246//if (match(x1,templateSetof_tSuperset)) {setverdict(pass);}
247// else {setverdict(fail);}
248//match: real superset
249//if (match(x2,templateSetof_tSuperset)) {setverdict(pass);}
250// else {setverdict(fail);}
251//no match: not superset
252//if (not(match(x3,templateSetof_tSuperset))) {setverdict(pass);}
253// else {setverdict(fail);}
254//no match: other field
255//if (not(match(x4,templateSetof_tSuperset))) {setverdict(pass);}
256// else {setverdict(fail);}
257//}
258
259//testcase templateSetofSubset() runs on templateSetof_mycomp {
260//var templateSetof_mysetof temp1:={1,4,2,3}; // subset
261//var templateSetof_mysetof temp2:={1,4};
262//var templateSetof_mysetof temp3:={2,1,4,7};
263//var templateSetof_rec x1,x2,x3,x4;
264//x1:={ x1:={1,1}, x2:={2,1}, x3:=temp1 };
265//x2:={ x1:={1,1}, x2:={2,1}, x3:=temp2 };
266//x3:={ x1:={1,1}, x2:={2,1}, x3:=temp3 };
267//x4:={ x1:={2,1}, x2:={2,1}, x3:=temp1 };
268//match: equal
269//if (match(x1,templateSetof_tSubset)) {setverdict(pass);}
270// else {setverdict(fail);}
271//match: real subset
272//if (match(x2,templateSetof_tSubset)) {setverdict(pass);}
273// else {setverdict(fail);}
274//no match: not subset
275//if (not(match(x3,templateSetof_tSubset))) {setverdict(pass);}
276// else {setverdict(fail);}
277//no match: other field
278//if (not(match(x4,templateSetof_tSubset))) {setverdict(pass);}
279// else {setverdict(fail);}
280//}
281
282testcase templateSetofIfpresent() runs on templateSetof_mycomp {
283var templateSetof_mysetof temp1:={3,1}; //ifpresent
284var templateSetof_mysetof temp2:={4,1};
285var templateSetof_rec x1,x2,x3,x4;
286x1:={ x1:={1,1}, x2:={2,1}, x3:=temp1 };
287x2:={ x1:={1,1}, x2:={2,1}, x3:=omit };
288x3:={ x1:={1,1}, x2:={2,1}, x3:=temp2 };
289x4:={ x1:={2,1}, x2:={2,1}, x3:=omit };
290// match: present and match
291if (match(x1,templateSetof_tIfpresent)) {setverdict(pass);}
292 else {setverdict(fail);}
293// match: not present
294if (match(x2,templateSetof_tIfpresent)) {setverdict(pass);}
295 else {setverdict(fail);}
296// no match: present and not match
297if (not(match(x3,templateSetof_tIfpresent))) {setverdict(pass);}
298 else {setverdict(fail);}
299// no match: other field
300if (not(match(x4,templateSetof_tIfpresent))) {setverdict(pass);}
301 else {setverdict(fail);}
302}
303
304testcase templateSetofLengthIfp() runs on templateSetof_mycomp {
305var templateSetof_mysetof temp1:={1,2,3}; // length (fix), ifpresent
306var templateSetof_mysetof temp2:={1,2};
307var templateSetof_rec x1,x2,x3,x4;
308x1:={ x1:={1,1}, x2:={2,1}, x3:=temp1 };
309x2:={ x1:={1,1}, x2:={2,1}, x3:=omit };
310x3:={ x1:={1,1}, x2:={2,1}, x3:=temp2 };
311x4:={ x1:={1,1,1}, x2:={2,1}, x3:=temp1 };
312// match: proper size
313if (match(x1,templateSetof_tLengthIfp)) {setverdict(pass);}
314 else {setverdict(fail);}
315// match: omitted
316if (match(x2,templateSetof_tLengthIfp)) {setverdict(pass);}
317 else {setverdict(fail);}
318// no match: not proper length
319if (not(match(x3,templateSetof_tLengthIfp))) {setverdict(pass);}
320 else {setverdict(fail);}
321// no match: other field
322if (not(match(x4,templateSetof_tLengthIfp))) {setverdict(pass);}
323 else {setverdict(fail);}
324}
325
326testcase templateSetofAnyEl() runs on templateSetof_mycomp {
327var templateSetof_mysetof temp1:={3,15,1}; // any element
328var templateSetof_mysetof temp2:={3,1};
329var templateSetof_mysetof temp3:={3,1,4,1};
330var templateSetof_mysetof temp4:={3,1,2};
331var templateSetof_rec x1,x2,x3,x4,x5;
332x1:={ x1:={1,1}, x2:={2,1}, x3:=temp1 };
333x2:={ x1:={1,1}, x2:={2,1}, x3:=temp2 };
334x3:={ x1:={1,1}, x2:={2,1}, x3:=temp3 };
335x4:={ x1:={1,1}, x2:={2,1}, x3:=temp4 };
336x5:={ x1:={1}, x2:={2,1}, x3:=temp1 };
337// match
338if (match(x1,templateSetof_tAnyEl)) {setverdict(pass);}
339 else {setverdict(fail);}
340// no match: no element
341if (not(match(x2,templateSetof_tAnyEl))) {setverdict(pass);}
342 else {setverdict(fail);}
343//no match: two element
344if (not(match(x3,templateSetof_tAnyEl))) {setverdict(pass);}
345 else {setverdict(fail);}
346//no match: wrong element
347if (match(x4,templateSetof_tAnyEl)) {setverdict(pass);}
348 else {setverdict(fail);}
349//no match: other field
350if (not(match(x5,templateSetof_tAnyEl))) {setverdict(pass);}
351 else {setverdict(fail);}
352}
353
354testcase templateSetofAnyorNoneEl() runs on templateSetof_mycomp {
355var templateSetof_mysetof temp1:={3,1}; //Any number of elements or none
356var templateSetof_mysetof temp2:={3,2,1};
357var templateSetof_mysetof temp3:={3,5,2,1};
358var templateSetof_mysetof temp4:={4,2,1};
359var templateSetof_rec x1,x2,x3,x4,x5;
360x1:={ x1:={1,1}, x2:={2,1}, x3:=temp1 };
361x2:={ x1:={1,1}, x2:={2,1}, x3:=temp2 };
362x3:={ x1:={1,1}, x2:={2,1}, x3:=temp3 };
363x4:={ x1:={1,1}, x2:={2,1}, x3:=temp4 };
364x5:={ x1:={1}, x2:={2,1}, x3:=temp3 };
365//match: no element
366if (match(x1,templateSetof_tAnyorNoneEl)) {setverdict(pass);}
367 else {setverdict(fail);}
368//match: one element
369if (match(x2,templateSetof_tAnyorNoneEl)) {setverdict(pass);}
370 else {setverdict(fail);}
371//match: two element
372if (match(x3,templateSetof_tAnyorNoneEl)) {setverdict(pass);}
373 else {setverdict(fail);}
374//no match: other element
375if (not(match(x4,templateSetof_tAnyorNoneEl))) {setverdict(pass);}
376 else {setverdict(fail);}
377//no match: other field
378if (not(match(x5,templateSetof_tAnyorNoneEl))) {setverdict(pass);}
379 else {setverdict(fail);}
380}
381
382type set Block {}
383
384type set of Block Blocks;
385
386type set Request {
387 Blocks blocks optional
388}
389
390testcase HO91743() runs on templateSetof_mycomp {
391 var template Request vt_ReqO := { blocks := omit };
392 var template Request vt_ReqQ := { blocks := ? };
393 var template Request vt_ReqS := { blocks := * };
394 var template Block vt_b := {}
395
396 vt_ReqQ.blocks[3] := vt_b;
397 vt_ReqS.blocks[3] := vt_b;
398 // Indexing a template set-of which was omit used to DTE
399 // (in contrast to any-value and any-or-omit, which would create the set-of).
400 // HO91743 unifies the behaviour (set-of is created when indexing omit).
401 vt_ReqO.blocks[3] := vt_b;
402
403 if (lengthof(vt_ReqO.blocks) == 4) { setverdict(pass); } else { setverdict(fail); }
404 if (sizeof (vt_ReqO.blocks) == 4) { setverdict(pass); } else { setverdict(fail); }
405
406 if (lengthof(vt_ReqQ.blocks) == 4) { setverdict(pass); } else { setverdict(fail); }
407 if (sizeof (vt_ReqQ.blocks) == 4) { setverdict(pass); } else { setverdict(fail); }
408
409 if (lengthof(vt_ReqS.blocks) == 4) { setverdict(pass); } else { setverdict(fail); }
410 if (sizeof (vt_ReqS.blocks) == 4) { setverdict(pass); } else { setverdict(fail); }
411}
412
413control {
414 execute(templateSetofSpec());
415 execute(templateSetofList());
416 execute(templateSetofComp());
417 execute(templateSetofOmit());
418 execute(templateSetofAny());
419 execute(templateSetofAnyorNone());
420 execute(templateSetofLength1());
421 execute(templateSetofLength2());
422 execute(templateSetofLength3());
423// execute(templateSetofSuperset());
424// execute(templateSetofSubset());
425 execute(templateSetofIfpresent());
426 execute(templateSetofLengthIfp());
427 execute(templateSetofAnyEl());
428 execute(templateSetofAnyorNoneEl());
429 execute(HO91743());
430}
431}
This page took 0.041274 seconds and 5 git commands to generate.