Sync with 5.3.0
[deliverable/titan.core.git] / function_test / Semantic_Analyser / TTCN3_SA_4_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.******************************************************************************/
8:text.
9:lang eng.
10
11.* EDML webpage: http://cpi.ericsson.se/dwaxe/
12.* EDML2PDF converter: http://dwaxe.ericsson.se/x2pdf
13.* EDML user guide: http://www.lmc.ericsson.se/~lmcmarg/isit/edml_ug.html
14
15.* Document header information
16:docname.Test Description
17:docno.15/152 91-CRL 113 200/3 Uen
18:rev.A
a38c6d4c 19:date.2015-04-27
970ed795 20
a38c6d4c 21:prep.ETH/XZ Jeno Balasko
970ed795
EL
22:appr.ETH/XZ (Gyula Koos)
23:checked.ETHGRY
24
25:title.Test description of the TTCN-3 Semantic Analyzer: Parameters
26:contents level=2.
27.*---------------------------------------------------------------------*
28:h1.Introduction
29.*---------------------------------------------------------------------*
30.*---------------------------------------------------------------------*
31:h2.Revision history
32.*---------------------------------------------------------------------*
33:xmp tab=2.
34REV DATE PREPARED CHANGE
35________________________________________________________
36PA1 2005-02-19 ETIBHRA New document for TITAN R6
37A 2005-03-18 ETIBHRA Approved after review
38B 2006-07-31 EKRISZA Updates for TITAN R6E
39C 2007-03-06 EJNOSZA Updates for TITAN R7A (expected error messages)
40D 2008-10-01 EFERKOV Large integers
41PE1 2010-03-11 EKRISZA added tests for the fix of TR HL63421
42E 2010-07-02 EKRISZA version correction.
43A 2011-12-12 EKRISZA Updated for release
44A 2012-06-27 EFERKOV Updated for release
45A 2013-01-17 EKRIPND Updated for release
46:exmp.
47.*---------------------------------------------------------------------*
48:h2.Purpose
49.*---------------------------------------------------------------------*
50The purpose of this Test Description is to define and describe the function
51test activity for the Semantic Analyser functionality of the TTCN-3 compiler:
52:nl.SA-1/4: Parameters.
53:p.The specification of the test cases can be found in this document.
54.*---------------------------------------------------------------------*
55:h1.Test environment
56.*---------------------------------------------------------------------*
57.*---------------------------------------------------------------------*
58:h2.Hardware
59.*---------------------------------------------------------------------*
60No specific hardware requirement.
61.*---------------------------------------------------------------------*
62:h2.Software
63.*---------------------------------------------------------------------*
64Tests shall be carried out on the following platforms:
65:list.
66:li D='1.'.Solaris 8 (Sun OS 5.8) (gcc 3.0.4)
67:li D='2.'.SUSE Linux Enterprise server 8 (2.4.19-4GB) (gcc 3.2)
68:li D='3.'.CYGWIN_NT-5.0 (Cygwin DLL: 1.5.12) on Windows 2000 (gcc 3.3.3)
69:elist.
70.*---------------------------------------------------------------------*
71:h2.Configuration
72.*---------------------------------------------------------------------*
73The test environment had been setup in CVS. The tester program is stored in:
74:nl.TTCNv3/function_test/Tools/SAtester.pl
75:nl.Test cases are stored with extension .script in the directory:
76:nl.TTCNv3/function_test/Semantic_Analyser/
77.*---------------------------------------------------------------------*
78:h2.Installation
79.*---------------------------------------------------------------------*
80Install proper TITAN binaries on the used platforms and make sure that
81your environment settings are correct:
82:list.
83:li D='1.'.TTCN3_DIR is set
84:li D='2.'.$TTCN3_DIR/bin is added to the PATH variable
85:li D='3.'.$TTCN3_DIR/lib is added to the LD_LIBRARY_PATH variable
86:li D='4.'.Perl 5.6.0 or higher is available on the platform
87:li D='5.'.Create a symlink to your Perl binary into the directory where the
88test cases are stored:
89:nl.ln -s <your Perl> perl
90:elist.
91.*---------------------------------------------------------------------*
92:h2.Test Tools
93.*---------------------------------------------------------------------*
94A tester program had been written in Perl especially for the Semantic Analyser
95tests. For the list of command line parameters, type 'SAtester.pl -help', for the
96complete documentation, type 'SAtester.pl -doc'.
97:p.Test cases are specified in the Test Description documents in EDML format.
98The tester program parses these files and generates the TTCN-3/ASN.1 modules, then
99calls the compiler to compile them. The result printout is then matched against
100different patterns to be able to set the verdict. Test cases contain not only
101the source modules, but the patterns as well.
102:p.The tester program allows one-by-one execution of test cases and batched
103execution as well.
104:p.NOTE: the tester program requires Perl 5.6.0 or higher.
105
106:np.
107.*---------------------------------------------------------------------*
108:h1.Test cases
109.*---------------------------------------------------------------------*
110.*---------------------------------------------------------------------*
111:h2.Parameterization is not allowed
112.*---------------------------------------------------------------------*
113This test case group covers the requirement SA-4/1.
114:p. Explanation:
115:nl. Parameterization is not allowed for the following specific language
116 elements: const, var, timer, control, group and import.
117
118:p. Test strategy:
119:space 1.
120:xmp tab=0.
121 Hierarchy of scope units
122
123
124 Abbreviations:
125
126 MDP: Module Definitons Part
127 MCP: Module Control Part
128 CT : Component Type
129 FUN: Function without runs on-clause
130 ALT: Altstep without runs on-clause
131 FWR: Function with runs on-clause
132 AWR: Altstep with runs on-clause
133 TC : Testcase with runs on-clause and optional system-clause
134 BS : Block of statements (within a compound statement)
135 EBS: Embedded block of statements (within a compound statement)
136:exmp.
137:space 2.
138:xmp tab=0.
139 _____________________________________________
140 | |
141 0. _____| MDP |_______
142 | |_____________________________________________| |
143 __|__ __|__ __|__ __|__
144 | | | | | | | |
145 1. | MCP | ________| CT |________ | FUN | | ALT |
146 |_____| | |_____| | |_____| |_____|
147 | __|__ __|__ __|__ | |
148 | | | | | | | | |
149 2. | | FWR | | AWR | | TC | | |
150 | |_____| |_____| |_____| | |
151 __|__ __|__ __|__ __|__ __|__ __|__
152 | | | | | | | | | | | |
153 3. | BS | | BS | | BS | | BS | | BS | | BS |
154 |_____| |_____| |_____| |_____| |_____| |_____|
155 __|__ __|__ __|__ __|__ __|__ __|__
156 | | | | | | | | | | | |
157 4. | EBS | | EBS | | EBS | | EBS | | EBS | | EBS |
158 |_____| |_____| |_____| |_____| |_____| |_____|
159 | | | | | |
160 | | | | | |
161:exmp.
162:np.
163:xmp tab=1.
164Test cases are based on TTCN-3 according to the followings:
165- We have to check the "const", "var" and "timer" elements.
166- We checked this elements where we can use firstly in the scope
167 hierarchy and unnecessary to check on the lower levels.
168
169Example:
170 The const is checked only in the MDP because another bubbles are
171 on the lower levels.
172
173:exmp.
174
175.*---------------------------------------------------------------------*
176:h3.TTCN-3::ParameterizationNotAllowed->Definitions part: const
177.*---------------------------------------------------------------------*
178:xmp tab=0.
179<TC - TTCN-3::ParameterizationNotAllowed->Definitions part: const>
180
181<COMPILE>
182<VERDICT_LEAF PASS>
183<MODULE TTCN ModuleA ModuleA.ttcn>
184module ModuleA {
185 const integer C := 1;
186 const integer CC := C(0);
187}
188<END_MODULE>
189<RESULT IF_PASS COUNT 1>
190(?im)\berror\b.+?referenced.+?C.+?cannot.+?have.+?parameters
191<END_RESULT>
192<RESULT IF_PASS COUNT 1>
193(?is)\berror:
194<END_RESULT>
195<RESULT IF_PASS POSITIVE>
196(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
197<END_RESULT>
198
199<END_TC>
200:exmp.
201
202.*---------------------------------------------------------------------*
203:h3.TTCN-3::ParameterizationNotAllowed->Control part: var
204.*---------------------------------------------------------------------*
205:xmp tab=0.
206<TC - TTCN-3::ParameterizationNotAllowed->Control part: var>
207
208<COMPILE>
209<VERDICT_LEAF PASS>
210<MODULE TTCN ModuleA ModuleA.ttcn>
211module ModuleA {
212 control {
213 var integer X := 1;
214 var integer XX := X(0);
215 }
216}
217<END_MODULE>
218<RESULT IF_PASS COUNT 1>
219(?im)\berror\b.+?referenced.+?X.+?cannot.+?have.+?parameters
220<END_RESULT>
221<RESULT IF_PASS COUNT 1>
222(?is)\berror:
223<END_RESULT>
224<RESULT IF_PASS POSITIVE>
225(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
226<END_RESULT>
227
228<END_TC>
229:exmp.
230
231.*---------------------------------------------------------------------*
232:h3.TTCN-3::ParameterizationNotAllowed->Component type: var
233.*---------------------------------------------------------------------*
234:p. NOTE:
235:nl.The implementation does not support the variable initialized with
236 another variable in the component type (but it would be possible
237 according to TTCN-3 specification ).
238
239:xmp tab=0.
240
241<TC - TTCN-3::ParameterizationNotAllowed->Component type: var>
242
243<COMPILE>
244<VERDICT_LEAF PASS>
245<MODULE TTCN ModuleA ModuleA.ttcn>
246module ModuleA {
247 type component MyCT {
248 var integer X := 1;
249 var integer XX := X(0);
250 }
251}
252<END_MODULE>
253<RESULT IF_PASS COUNT 1>
254(?im)\berror\b.+?referenced.+?X.+?cannot.+?have.+?parameters
255<END_RESULT>
256<RESULT IF_PASS COUNT 1>
257(?im)\berror\b.+?Reference.+?static.+?value.+?was.+?expected
258<END_RESULT>
259<RESULT IF_PASS COUNT 2>
260(?is)\berror:
261<END_RESULT>
262<RESULT IF_PASS POSITIVE>
263(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
264<END_RESULT>
265
266<END_TC>
267:exmp.
268
269.*---------------------------------------------------------------------*
270:h3.TTCN-3::ParameterizationNotAllowed->Component type--Function: var
271.*---------------------------------------------------------------------*
272:xmp tab=0.
273<TC - TTCN-3::ParameterizationNotAllowed->Component type--Function: var>
274
275<COMPILE>
276<VERDICT_LEAF PASS>
277<MODULE TTCN ModuleA ModuleA.ttcn>
278module ModuleA {
279 type component MyCT {
280 var integer X := 1;
281 }
282 function MyCompFunc() runs on MyCT {
283 var integer XX := X(0);
284 }
285}
286<END_MODULE>
287<RESULT IF_PASS COUNT 1>
288(?im)\berror\b.+?referenced.+?X.+?cannot.+?have.+?parameters
289<END_RESULT>
290<RESULT IF_PASS COUNT 1>
291(?is)\berror:
292<END_RESULT>
293<RESULT IF_PASS POSITIVE>
294(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
295<END_RESULT>
296
297<END_TC>
298:exmp.
299
300.*---------------------------------------------------------------------*
301:h3.TTCN-3::ParameterizationNotAllowed->Component type--Altstep: var
302.*---------------------------------------------------------------------*
303:xmp tab=0.
304<TC - TTCN-3::ParameterizationNotAllowed->Component type--Altstep: var>
305
306<COMPILE>
307<VERDICT_LEAF PASS>
308<MODULE TTCN ModuleA ModuleA.ttcn>
309module ModuleA {
310 type component MyCT {
311 var integer X := 1;
312 }
313 altstep MyCompALtstep() runs on MyCT {
314 var integer XX := X(0);
315 [else] {}
316 }
317}
318<END_MODULE>
319<RESULT IF_PASS COUNT 1>
320(?im)\berror\b.+?referenced.+?X.+?cannot.+?have.+?parameters
321<END_RESULT>
322<RESULT IF_PASS COUNT 1>
323(?is)\berror:
324<END_RESULT>
325<RESULT IF_PASS POSITIVE>
326(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
327<END_RESULT>
328
329<END_TC>
330:exmp.
331
332.*---------------------------------------------------------------------*
333:h3.TTCN-3::ParameterizationNotAllowed->Component type--Testcase: var
334.*---------------------------------------------------------------------*
335:xmp tab=0.
336<TC - TTCN-3::ParameterizationNotAllowed->Component type--Testcase: var>
337
338<COMPILE>
339<VERDICT_LEAF PASS>
340<MODULE TTCN ModuleA ModuleA.ttcn>
341module ModuleA {
342 type component MyCT {
343 var integer X := 1;
344 }
345 testcase MyTestcase() runs on MyCT {
346 var integer XX := X(0);
347 }
348}
349<END_MODULE>
350<RESULT IF_PASS COUNT 1>
351(?im)\berror\b.+?referenced.+?X.+?cannot.+?have.+?parameters
352<END_RESULT>
353<RESULT IF_PASS COUNT 1>
354(?is)\berror:
355<END_RESULT>
356<RESULT IF_PASS POSITIVE>
357(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
358<END_RESULT>
359
360<END_TC>
361:exmp.
362
363.*---------------------------------------------------------------------*
364:h3.TTCN-3::ParameterizationNotAllowed->Function: var
365.*---------------------------------------------------------------------*
366:xmp tab=0.
367<TC - TTCN-3::ParameterizationNotAllowed->Function: var>
368
369<COMPILE>
370<VERDICT_LEAF PASS>
371<MODULE TTCN ModuleA ModuleA.ttcn>
372module ModuleA {
373 function MyFunc() {
374 var integer X := 1;
375 var integer XX := X(0);
376 }
377}
378<END_MODULE>
379<RESULT IF_PASS COUNT 1>
380(?im)\berror\b.+?referenced.+?X.+?cannot.+?have.+?parameters
381<END_RESULT>
382<RESULT IF_PASS COUNT 1>
383(?is)\berror:
384<END_RESULT>
385<RESULT IF_PASS POSITIVE>
386(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
387<END_RESULT>
388
389<END_TC>
390:exmp.
391
392.*---------------------------------------------------------------------*
393:h3.TTCN-3::ParameterizationNotAllowed->Altstep: var
394.*---------------------------------------------------------------------*
395:xmp tab=0.
396<TC - TTCN-3::ParameterizationNotAllowed->Altstep: var>
397
398<COMPILE>
399<VERDICT_LEAF PASS>
400<MODULE TTCN ModuleA ModuleA.ttcn>
401module ModuleA {
402 altstep MyAltstep(timer T) {
403 var integer X := 1;
404 [X(0)>2] T.timeout {};
405 [else] {};
406 }
407}
408<END_MODULE>
409<RESULT IF_PASS COUNT 1>
410(?im)\berror\b.+?referenced.+?X.+?cannot.+?have.+?parameters
411<END_RESULT>
412<RESULT IF_PASS COUNT 1>
413(?is)\berror:
414<END_RESULT>
415<RESULT IF_PASS POSITIVE>
416(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
417<END_RESULT>
418
419<END_TC>
420:exmp.
421
422.*---------------------------------------------------------------------*
423:h3.TTCN-3::ParameterizationNotAllowed->Control part: timer
424.*---------------------------------------------------------------------*
425:xmp tab=0.
426<TC - TTCN-3::ParameterizationNotAllowed->Control part: timer>
427
428<COMPILE>
429<VERDICT_LEAF PASS>
430<MODULE TTCN ModuleA ModuleA.ttcn>
431module ModuleA {
432 function MyFunc( timer t ) {}
433 control {
434 timer T := 1.2;
435 MyFunc(T(0));
436 }
437}
438<END_MODULE>
439<RESULT IF_PASS COUNT 1>
440(?im)\berror\b.+?referenced.+?T.+?cannot.+?have.+?parameters
441<END_RESULT>
442<RESULT IF_PASS COUNT 1>
443(?is)\berror:
444<END_RESULT>
445<RESULT IF_PASS POSITIVE>
446(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
447<END_RESULT>
448
449<END_TC>
450:exmp.
451
452.*---------------------------------------------------------------------*
453:h3.TTCN-3::ParameterizationNotAllowed->Component type--Function: timer
454.*---------------------------------------------------------------------*
455:xmp tab=0.
456<TC - TTCN-3::ParameterizationNotAllowed->Component type--Function: timer>
457
458<COMPILE>
459<VERDICT_LEAF PASS>
460<MODULE TTCN ModuleA ModuleA.ttcn>
461module ModuleA {
462 function MyFunc( timer t ) {}
463 type component MyCT {
464 timer T := 1.2;
465 }
466 function MyCompFunc() runs on MyCT {
467 MyFunc(T(0));
468 }
469}
470<END_MODULE>
471<RESULT IF_PASS COUNT 1>
472(?im)\berror\b.+?referenced.+?T.+?cannot.+?have.+?parameters
473<END_RESULT>
474<RESULT IF_PASS COUNT 1>
475(?is)\berror:
476<END_RESULT>
477<RESULT IF_PASS POSITIVE>
478(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
479<END_RESULT>
480
481<END_TC>
482:exmp.
483
484.*---------------------------------------------------------------------*
485:h3.TTCN-3::ParameterizationNotAllowed->Component type--Altstep: timer
486.*---------------------------------------------------------------------*
487:xmp tab=0.
488<TC - TTCN-3::ParameterizationNotAllowed->Component type--Altstep: timer>
489
490<COMPILE>
491<VERDICT_LEAF PASS>
492<MODULE TTCN ModuleA ModuleA.ttcn>
493module ModuleA {
494 function MyFunc( timer t ) {}
495 type component MyCT {
496 timer T := 1.2;
497 }
498 altstep MyCompAltstep() runs on MyCT {
499 [else] { MyFunc(T(0)); };
500 }
501}
502<END_MODULE>
503<RESULT IF_PASS COUNT 1>
504(?im)\berror\b.+?referenced.+?T.+?cannot.+?have.+?parameters
505<END_RESULT>
506<RESULT IF_PASS COUNT 1>
507(?is)\berror:
508<END_RESULT>
509<RESULT IF_PASS POSITIVE>
510(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
511<END_RESULT>
512
513<END_TC>
514:exmp.
515
516.*---------------------------------------------------------------------*
517:h3.TTCN-3::ParameterizationNotAllowed->Component type--Testcase: timer
518.*---------------------------------------------------------------------*
519:xmp tab=0.
520<TC - TTCN-3::ParameterizationNotAllowed->Component type--Testcase: timer>
521
522<COMPILE>
523<VERDICT_LEAF PASS>
524<MODULE TTCN ModuleA ModuleA.ttcn>
525module ModuleA {
526 function MyFunc( timer t ) {}
527 type component MyCT {
528 timer T := 1.2;
529 }
530 testcase MyTestcase() runs on MyCT {
531 MyFunc(T(0));
532 }
533}
534<END_MODULE>
535<RESULT IF_PASS COUNT 1>
536(?im)\berror\b.+?referenced.+?T.+?cannot.+?have.+?parameters
537<END_RESULT>
538<RESULT IF_PASS COUNT 1>
539(?is)\berror:
540<END_RESULT>
541<RESULT IF_PASS POSITIVE>
542(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
543<END_RESULT>
544
545<END_TC>
546:exmp.
547
548.*---------------------------------------------------------------------*
549:h3.TTCN-3::ParameterizationNotAllowed->Function: timer
550.*---------------------------------------------------------------------*
551:xmp tab=0.
552<TC - TTCN-3::ParameterizationNotAllowed->Function: timer>
553
554<COMPILE>
555<VERDICT_LEAF PASS>
556<MODULE TTCN ModuleA ModuleA.ttcn>
557module ModuleA {
558 function MyFunc_1( timer t ) {}
559 function MyFunc_2() {
560 timer T := 1.3;
561 MyFunc_1(T(0));
562 }
563}
564<END_MODULE>
565<RESULT IF_PASS COUNT 1>
566(?im)\berror\b.+?referenced.+?T.+?cannot.+?have.+?parameters
567<END_RESULT>
568<RESULT IF_PASS COUNT 1>
569(?is)\berror:
570<END_RESULT>
571<RESULT IF_PASS POSITIVE>
572(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
573<END_RESULT>
574
575<END_TC>
576:exmp.
577
578.*---------------------------------------------------------------------*
579:h3.TTCN-3::ParameterizationNotAllowed->Altstep: timer
580.*---------------------------------------------------------------------*
581:xmp tab=0.
582<TC - TTCN-3::ParameterizationNotAllowed->Altstep: timer>
583
584<COMPILE>
585<VERDICT_LEAF PASS>
586<MODULE TTCN ModuleA ModuleA.ttcn>
587module ModuleA {
588 function MyFunc( timer t ) {}
589 altstep MyAltstep(timer T) {
590 [else] { MyFunc(T(0)); };
591 }
592}
593<END_MODULE>
594<RESULT IF_PASS COUNT 1>
595(?im)\berror\b.+?referenced.+?T.+?cannot.+?have.+?parameters
596<END_RESULT>
597<RESULT IF_PASS COUNT 1>
598(?is)\berror:
599<END_RESULT>
600<RESULT IF_PASS POSITIVE>
601(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
602<END_RESULT>
603
604<END_TC>
605:exmp.
606
607:np.
608.*---------------------------------------------------------------------*
609:h2.Not allowed type in a formal/actual parameter list
610.*---------------------------------------------------------------------*
611This test case group covers the requirement SA-4/2.
612:p. Explanation:
613:nl. Some specific types are not allowed to be used in the parameter list
614 of a language element.
615:list.
616:li d='modulepar:' template, component type, port type, default and timer
617 are not allowed according to the TTCN-3 specification
618:nl. ( NotAllowedTypeInParameterList->Modulepar )
619:nl. NOTE: the component type and default are supported in the
620 implementation and not allowed the empty parameter list;
621:li d='type:' any type is not currently supported in the implementation
622:nl. ( NotAllowedTypeInParameterList->Type )
623:nl. NOTE: all basic types, all user-defined types and address
624 type are allowed according to the TTCN-3 specification;
625:li d='template:' component type, port type, default and timer are not allowed
626:nl. ( NotAllowedTypeInParameterList->Template )
627:nl. NOTE: the component type and default are supported in the
628 implementation;
629:li d='testcase:' component type, port type, default and timer are not allowed
630:nl. ( NotAllowedTypeInParameterList->Testcase )
631:nl. NOTE: the component type and default are supported in the
632 implementation;
633:li d='signature:' template, port type, default and timer are not allowed
634:nl. ( NotAllowedTypeInParameterList->Signature );
635:elist
636:p. Test strategy:
637:nl. We made a test for each type of values that is allowed to appear in the
638 formal/actual parameter lists of all language elements.
639
640.*---------------------------------------------------------------------*
641:h3.TTCN-3::NotAllowedTypeInParameterList->Modulepar: allowed types
642.*---------------------------------------------------------------------*
643:xmp tab=0.
644<TC - TTCN-3::NotAllowedTypeInParameterList->Modulepar: allowed types>
645
646<COMPILEGCC>
647<VERDICT_LEAF PASS>
648<MODULE TTCN ModuleA ModuleA.ttcn>
649module ModuleA {
650 type record MyRec { charstring field }
651 type record address { integer filed }
652 //modulepar not allowed types are tested : in TTCN3_SA_ttcn3adhoc.script (modulepar invalid simple type,
653 // modulepar invalid compound type, modulepar invalid list, modulepar invalid type: circular type definition)
654 modulepar {
655 boolean MyBool := false;
656 integer MyInt1, MyInt2;
657 MyRec myrec;
658 address MyPC := { 23475 };
659 template integer MyTemp := 1;
660 }
661}
662<END_MODULE>
663<RESULT IF_PASS POSITIVE>
664(?im)\bnotify\b.+?Generating.+?code
665<END_RESULT>
666
667<END_TC>
668:exmp.
669
670.*---------------------------------------------------------------------*
671:h3.TTCN-3::NotAllowedTypeInParameterList->Modulepar: empty
672.*---------------------------------------------------------------------*
673:xmp tab=0.
674<TC - TTCN-3::NotAllowedTypeInParameterList->Modulepar: empty>
675
676<COMPILE>
677<VERDICT_LEAF PASS>
678<MODULE TTCN ModuleA ModuleA.ttcn>
679module ModuleA {
680 modulepar {}
681}
682<END_MODULE>
683<RESULT IF_PASS COUNT 1>
684(?im)\berror\b.+?syntax.+?error
685<END_RESULT>
686<RESULT IF_PASS COUNT 1>
687(?is)\berror:
688<END_RESULT>
689
690<END_TC>
691:exmp.
692
693.*---------------------------------------------------------------------*
694:h3.TTCN-3::NotAllowedTypeInParameterList->Modulepar: port type
695.*---------------------------------------------------------------------*
696:xmp tab=0.
697<TC - TTCN-3::NotAllowedTypeInParameterList->Modulepar: port type>
698
699<COMPILE>
700<VERDICT_LEAF PASS>
701<MODULE TTCN ModuleA ModuleA.ttcn>
702module ModuleA {
703 type port MyPort message { inout charstring; }
704 modulepar {
705 MyPort port_1
706 }
707}
708<END_MODULE>
709<RESULT IF_PASS COUNT 1>
710(?im)\berror\b.+?module.+?parameter.+?cannot.+?port
711<END_RESULT>
712<RESULT IF_PASS COUNT 1>
713(?is)\berror:
714<END_RESULT>
715<RESULT IF_PASS POSITIVE>
716(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
717<END_RESULT>
718
719<END_TC>
720:exmp.
721
722.*---------------------------------------------------------------------*
723:h3.TTCN-3::NotAllowedTypeInParameterList->Modulepar: timer
724.*---------------------------------------------------------------------*
725:xmp tab=0.
726<TC - TTCN-3::NotAllowedTypeInParameterList->Modulepar: timer>
727
728<COMPILE>
729<VERDICT_LEAF PASS>
730<MODULE TTCN ModuleA ModuleA.ttcn>
731module ModuleA {
732 modulepar {
733 timer T := 1.2
734 }
735}
736<END_MODULE>
737<RESULT IF_PASS COUNT 1>
738(?im)\berror\b.+?syntax.+?error
739<END_RESULT>
740<RESULT IF_PASS COUNT 1>
741(?is)\berror:
742<END_RESULT>
743
744<END_TC>
745:exmp.
746
747.*---------------------------------------------------------------------*
748:h3.TTCN-3::NotAllowedTypeInParameterList->Types
749.*---------------------------------------------------------------------*
750:xmp tab=0.
751<TC - TTCN-3::NotAllowedTypeInParameterList->Types>
752
753<COMPILE>
754<VERDICT_LEAF FAIL>
755<MODULE TTCN ModuleA ModuleA.ttcn>
756module ModuleA {
757 type record rtype (integer p) {integer i (p .. p+10)}
758
759 const rtype(0.0) r1 := {i :=1}
760 const rtype('0'B) r2 := {i :=1}
761 const rtype('0'H) r3 := {i :=1}
762 const rtype('00'O) r4 := {i :=1}
763 const rtype("0") r5 := {i :=1}
764
765 type set stype (integer p) {integer i (p .. p+10)}
766
767 const stype(0.0) s1 := {i :=1}
768 const stype('0'B) s2 := {i :=1}
769 const stype('0'H) s3 := {i :=1}
770 const stype('00'O) s4 := {i :=1}
771 const stype("0") s5 := {i :=1}
772}
773<END_MODULE>
774<RESULT IF_FAIL COUNT POSITIVE>
775(?im)\berror\b.+?not.+?supported
776<END_RESULT>
777<END_TC>
778:exmp.
779
780.*---------------------------------------------------------------------*
781:h3.TTCN-3::NotAllowedTypeInParameterList->Template: allowed types
782.*---------------------------------------------------------------------*
783:xmp tab=0.
784<TC - TTCN-3::NotAllowedTypeInParameterList->Template: allowed types>
785
786<COMPILEGCC>
787<VERDICT_LEAF PASS>
788<MODULE TTCN ModuleA ModuleA.ttcn>
789module ModuleA {
790 type component MyCT {}
791 type set MySet {
792 integer field1,
793 boolean field2 optional
794 }
795 type record address { integer filed }
796 type record MyRec {
797 float field1 optional,
798 charstring field2,
799 MySet field3,
800 address field4,
801 MyCT field5,
802 default field6
803 }
804 template MyRec MyTempE := {?,?,?,?,?,?} // empty parameter list
805 template MyRec MyTemp (
806 charstring par_1,
807 address par_2,
808 MyCT par_3,
809 default par_4,
810 MySet par_5,
811 template float par_6 ) := {
812 field1 := par_6,
813 field2 := par_1,
814 field3 := par_5,
815 field4 := par_2,
816 field5 := par_3,
817 field6 := par_4
818 }
819}
820<END_MODULE>
821<RESULT IF_PASS POSITIVE>
822(?im)\bnotify\b.+?Generating.+?code
823<END_RESULT>
824
825<END_TC>
826:exmp.
827
828.*---------------------------------------------------------------------*
829:h3.TTCN-3::NotAllowedTypeInParameterList->Template: port type
830.*---------------------------------------------------------------------*
831:xmp tab=0.
832<TC - TTCN-3::NotAllowedTypeInParameterList->Template: port type>
833
834<COMPILE>
835<VERDICT_LEAF PASS>
836<MODULE TTCN ModuleA ModuleA.ttcn>
837module ModuleA {
838 type port MyPort message { inout charstring; }
839 type set MySet {
840 integer field1,
841 boolean field2 optional
842 }
843 template MySet MyTemp ( MyPort par_1 ) := {
844 field1 := ?,
845 field2 := ?
846 }
847}
848<END_MODULE>
849<RESULT IF_PASS COUNT 1>
850(?im)\berror\b.+?template.+?cannot.+?have.+?port
851<END_RESULT>
852<RESULT IF_PASS COUNT 1>
853(?is)\berror:
854<END_RESULT>
855<RESULT IF_PASS POSITIVE>
856(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
857<END_RESULT>
858
859<END_TC>
860:exmp.
861
862.*---------------------------------------------------------------------*
863:h3.TTCN-3::NotAllowedTypeInParameterList->Template: timer
864.*---------------------------------------------------------------------*
865:xmp tab=0.
866<TC - TTCN-3::NotAllowedTypeInParameterList->Template: timer>
867
868<COMPILE>
869<VERDICT_LEAF PASS>
870<MODULE TTCN ModuleA ModuleA.ttcn>
871module ModuleA {
872 type set MySet {
873 integer field1,
874 boolean field2 optional
875 }
876 template MySet MyTemp ( timer par_1 ) := {
877 field1 := ?,
878 field2 := ?
879 }
880}
881<END_MODULE>
882<RESULT IF_PASS COUNT 1>
883(?im)\berror\b.+?syntax.+?error
884<END_RESULT>
885<RESULT IF_PASS COUNT 1>
886(?is)\berror:
887<END_RESULT>
888
889<END_TC>
890:exmp.
891
892.*---------------------------------------------------------------------*
893:h3.TTCN-3::NotAllowedTypeInParameterList->Function: allowed types
894.*---------------------------------------------------------------------*
895:xmp tab=0.
896<TC - TTCN-3::NotAllowedTypeInParameterList->Function: allowed types>
897
898<COMPILE>
899<VERDICT_LEAF PASS>
900<MODULE TTCN ModuleA ModuleA.ttcn>
901module ModuleA {
902 type port MyPort message { inout charstring; }
903 type component MyCT {}
904 type set MySet {
905 float field1,
906 boolean field2 optional
907 }
908 type record address { integer filed }
909 function MyFuncE() {} // empty parameter list
910 function MyFunc (
911 integer par_1,
912 MySet par_2,
913 address par_3,
914 template MySet par_4,
915 MyCT par_5,
916 MyPort par_6,
917 default par_7,
918 timer par_8 ) {}
919 function MyCompFuncE() {} // empty parameter list
920 function MyCompFunc (
921 integer par_1,
922 MySet par_2,
923 address par_3,
924 template MySet par_4,
925 MyCT par_5,
926 MyPort par_6,
927 default par_7,
928 timer par_8 ) runs on MyCT {}
929 external function MyExtFuncE(); // empty parameter list
930 external function MyExtFunc (
931 integer par_1,
932 MySet par_2,
933 address par_3,
934 template MySet par_4,
935 MyCT par_5,
936 MyPort par_6,
937 default par_7,
938 timer par_8 );
939}
940<END_MODULE>
941<RESULT IF_PASS POSITIVE>
942(?im)\bnotify\b.+?Generating.+?code
943<END_RESULT>
944
945<END_TC>
946:exmp.
947
948.*---------------------------------------------------------------------*
949:h3.TTCN-3::NotAllowedTypeInParameterList->Altstep: allowed types
950.*---------------------------------------------------------------------*
951:xmp tab=0.
952<TC - TTCN-3::NotAllowedTypeInParameterList->Altstep: allowed types>
953
954<COMPILE>
955<VERDICT_LEAF PASS>
956<MODULE TTCN ModuleA ModuleA.ttcn>
957module ModuleA {
958 type port MyPort message { inout charstring; }
959 type component MyCT {}
960 type set MySet {
961 float field1,
962 boolean field2 optional
963 }
964 type record address { integer filed }
965 altstep MyAltstepE() { [else]{} } // empty parameter list
966 altstep MyAltstep (
967 integer par_1,
968 MySet par_2,
969 address par_3,
970 template MySet par_4,
971 MyCT par_5,
972 MyPort par_6,
973 default par_7,
974 timer par_8 ) {
975 [else] {}
976 }
977 altstep MyCompAltstepE() { [else]{} } // empty parameter list
978 altstep MyCompAltstep (
979 integer par_1,
980 MySet par_2,
981 address par_3,
982 template MySet par_4,
983 MyCT par_5,
984 MyPort par_6,
985 default par_7,
986 timer par_8 ) runs on MyCT {
987 [else] {}
988 }
989}
990<END_MODULE>
991<RESULT IF_PASS POSITIVE>
992(?im)\bnotify\b.+?Generating.+?code
993<END_RESULT>
994
995<END_TC>
996:exmp.
997
998.*---------------------------------------------------------------------*
999:h3.TTCN-3::NotAllowedTypeInParameterList->Testcase: allowed types
1000.*---------------------------------------------------------------------*
1001:xmp tab=0.
1002<TC - TTCN-3::NotAllowedTypeInParameterList->Testcase: allowed types>
1003
1004<COMPILEGCC>
1005<VERDICT_LEAF PASS>
1006<MODULE TTCN ModuleA ModuleA.ttcn>
1007module ModuleA {
1008 type component MyCT {}
1009 type set MySet {
1010 float field1,
1011 boolean field2 optional
1012 }
1013 type record address { integer filed }
1014 testcase MyTestcaseE() runs on MyCT {} // empty parameter list
1015 testcase MyTestcase (
1016 integer par_1,
1017 MySet par_2,
1018 address par_3,
1019 template MySet par_4,
1020 MyCT par_5,
1021 default par_6 ) runs on MyCT {}
1022}
1023<END_MODULE>
1024<RESULT IF_PASS POSITIVE>
1025(?im)\bnotify\b.+?Generating.+?code
1026<END_RESULT>
1027
1028<END_TC>
1029:exmp.
1030
1031.*---------------------------------------------------------------------*
1032:h3.TTCN-3::NotAllowedTypeInParameterList->Testcase: port type
1033.*---------------------------------------------------------------------*
1034:xmp tab=0.
1035<TC - TTCN-3::NotAllowedTypeInParameterList->Testcase: port type>
1036
1037<COMPILE>
1038<VERDICT_LEAF PASS>
1039<MODULE TTCN ModuleA ModuleA.ttcn>
1040module ModuleA {
1041 type port MyPort message { inout charstring; }
1042 type component MyCT {}
1043 testcase MyTestcase( MyPort par_1 ) runs on MyCT {}
1044}
1045<END_MODULE>
1046<RESULT IF_PASS COUNT 1>
1047(?im)\berror\b.+?testcase.+?cannot.+?have.+?port
1048<END_RESULT>
1049<RESULT IF_PASS COUNT 1>
1050(?is)\berror:
1051<END_RESULT>
1052<RESULT IF_PASS POSITIVE>
1053(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
1054<END_RESULT>
1055
1056<END_TC>
1057:exmp.
1058
1059.*---------------------------------------------------------------------*
1060:h3.TTCN-3::NotAllowedTypeInParameterList->Testcase: timer
1061.*---------------------------------------------------------------------*
1062:xmp tab=0.
1063<TC - TTCN-3::NotAllowedTypeInParameterList->Testcase: timer>
1064
1065<COMPILE>
1066<VERDICT_LEAF PASS>
1067<MODULE TTCN ModuleA ModuleA.ttcn>
1068module ModuleA {
1069 type component MyCT {}
1070 testcase MyTestcase( timer par_1 ) runs on MyCT {}
1071}
1072<END_MODULE>
1073<RESULT IF_PASS COUNT 1>
1074(?im)\berror\b.+?syntax.+?error
1075<END_RESULT>
1076<RESULT IF_PASS COUNT 1>
1077(?is)\berror:
1078<END_RESULT>
1079
1080<END_TC>
1081:exmp.
1082
1083.*---------------------------------------------------------------------*
1084:h3.TTCN-3::NotAllowedTypeInParameterList->Signature: allowed types
1085.*---------------------------------------------------------------------*
1086:xmp tab=0.
1087<TC - TTCN-3::NotAllowedTypeInParameterList->Signature: allowed types>
1088
1089<COMPILEGCC>
1090<VERDICT_LEAF PASS>
1091<MODULE TTCN ModuleA ModuleA.ttcn>
1092module ModuleA {
1093 type component MyCT {}
1094 type set MySet {
1095 float field1,
1096 boolean field2 optional
1097 }
1098 type record address { integer filed }
1099 signature MySigE(); // empty parameter list
1100 signature MySig (
1101 integer par_1,
1102 MySet par_2,
1103 address par_3,
1104 MyCT par_5
1105 );
1106}
1107<END_MODULE>
1108<RESULT IF_PASS POSITIVE>
1109(?im)\bnotify\b.+?Generating.+?code
1110<END_RESULT>
1111
1112<END_TC>
1113:exmp.
1114
1115.*---------------------------------------------------------------------*
1116:h3.TTCN-3::NotAllowedTypeInParameterList->Signature: template
1117.*---------------------------------------------------------------------*
1118:xmp tab=0.
1119<TC - TTCN-3::NotAllowedTypeInParameterList->Signature: template>
1120
1121<COMPILE>
1122<VERDICT_LEAF PASS>
1123<MODULE TTCN ModuleA ModuleA.ttcn>
1124module ModuleA {
1125 signature MySig( template integer par_1 );
1126}
1127<END_MODULE>
1128<RESULT IF_PASS COUNT 1>
1129(?im)\berror\b.+?syntax.+?error
1130<END_RESULT>
1131<RESULT IF_PASS COUNT 1>
1132(?is)\berror:
1133<END_RESULT>
1134
1135<END_TC>
1136:exmp.
1137
1138.*---------------------------------------------------------------------*
1139:h3.TTCN-3::NotAllowedTypeInParameterList->Signature: port type
1140.*---------------------------------------------------------------------*
1141:xmp tab=0.
1142<TC - TTCN-3::NotAllowedTypeInParameterList->Signature: port type>
1143
1144<COMPILE>
1145<VERDICT_LEAF PASS>
1146<MODULE TTCN ModuleA ModuleA.ttcn>
1147module ModuleA {
1148 type port MyPort message { inout charstring; }
1149 signature MySig( MyPort par_1 );
1150}
1151<END_MODULE>
1152<RESULT IF_PASS COUNT 1>
1153(?im)\berror\b.+?Port.+?cannot.+?be.+?signature
1154<END_RESULT>
1155<RESULT IF_PASS COUNT 1>
1156(?is)\berror:
1157<END_RESULT>
1158<RESULT IF_PASS POSITIVE>
1159(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
1160<END_RESULT>
1161
1162<END_TC>
1163:exmp.
1164
1165.*---------------------------------------------------------------------*
1166:h3.TTCN-3::NotAllowedTypeInParameterList->Signature: default
1167.*---------------------------------------------------------------------*
1168:xmp tab=0.
1169<TC - TTCN-3::NotAllowedTypeInParameterList->Signature: default>
1170
1171<COMPILE>
1172<VERDICT_LEAF PASS>
1173<MODULE TTCN ModuleA ModuleA.ttcn>
1174module ModuleA {
1175 signature MySig( default par_1 );
1176}
1177<END_MODULE>
1178<RESULT IF_PASS COUNT 1>
1179(?im)\berror\b.+?Default.+?cannot.+?be.+?signature
1180<END_RESULT>
1181<RESULT IF_PASS COUNT 1>
1182(?is)\berror:
1183<END_RESULT>
1184
1185<END_TC>
1186:exmp.
1187
1188.*---------------------------------------------------------------------*
1189:h3.TTCN-3::NotAllowedTypeInParameterList->Signature: timer
1190.*---------------------------------------------------------------------*
1191:xmp tab=0.
1192<TC - TTCN-3::NotAllowedTypeInParameterList->Signature: timer>
1193
1194<COMPILE>
1195<VERDICT_LEAF PASS>
1196<MODULE TTCN ModuleA ModuleA.ttcn>
1197module ModuleA {
1198 signature MySig( timer par_1 );
1199}
1200<END_MODULE>
1201<RESULT IF_PASS COUNT 1>
1202(?im)\berror\b.+?syntax.+?error
1203<END_RESULT>
1204<RESULT IF_PASS COUNT 1>
1205(?is)\berror:
1206<END_RESULT>
1207
1208<END_TC>
1209:exmp.
1210
1211:np.
1212.*---------------------------------------------------------------------*
1213:h2.Mismatch in actual and formal parameter list
1214.*---------------------------------------------------------------------*
1215This test case group covers the requirement SA-4/3.
1216:p. Explanation:
1217:nl. SA shall detect if there is a mismatch between the formal and the actual
1218 parameter list.
1219:p. - We can use the formal and the actual parameter list according to
1220 the TTCN-3 specification on the following language elements:
1221:nl. type, template, function, altstep, testcase and signature.
1222:nl. NOTE: types are not currently supported in the implementation.
1223:p. - In the actual and the corresponding formal parameter list:
1224:list.
1225:li d='number:'. shall be the same as the number of elements;
1226:li d='order:'. shall be the same as the order of elements;
1227:li d='types:'. shall be compatible with the types of elements.
1228:elist.
1229:space 1.
1230:p. Test strategy:
1231:list.
1232:li d='number:'. we made a test for each language elements;
1233:li d='order and type compatibility:'. the type compatibility checking covers
1234 the order checking, therefore the order checking is not necessary
1235 (see the type compatibility checking in the requirement SA-5/2);
1236:elist.
1237
1238.*---------------------------------------------------------------------*
1239:h3.TTCN-3::MismachActualFormalParameterList->Types: number
1240.*---------------------------------------------------------------------*
1241:xmp tab=0.
1242<TC - TTCN-3::MismachActualFormalParameterList->Types: number>
1243
1244<COMPILE>
1245<VERDICT_LEAF FAIL>
1246<MODULE TTCN ModuleA ModuleA.ttcn>
1247module ModuleA {
1248 type record rtype (integer p, boolean b) {integer i (p .. p+10), boolean b (b)}
1249
1250 const rtype() r1 := {1, true}
1251 const rtype(1) r2 := {1, true}
1252 const rtype(1, true, 2) r3 := {1, true}
1253
1254 type set stype (integer p, boolean b) {integer i (p .. p+10), boolean b (b)}
1255
1256 const stype() s1 := {1, true}
1257 const stype(1) s2 := {1, true}
1258 const stype(1, true, 2) s3 := {1, true}
1259
1260}
1261<END_MODULE>
1262<RESULT IF_FAIL POSITIVE>
1263(?im)\berror\b.+?not.+?supported
1264<END_RESULT>
1265<END_TC>
1266:exmp.
1267
1268.*---------------------------------------------------------------------*
1269:h3.TTCN-3::MismachActualFormalParameterList->Template: number
1270.*---------------------------------------------------------------------*
1271:xmp tab=0.
1272<TC - TTCN-3::MismachActualFormalParameterList->Template: number>
1273
1274<COMPILE>
1275<VERDICT_LEAF PASS>
1276<MODULE TTCN ModuleA ModuleA.ttcn>
1277module ModuleA {
1278 type record MyRec {
1279 integer field1,
1280 charstring field2,
1281 boolean field3
1282 }
1283 template MyRec MyTemp( charstring par_1, boolean par_2, integer par_3 ) := {
1284 field1 := par_3,
1285 field2 := par_1,
1286 field3 := par_2
1287 }
1288 template MyRec MyTemp2( charstring par_1 := "r", boolean par_2):=
1289 {
1290 field1 := 6,
1291 field2 := par_1,
1292 field3 := par_2
1293 }
1294 template MyRec MyTemp3(charstring par_1 := "r", boolean par_2:= false, integer par_3:=6):=
1295 {
1296 field1 := par_3,
1297 field2 := par_1,
1298 field3 := par_2
1299 }
1300 function MyFunc( template MyRec mytemp ) {}
1301 control {
1302 MyFunc(MyTemp("r",true,6)); // good
1303 MyFunc(MyTemp("r",true)); // too few parameters
1304 MyFunc(MyTemp("r",true,6,1.3)); // too many parameters
1305 MyFunc(MyTemp2(true)); // too few parameters
1306 MyFunc(MyTemp3("r",true,6,1.3)); // too many parameters
1307 MyFunc(MyTemp3(-,true,6,1.3)); // too many parameters
1308 MyFunc(MyTemp3("r",true,6,-)); // too many parameters
1309 }
1310}
1311<END_MODULE>
1312<RESULT IF_PASS COUNT 2>
1313(?im)\berror\b.+?Too.+?few.+?parameters
1314<END_RESULT>
1315<RESULT IF_PASS COUNT 4>
1316(?im)\berror\b.+?Too.+?many.+?parameters
1317<END_RESULT>
1318<RESULT IF_PASS COUNT 7>
1319(?is)\berror:
1320<END_RESULT>
1321<RESULT IF_PASS POSITIVE>
1322(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
1323<END_RESULT>
1324
1325<END_TC>
1326:exmp.
1327
1328.*---------------------------------------------------------------------*
1329:h3.TTCN-3::MismachActualFormalParameterList->Function: number
1330.*---------------------------------------------------------------------*
1331:xmp tab=0.
1332<TC - TTCN-3::MismachActualFormalParameterList->Function: number>
1333
1334<COMPILE>
1335<VERDICT_LEAF PASS>
1336<MODULE TTCN ModuleA ModuleA.ttcn>
1337module ModuleA {
1338 function MyFunc( integer par_1, charstring par_2, boolean par_3 ) {}
1339 function MyFunc2( integer par_1 := 6, charstring par_2){}
1340 function MyFunc3( integer par_1:=6, charstring par_2:="r", boolean par_3:=false){}
1341 control {
1342 MyFunc(6,"r",true); // good
1343 MyFunc(6,"r"); // too few parameters
1344 MyFunc(56,"r",true,1.3); // too many parameters
1345 MyFunc2("r"); // too few parameters
1346 MyFunc3(6,"r",true,1.3); // too many parameters
1347 MyFunc3(-,"r",true,1.3); // too many parameters
1348 MyFunc3(6,"r",true,-); // too many parameters
1349 }
1350}
1351<END_MODULE>
1352<RESULT IF_PASS COUNT 2>
1353(?im)\berror\b.+?Too.+?few.+?parameters
1354<END_RESULT>
1355<RESULT IF_PASS COUNT 4>
1356(?im)\berror\b.+?Too.+?many.+?parameters
1357<END_RESULT>
1358<RESULT IF_PASS COUNT 7>
1359(?is)\berror:
1360<END_RESULT>
1361<RESULT IF_PASS POSITIVE>
1362(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
1363<END_RESULT>
1364
1365<END_TC>
1366:exmp.
1367
1368.*---------------------------------------------------------------------*
1369:h3.TTCN-3::MismachActualFormalParameterList->Function_runs_on: number
1370.*---------------------------------------------------------------------*
1371:xmp tab=0.
1372<TC - TTCN-3::MismachActualFormalParameterList->Function_runs_on: number>
1373
1374<COMPILE>
1375<VERDICT_LEAF PASS>
1376<MODULE TTCN ModuleA ModuleA.ttcn>
1377module ModuleA {
1378 type component MyCT {}
1379 function MyFunc( integer par_1, charstring par_2, boolean par_3 ) runs on MyCT {}
1380 function MyFunc2( integer par_1 := 6, charstring par_2) runs on MyCT {}
1381 function MyFunc3( integer par_1:=6, charstring par_2:="r", boolean par_3:=false) runs on MyCT {}
1382 testcase MyTemp() runs on MyCT {
1383 MyFunc(6,"r",true); // good
1384 MyFunc(6,"r"); // too few parameters
1385 MyFunc(56,"r",true,1.3); // too many parameters
1386 MyFunc2("r"); // too few parameters
1387 MyFunc3(6,"r",true,1.3); // too many parameters
1388 MyFunc3(-,"r",true,1.3); // too many parameters
1389 MyFunc3(6,"r",true,-); // too many parameters
1390 }
1391}
1392<END_MODULE>
1393<RESULT IF_PASS COUNT 2>
1394(?im)\berror\b.+?Too.+?few.+?parameters
1395<END_RESULT>
1396<RESULT IF_PASS COUNT 4>
1397(?im)\berror\b.+?Too.+?many.+?parameters
1398<END_RESULT>
1399<RESULT IF_PASS COUNT 7>
1400(?is)\berror:
1401<END_RESULT>
1402<RESULT IF_PASS POSITIVE>
1403(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
1404<END_RESULT>
1405
1406<END_TC>
1407:exmp.
1408
1409.*---------------------------------------------------------------------*
1410:h3.TTCN-3::MismachActualFormalParameterList->External Function: number
1411.*---------------------------------------------------------------------*
1412:xmp tab=0.
1413<TC - TTCN-3::MismachActualFormalParameterList->External Function: number>
1414
1415<COMPILE>
1416<VERDICT_LEAF PASS>
1417<MODULE TTCN ModuleA ModuleA.ttcn>
1418module ModuleA {
1419 type component MyCT {}
1420 external function MyExtFunc( integer par_1, charstring par_2, boolean par_3 );
1421 external function MyExtFunc2( integer par_1 := 6, charstring par_2);
1422 external function MyExtFunc3( integer par_1:=6, charstring par_2:="r", boolean par_3:=false);
1423 control {
1424 MyExtFunc(6,"r",true); // good
1425 MyExtFunc(6,"r"); // too few parameters
1426 MyExtFunc(56,"r",true,1.3); // too many parameters
1427 MyExtFunc2("r"); // too few parameters
1428 MyExtFunc3(6,"r",true,1.3); // too many parameters
1429 MyExtFunc3(-,"r",true,1.3); // too many parameters
1430 MyExtFunc3(6,"r",true,-); // too many parameters
1431 }
1432}
1433<END_MODULE>
1434<RESULT IF_PASS COUNT 2>
1435(?im)\berror\b.+?Too.+?few.+?parameters
1436<END_RESULT>
1437<RESULT IF_PASS COUNT 4>
1438(?im)\berror\b.+?Too.+?many.+?parameters
1439<END_RESULT>
1440<RESULT IF_PASS COUNT 7>
1441(?is)\berror:
1442<END_RESULT>
1443<RESULT IF_PASS POSITIVE>
1444(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
1445<END_RESULT>
1446
1447<END_TC>
1448:exmp.
1449
1450.*---------------------------------------------------------------------*
1451:h3.TTCN-3::MismachActualFormalParameterList->Altstep: number
1452.*---------------------------------------------------------------------*
1453:xmp tab=0.
1454<TC - TTCN-3::MismachActualFormalParameterList->Altstep: number>
1455
1456<COMPILE>
1457<VERDICT_LEAF PASS>
1458<MODULE TTCN ModuleA ModuleA.ttcn>
1459module ModuleA {
1460 altstep MyAltstep( integer par_1, charstring par_2, boolean par_3 ) {
1461 [else] {}
1462 }
1463 altstep MyAltstep2( integer par_1 := 6, charstring par_2) {
1464 [else] {}
1465 }
1466 altstep MyAltstep3( integer par_1:=6, charstring par_2:="r", boolean par_3:=false) {
1467 [else] {}
1468 }
1469 control {
1470 MyAltstep(6,"r",true); // good
1471 MyAltstep(6,"r"); // too few parameters
1472 MyAltstep(56,"r",true,1.3); // too many parameters
1473 MyAltstep2("r"); // too few parameters
1474 MyAltstep3(6,"r",true,1.3); // too many parameters
1475 MyAltstep3(-,"r",true,1.3); // too many parameters
1476 MyAltstep3(6,"r",true,-); // too many parameters
1477 }
1478}
1479<END_MODULE>
1480<RESULT IF_PASS COUNT 2>
1481(?im)\berror\b.+?Too.+?few.+?parameters
1482<END_RESULT>
1483<RESULT IF_PASS COUNT 4>
1484(?im)\berror\b.+?Too.+?many.+?parameters
1485<END_RESULT>
1486<RESULT IF_PASS COUNT 7>
1487(?is)\berror:
1488<END_RESULT>
1489<RESULT IF_PASS POSITIVE>
1490(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
1491<END_RESULT>
1492
1493<END_TC>
1494:exmp.
1495
1496.*---------------------------------------------------------------------*
1497:h3.TTCN-3::MismachActualFormalParameterList->Altstep_runs_on: number
1498.*---------------------------------------------------------------------*
1499:xmp tab=0.
1500<TC - TTCN-3::MismachActualFormalParameterList->Altstep_runs_on: number>
1501
1502<COMPILE>
1503<VERDICT_LEAF PASS>
1504<MODULE TTCN ModuleA ModuleA.ttcn>
1505module ModuleA {
1506 type component MyCT {}
1507 altstep MyAltstep( integer par_1, charstring par_2, boolean par_3 ) runs on MyCT {
1508 [else] {}
1509 }
1510 altstep MyAltstep2( integer par_1 := 6, charstring par_2) runs on MyCT {
1511 [else] {}
1512 }
1513 altstep MyAltstep3( integer par_1:=6, charstring par_2:="r", boolean par_3:=false) runs on MyCT {
1514 [else] {}
1515 }
1516 testcase MyTemp() runs on MyCT {
1517 MyAltstep(6,"r",true); // good
1518 MyAltstep(6,"r"); // too few parameters
1519 MyAltstep(56,"r",true,1.3); // too many parameters
1520 MyAltstep2("r"); // too few parameters
1521 MyAltstep3(6,"r",true,1.3); // too many parameters
1522 MyAltstep3(-,"r",true,1.3); // too many parameters
1523 MyAltstep3(6,"r",true,-); // too many parameters
1524 }
1525}
1526<END_MODULE>
1527<RESULT IF_PASS COUNT 2>
1528(?im)\berror\b.+?Too.+?few.+?parameters
1529<END_RESULT>
1530<RESULT IF_PASS COUNT 4>
1531(?im)\berror\b.+?Too.+?many.+?parameters
1532<END_RESULT>
1533<RESULT IF_PASS COUNT 7>
1534(?is)\berror:
1535<END_RESULT>
1536<RESULT IF_PASS POSITIVE>
1537(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
1538<END_RESULT>
1539
1540<END_TC>
1541:exmp.
1542
1543.*---------------------------------------------------------------------*
1544:h3.TTCN-3::MismachActualFormalParameterList->Testcase: numberr
1545.*---------------------------------------------------------------------*
1546:xmp tab=0.
1547<TC - TTCN-3::MismachActualFormalParameterList->Testcase: number>
1548
1549<COMPILE>
1550<VERDICT_LEAF PASS>
1551<MODULE TTCN ModuleA ModuleA.ttcn>
1552module ModuleA {
1553 type component MyCT {}
1554 testcase MyTestcase( integer par_1, charstring par_2, boolean par_3 ) runs on MyCT {}
1555 testcase MyTestcase2( integer par_1 := 6, charstring par_2) runs on MyCT {}
1556 testcase MyTestcase3( integer par_1:=6, charstring par_2:="r", boolean par_3:=false) runs on MyCT {}
1557 control {
1558 execute ( MyTestcase(6,"r",true) ); // good
1559 execute ( MyTestcase(6,"r") ); // too few parameters
1560 execute ( MyTestcase(56,"r",true,1.3) ); // too many parameters
1561 execute ( MyTestcase2("r") ); // too few parameters
1562 execute ( MyTestcase3(6,"r",true,1.3) ); // too many parameters
1563 execute ( MyTestcase3(-,"r",true,1.3) ); // too many parameters
1564 execute ( MyTestcase3(6,"r",true,-) ); // too many parameters
1565 }
1566}
1567<END_MODULE>
1568<RESULT IF_PASS COUNT 2>
1569(?im)\berror\b.+?Too.+?few.+?parameters
1570<END_RESULT>
1571<RESULT IF_PASS COUNT 4>
1572(?im)\berror\b.+?Too.+?many.+?parameters
1573<END_RESULT>
1574<RESULT IF_PASS COUNT 7>
1575(?is)\berror:
1576<END_RESULT>
1577<RESULT IF_PASS POSITIVE>
1578(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
1579<END_RESULT>
1580
1581<END_TC>
1582:exmp.
1583
1584.*---------------------------------------------------------------------*
1585:h3.TTCN-3::MismachActualFormalParameterList->Signature: number
1586.*---------------------------------------------------------------------*
1587:xmp tab=0.
1588<TC - TTCN-3::MismachActualFormalParameterList->Signature: number>
1589
1590<COMPILE>
1591<VERDICT_LEAF PASS>
1592<MODULE TTCN ModuleA ModuleA.ttcn>
1593module ModuleA {
1594 signature MySig( integer par_1, charstring par_2, boolean par_3 );
1595 type port MyPortType procedure { inout MySig }
1596 type component MyComp {
1597 port MyPortType MyPort;
1598 }
1599 function MyFunc() runs on MyComp {
1600 MyPort.call(MySig:{ 6,"r",true }, 20E-3 + 20E-3) {
1601 [] MyPort.getreply {}
1602 }
1603 MyPort.call(MySig:{ 6,"r" }, 20E-3 + 20E-3) {
1604 [] MyPort.getreply {}
1605 }
1606 MyPort.call(MySig:{ 6,"r",true,6.8 }, 20E-3 + 20E-3) {
1607 [] MyPort.getreply {}
1608 }
1609 }
1610}
1611<END_MODULE>
1612<RESULT IF_PASS COUNT 1>
1613(?im)\berror\b.+?Too.+?few.+?elements.+?MySig
1614<END_RESULT>
1615<RESULT IF_PASS COUNT 1>
1616(?im)\berror\b.+?Too.+?many.+?elements.+?MySig
1617<END_RESULT>
1618<RESULT IF_PASS COUNT 2>
1619(?is)\berror:
1620<END_RESULT>
1621<RESULT IF_PASS POSITIVE>
1622(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
1623<END_RESULT>
1624
1625<END_TC>
1626:exmp.
1627
1628:np.
1629.*---------------------------------------------------------------------*
1630:h2.Parameter list of a modified template
1631.*---------------------------------------------------------------------*
1632This test case group covers the requirement SA-4/4.
1633:p. Explanation:
1634:nl. The followings apply:
1635:nl. - the derived template shall not omit parameters defined at any of the
1636 modification steps between the base template and the actual modified
1637 template
1638:nl. - a derived template can have additional (appended) parameters if wished
1639:nl. - base template fields containing parameterized templates shall not be
1640 modified or explicitly omitted in a modified template (including inline
1641 modified templates)
1642:nl. - base template field that depends on a parameter shall not be modified
1643 or explicitly omitted in a modified template (?)
1644
1645:p. Test strategy:
1646
1647:p. TODO: <what TCs are missing and why>
1648
1649
1650:np.
1651
1652.*---------------------------------------------------------------------*
1653:h2.Parameter is not allowed to be passed by value/reference
1654.*---------------------------------------------------------------------*
1655This test case group covers the requirement SA-4/5.
1656:p. Explanation:
1657:nl. Many language elements allow only parameter passing by value or reference.
1658
1659:p. General:
1660:list.
1661:li d='Basic types, basic string types, user-defined structured types, address type and component type:'.
1662 By default, all actual parameters of these types are passed by value.
1663:nl.This may otionally be denoted by the keyword "in".
1664:nl.To pass parameters of these types by reference the keywords "out" or "inout"
1665 shall be used.
1666:nl.NOTE: the behaviour of the "default" type is similar to the listed below
1667 in the implementation.
1668:li d='Timers and ports:'. are always passed by reference.
1669:nl.Timer parameter are identified by the keyword timer.
1670:nl.Port parameter are identified by their port type.
1671:nl.The keyword "inout" may optionally be used to denote passing by reference.
1672:elist.
1673:p. Parameters passed by reference:
1674:nl.Passing parameters by reference has the following limitations:
1675:list.
1676:li d='a)'. only the formal parameter lists to altsteps, functions, signatures
1677 and testcases may contain pass-by-reference parameters;
1678:li d='b)'. the actual parameters shall only be variables, ports or timers.
1679:elist.
1680:p. Parameters passed by value:
1681:nl.Actual parameters that are passed by value may be variables as well as
1682 constants, templates etc.
1683
1684:p. NOTEs:
1685:nl.The "component type" and the "default" are allowed in the modulepar, the
1686 template and the testcase in the implementation far afield from the TTCN-3
1687 specification.
1688:nl.The "out" and the "inout" parameters can be read and set from within e.g.
1689 the function. The difference is the "out" parameter may be unbound but the
1690 "inout" parameter must be initialized before called.
1691
1692:p. Test strategy:
1693:nl.There are some tests for the template, function, altstep, testcase and
1694 signature language elements where we can use "in","out" or "inout" parameters.
1695 First we checked the allowed cases (positive tests). Other tests are for each
1696 type of values that is allowed to appear in the formal/actual parameter
1697 lists of all language elements with "defaul in", "in", "out" and "inout"
1698 parameters.
1699
1700.*---------------------------------------------------------------------*
1701:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Template: allowed in
1702.*---------------------------------------------------------------------*
1703:xmp tab=0.
1704<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Template: allowed in>
1705
1706<COMPILEGCC>
1707<VERDICT_LEAF PASS>
1708<MODULE TTCN ModuleA ModuleA.ttcn>
1709module ModuleA {
1710 type component MyCT {}
1711 type record MyRecord {
1712 float field1,
1713 boolean field2 optional
1714 }
1715 type record address { integer field }
1716 type record MyRec {
1717 integer field11 optional,
1718 integer field12,
1719 octetstring field21,
1720 octetstring field22,
1721 MyRecord field31,
1722 MyRecord field32,
1723 address field41,
1724 address field42,
1725 MyCT field51,
1726 MyCT field52,
1727 default field61,
1728 default field62,
1729 float field71,
1730 float field72
1731 }
1732 template MyRec MyTemp (
1733 integer par_11, // basic type
1734 in integer par_12,
1735 octetstring par_21, // basic string type
1736 in octetstring par_22,
1737 MyRecord par_31, // user-defined structured type
1738 in MyRecord par_32,
1739 address par_41, // address
1740 in address par_42,
1741 template float par_51, // template
1742 in template float par_52,
1743 MyCT par_61, // component type
1744 in MyCT par_62,
1745 default par_71, // default
1746 in default par_72 ) := {
1747 field11 := par_11,
1748 field12 := par_12,
1749 field21 := par_21,
1750 field22 := par_22,
1751 field31 := par_31,
1752 field32 := par_32,
1753 field41 := par_41,
1754 field42 := par_42,
1755 field51 := par_61,
1756 field52 := par_62,
1757 field61 := par_71,
1758 field62 := par_72,
1759 field71 := par_51,
1760 field72 := par_52
1761 }
1762 function MyFunc( template MyRec mytemp ) {}
1763 control {
1764 var integer myint;
1765 var octetstring myoctet;
1766 var MyRecord myrecord;
1767 var address myadd;
1768 var float mytemp;
1769 var MyCT myct_1, myct_2;
1770 var default mydef_1, mydef_2;
1771 MyFunc(MyTemp( 1,myint, myoctet,'A5'O, myrecord,{6.7,true}, {5},myadd,
1772 mytemp,7.8, myct_1,myct_2, mydef_1,mydef_1));
1773 }
1774}
1775<END_MODULE>
1776<RESULT IF_PASS POSITIVE>
1777(?im)\bnotify\b.+?Generating.+?code
1778<END_RESULT>
1779
1780<END_TC>
1781:exmp.
1782
1783.*---------------------------------------------------------------------*
1784:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Template: allowed non-mandatory in
1785.*---------------------------------------------------------------------*
1786:xmp tab=0.
1787<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Template: allowed non-mandatory in>
1788
1789<COMPILEGCC>
1790<VERDICT_LEAF PASS>
1791<MODULE TTCN ModuleA ModuleA.ttcn>
1792module ModuleA {
1793 type component MyCT {}
1794 type record MyRecord {
1795 float field1,
1796 boolean field2 optional
1797 }
1798 type record address { integer field }
1799 type record MyRec {
1800 integer field11 optional,
1801 integer field12,
1802 octetstring field21,
1803 octetstring field22,
1804 MyRecord field31,
1805 MyRecord field32,
1806 address field41,
1807 address field42,
1808 MyCT field51,
1809 MyCT field52,
1810 default field61,
1811 default field62,
1812 float field71,
1813 float field72
1814 }
1815 template MyRec MyTemp (
1816 integer par_11 := 1, // basic type
1817 in integer par_12 := 1,
1818 octetstring par_21 := 'A5'O, // basic string type
1819 in octetstring par_22 := 'A5'O,
1820 MyRecord par_31 := {6.7,true},// user-defined structured type
1821 in MyRecord par_32 := {6.7,true},
1822 address par_41 := {5}, // address
1823 in address par_42 := {5},
1824 template float par_51 := 7.8, // template
1825 in template float par_52 := 7.8,
1826 MyCT par_61, // component type
1827 in MyCT par_62,
1828 default par_71, // default
1829 in default par_72 ) := {
1830 field11 := par_11,
1831 field12 := par_12,
1832 field21 := par_21,
1833 field22 := par_22,
1834 field31 := par_31,
1835 field32 := par_32,
1836 field41 := par_41,
1837 field42 := par_42,
1838 field51 := par_61,
1839 field52 := par_62,
1840 field61 := par_71,
1841 field62 := par_72,
1842 field71 := par_51,
1843 field72 := par_52
1844 }
1845 function MyFunc( template MyRec mytemp ) {}
1846 control {
1847 var integer myint;
1848 var octetstring myoctet;
1849 var MyRecord myrecord;
1850 var address myadd;
1851 var float mytemp;
1852 var MyCT myct_1, myct_2;
1853 var default mydef_1, mydef_2;
1854 MyFunc(MyTemp( 1,myint, myoctet,'A5'O, myrecord,{6.7,true}, {5},myadd,
1855 mytemp,7.8, myct_1,myct_2, mydef_1,mydef_1));
1856 }
1857}
1858<END_MODULE>
1859<RESULT IF_PASS POSITIVE>
1860(?im)\bnotify\b.+?Generating.+?code
1861<END_RESULT>
1862
1863<END_TC>
1864:exmp.
1865
1866.*---------------------------------------------------------------------*
1867:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Template: out, inout
1868.*---------------------------------------------------------------------*
1869:xmp tab=0.
1870<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Template: out, inout>
1871
1872<COMPILE>
1873<VERDICT_LEAF PASS>
1874<MODULE TTCN ModuleA ModuleA.ttcn>
1875module ModuleA {
1876 type component MyCT {}
1877 type set MySet {
1878 float field1,
1879 boolean field2 optional
1880 }
1881 type record address { integer field }
1882 type record MyRec {
1883 integer field1 optional,
1884 octetstring field2,
1885 MySet field3,
1886 address field4,
1887 MyCT field5,
1888 default field6,
1889 float field7
1890 }
1891 template MyRec MyTemp (
1892 out integer par_13_1, // basic type
1893 inout integer par_14_1,
1894 out octetstring par_13_2, // basic string type
1895 inout octetstring par_14_2,
1896 out MySet par_23, // user-defined structured type
1897 inout MySet par_24,
1898 out address par_33, // address
1899 inout address par_34,
1900 out template float par_43, // template
1901 inout template float par_44,
1902 out MyCT par_53, // component type
1903 inout MyCT par_54,
1904 out default par_73, // default
1905 inout default par_74 ) := {
1906 field1 := par_13_1,
1907 field2 := par_14_2,
1908 field3 := par_23,
1909 field4 := par_34,
1910 field5 := par_53,
1911 field6 := par_74,
1912 field7 := par_44
1913 }
1914}
1915<END_MODULE>
1916<RESULT IF_PASS COUNT 14>
1917(?im)\berror\b.+?template.+?cannot.+?have.+?out.+?parameter
1918<END_RESULT>
1919<RESULT IF_PASS COUNT 7>
1920(?im)\berror\b.+?template.+?cannot.+?have.+?inout.+?parameter
1921<END_RESULT>
1922<RESULT IF_PASS COUNT 14>
1923(?is)\berror:
1924<END_RESULT>
1925<RESULT IF_PASS POSITIVE>
1926(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
1927<END_RESULT>
1928
1929<END_TC>
1930:exmp.
1931
1932.*---------------------------------------------------------------------*
1933:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Template: non-mandatory out, inout
1934.*---------------------------------------------------------------------*
1935:xmp tab=0.
1936<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Template: non-mandatory out, inout>
1937
1938<COMPILE>
1939<VERDICT_LEAF PASS>
1940<MODULE TTCN ModuleA ModuleA.ttcn>
1941module ModuleA {
1942 type component MyCT {}
1943 type set MySet {
1944 float field1,
1945 boolean field2 optional
1946 }
1947 type record address { integer field }
1948 type record MyRec {
1949 integer field1 optional,
1950 octetstring field2,
1951 MySet field3,
1952 address field4,
1953 float field5
1954 }
1955 template MyRec MyTemp (
1956 out integer par_13_1 := 5, // basic type
1957 inout integer par_14_1 := 5,
1958 out octetstring par_13_2 := 'A5'O, // basic string type
1959 inout octetstring par_14_2 := 'A5'O,
1960 out MySet par_23 := {field1:=1.0,field2:=true}, // user-defined structured type
1961 inout MySet par_24 := {field1:=1.0,field2:=true},
1962 out address par_33 := {5}, // address
1963 inout address par_34 := {5},
1964 out template float par_43 := 7.8, // template
1965 inout template float par_44 := 7.8) := {
1966 field1 := par_13_1,
1967 field2 := par_14_2,
1968 field3 := par_23,
1969 field4 := par_34,
1970 field5 := par_44
1971 }
1972}
1973<END_MODULE>
1974<RESULT IF_PASS COUNT 10>
1975(?im)\berror\b.+?template.+?cannot.+?have.+?out.+?parameter
1976<END_RESULT>
1977<RESULT IF_PASS COUNT 5>
1978(?im)\berror\b.+?template.+?cannot.+?have.+?inout.+?parameter
1979<END_RESULT>
1980<RESULT IF_PASS COUNT 8>
1981(?im)\berror\b.+?reference.+?variable.+?value.+?parameter.+?expected
1982<END_RESULT>
1983<RESULT IF_PASS COUNT 20>
1984(?is)\berror:
1985<END_RESULT>
1986<RESULT IF_PASS POSITIVE>
1987(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
1988<END_RESULT>
1989
1990<END_TC>
1991:exmp.
1992
1993.*---------------------------------------------------------------------*
1994:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function: allowed in/out/inout
1995.*---------------------------------------------------------------------*
1996:xmp tab=0.
1997<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function: allowed in/out/inout>
1998
1999<COMPILE>
2000<VERDICT_LEAF PASS>
2001<MODULE TTCN ModuleA ModuleA.ttcn>
2002module ModuleA {
2003 type port MyPort message { inout charstring; }
2004 type component MyCT {}
2005 type set MySet {
2006 float field1,
2007 boolean field2 optional
2008 }
2009 type record address { integer field }
2010 function MyFunc (
2011 integer par_11_1, // basic type
2012 in integer par_12_1,
2013 out integer par_13_1,
2014 inout integer par_14_1,
2015
2016 octetstring par_11_2, // basic string type
2017 in octetstring par_12_2,
2018 out octetstring par_13_2,
2019 inout octetstring par_14_2,
2020
2021 MySet par_21, // user-defined structured type
2022 in MySet par_22,
2023 out MySet par_23,
2024 inout MySet par_24,
2025
2026 address par_31, // address
2027 in address par_32,
2028 out address par_33,
2029 inout address par_34,
2030
2031 template MySet par_41, // template
2032 in template MySet par_42,
2033 out template MySet par_43,
2034 inout template MySet par_44,
2035
2036 MyCT par_51, // component type
2037 in MyCT par_52,
2038 out MyCT par_53,
2039 inout MyCT par_54,
2040
2041 MyPort par_61, // port type
2042 inout MyPort par_64,
2043
2044 default par_71, // default
2045 in default par_72,
2046 out default par_73,
2047 inout default par_74,
2048
2049 timer par_81, // timer
2050 inout timer par_84 ) {}
2051}
2052<END_MODULE>
2053<RESULT IF_PASS POSITIVE>
2054(?im)\bnotify\b.+?Generating.+?code
2055<END_RESULT>
2056
2057<END_TC>
2058:exmp.
2059
2060.*---------------------------------------------------------------------*
2061:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: allowed in/out/inout
2062.*---------------------------------------------------------------------*
2063:xmp tab=0.
2064<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: allowed in/out/inout>
2065
2066<COMPILE>
2067<VERDICT_LEAF PASS>
2068<MODULE TTCN ModuleA ModuleA.ttcn>
2069module ModuleA {
2070 type port MyPort message { inout charstring; }
2071 type component MyCT {}
2072 type set MySet {
2073 float field1,
2074 boolean field2 optional
2075 }
2076 type record address { integer field }
2077 function MyCompFunc (
2078 integer par_11_1, // basic type
2079 in integer par_12_1,
2080 out integer par_13_1,
2081 inout integer par_14_1,
2082
2083 octetstring par_11_2, // basic string type
2084 in octetstring par_12_2,
2085 out octetstring par_13_2,
2086 inout octetstring par_14_2,
2087
2088 MySet par_21, // user-defined structured type
2089 in MySet par_22,
2090 out MySet par_23,
2091 inout MySet par_24,
2092
2093 address par_31, // address
2094 in address par_32,
2095 out address par_33,
2096 inout address par_34,
2097
2098 template MySet par_41, // template
2099 in template MySet par_42,
2100 out template MySet par_43,
2101 inout template MySet par_44,
2102
2103 MyCT par_51, // component type
2104 in MyCT par_52,
2105 out MyCT par_53,
2106 inout MyCT par_54,
2107
2108 MyPort par_61, // port type
2109 inout MyPort par_64,
2110
2111 default par_71, // default
2112 in default par_72,
2113 out default par_73,
2114 inout default par_74,
2115
2116 timer par_81, // timer
2117 inout timer par_84 ) runs on MyCT {}
2118}
2119<END_MODULE>
2120<RESULT IF_PASS POSITIVE>
2121(?im)\bnotify\b.+?Generating.+?code
2122<END_RESULT>
2123
2124<END_TC>
2125:exmp.
2126
2127.*---------------------------------------------------------------------*
2128:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: allowed non-mandatory in/out/inout
2129.*---------------------------------------------------------------------*
2130:xmp tab=0.
2131<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: allowed non-mandatory in/out/inout>
2132
2133<COMPILE>
2134<VERDICT_LEAF PASS>
2135<MODULE TTCN ModuleA ModuleA.ttcn>
2136module ModuleA {
2137 type port MyPort message { inout charstring; }
2138 type set MySet {
2139 float field1,
2140 boolean field2 optional
2141 }
2142 type record address { integer field }
2143 type component MyCT {
2144 const integer comp_const_i := 0;
2145 var integer comp_var_i := 0;
2146 const octetstring comp_const_o := '00'O;
2147 var octetstring comp_var_o := '00'O;
2148 const MySet comp_const_set := {field1 := 1.0, field2 := true};
2149 var MySet comp_var_set := {field1 := 1.0, field2 := true};
2150 const address comp_const_address := {5};
2151 var address comp_var_address := {5};
2152 port MyPort comp_port;
2153 timer comp_timer := 1.0;
2154 }
2155 function MyCompFunc (
2156 integer par_11_1 := comp_const_i, // basic type
2157 in integer par_12_1 := comp_const_i,
2158 out integer par_13_1 := comp_var_i,
2159 inout integer par_14_1 := comp_var_i,
2160
2161 octetstring par_11_2 := comp_const_o, // basic string type
2162 in octetstring par_12_2 := comp_const_o,
2163 out octetstring par_13_2 := comp_var_o,
2164 inout octetstring par_14_2 := comp_var_o,
2165
2166 MySet par_21 := comp_const_set, // user-defined structured type
2167 in MySet par_22 := comp_const_set,
2168 out MySet par_23 := comp_var_set,
2169 inout MySet par_24 := comp_var_set,
2170
2171 address par_31 := comp_const_address, // address
2172 in address par_32 := comp_const_address,
2173 out address par_33 := comp_var_address,
2174 inout address par_34 := comp_var_address,
2175
2176 MyPort par_61 := comp_port, // port type
2177 inout MyPort par_64 := comp_port,
2178
2179 timer par_81 := comp_timer, // timer
2180 inout timer par_84 := comp_timer ) runs on MyCT {}
2181}
2182<END_MODULE>
2183<RESULT IF_PASS POSITIVE>
2184(?im)\bnotify\b.+?Generating.+?code
2185<END_RESULT>
2186
2187<END_TC>
2188:exmp.
2189
2190
2191.*---------------------------------------------------------------------*
2192:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: allowed in/out/inout
2193.*---------------------------------------------------------------------*
2194:xmp tab=0.
2195<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: allowed in/out/inout>
2196
2197<COMPILE>
2198<VERDICT_LEAF PASS>
2199<MODULE TTCN ModuleA ModuleA.ttcn>
2200module ModuleA {
2201 type port MyPort message { inout charstring; }
2202 type component MyCT {}
2203 type set MySet {
2204 float field1,
2205 boolean field2 optional
2206 }
2207 type record address { integer field }
2208 external function MyExtFunc (
2209 integer par_11_1, // basic type
2210 in integer par_12_1,
2211 out integer par_13_1,
2212 inout integer par_14_1,
2213
2214 octetstring par_11_2, // basic string type
2215 in octetstring par_12_2,
2216 out octetstring par_13_2,
2217 inout octetstring par_14_2,
2218
2219 MySet par_21, // user-defined structured type
2220 in MySet par_22,
2221 out MySet par_23,
2222 inout MySet par_24,
2223
2224 address par_31, // address
2225 in address par_32,
2226 out address par_33,
2227 inout address par_34,
2228
2229 template MySet par_41, // template
2230 in template MySet par_42,
2231 out template MySet par_43,
2232 inout template MySet par_44,
2233
2234 MyCT par_51, // component type
2235 in MyCT par_52,
2236 out MyCT par_53,
2237 inout MyCT par_54,
2238
2239 MyPort par_61, // port type
2240 inout MyPort par_64,
2241
2242 default par_71, // default
2243 in default par_72,
2244 out default par_73,
2245 inout default par_74,
2246
2247 timer par_81, // timer
2248 inout timer par_84 );
2249}
2250<END_MODULE>
2251<RESULT IF_PASS POSITIVE>
2252(?im)\bnotify\b.+?Generating.+?code
2253<END_RESULT>
2254
2255<END_TC>
2256:exmp.
2257
2258.*---------------------------------------------------------------------*
2259:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function: port type with in/out
2260.*---------------------------------------------------------------------*
2261:xmp tab=0.
2262<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function: port type with in/out>
2263
2264<COMPILE>
2265<VERDICT_LEAF PASS>
2266<MODULE TTCN ModuleA ModuleA.ttcn>
2267module ModuleA {
2268 type port MyPort message { inout charstring; }
2269 type component MyCT {}
2270 function MyFunc ( in MyPort par_1, out MyPort par_2 ) {}
2271 function MyCompFunc ( in MyPort par_1, out MyPort par_2 ) {}
2272 external function MyExtFunc ( in MyPort par_1, out MyPort par_2 );
2273}
2274<END_MODULE>
2275<RESULT IF_PASS COUNT 6>
2276(?im)\berror\b.+?Port.+?cannot.+?used.+?value
2277<END_RESULT>
2278<RESULT IF_PASS COUNT 3>
2279(?im)\berror\b.+?Port.+?cannot.+?used.+?out.+?value
2280<END_RESULT>
2281<RESULT IF_PASS COUNT 6>
2282(?is)\berror:
2283<END_RESULT>
2284<RESULT IF_PASS POSITIVE>
2285(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
2286<END_RESULT>
2287
2288<END_TC>
2289:exmp.
2290
2291.*---------------------------------------------------------------------*
2292:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function: timer with in/out
2293.*---------------------------------------------------------------------*
2294:xmp tab=0.
2295<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function: timer with in/out>
2296
2297<COMPILE>
2298<VERDICT_LEAF PASS>
2299<MODULE TTCN ModuleA ModuleA.ttcn>
2300module ModuleA {
2301 type component MyCT {}
2302 function MyFunc ( in timer par_1, out timer par_2 ) {}
2303 function MyCompFunc ( in timer par_1, out timer par_2 ) {}
2304 external function MyExtFunc ( in timer par_1, out timer par_2 );
2305}
2306<END_MODULE>
2307<RESULT IF_PASS COUNT 6>
2308(?im)\berror\b.+?syntax.+?error
2309<END_RESULT>
2310<RESULT IF_PASS COUNT 6>
2311(?is)\berror:
2312<END_RESULT>
2313
2314<END_TC>
2315:exmp.
2316
2317.*---------------------------------------------------------------------*
2318:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function: basic type
2319.*---------------------------------------------------------------------*
2320:xmp tab=0.
2321<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function: basic type>
2322
2323<COMPILE>
2324<VERDICT_LEAF PASS>
2325<MODULE TTCN ModuleA ModuleA.ttcn>
2326module ModuleA {
2327 function MyFunc (
2328 integer par_1, // basic type
2329 in integer par_2,
2330 out integer par_3,
2331 inout integer par_4 ) {
2332 var integer temp := par_1;
2333 par_1 := par_2;
2334 par_2 := par_3;
2335 par_3 := par_4;
2336 par_4 := temp;
2337 }
2338 control {
2339 var integer var_1 := 1;
2340 var integer var_2 := 2;
2341 var integer var_3 := 3;
2342 var integer var_4 := 4;
2343 var integer var_11, var_22, var_33, var_44;
2344 MyFunc( var_1, var_2, var_3, var_4); // good
2345 MyFunc( var_11, var_22, var_33, var_44); // good
2346 MyFunc( 1, 2, var_3, var_4); // good
2347 MyFunc( 1, 2, 3, 4); // error
2348 }
2349}
2350<END_MODULE>
2351<RESULT IF_PASS COUNT 2>
2352(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
2353<END_RESULT>
2354<RESULT IF_PASS COUNT 1>
2355(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
2356<END_RESULT>
2357<RESULT IF_PASS COUNT 2>
2358(?is)\berror:
2359<END_RESULT>
2360<RESULT IF_PASS POSITIVE>
2361(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
2362<END_RESULT>
2363
2364<END_TC>
2365:exmp.
2366
2367.*---------------------------------------------------------------------*
2368:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function: basic type as non-mandatory parameter
2369.*---------------------------------------------------------------------*
2370:xmp tab=0.
2371<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function: basic type as non-mandatory parameter>
2372
2373<COMPILE>
2374<VERDICT_LEAF PASS>
2375<MODULE TTCN ModuleA ModuleA.ttcn>
2376module ModuleA {
2377 function MyFunc (
2378 integer par_1 := 1, // basic type
2379 in integer par_2 := 1,
2380 out integer par_3 := 1,
2381 inout integer par_4 := 1 ) {
2382 }
2383}
2384<END_MODULE>
2385<RESULT IF_PASS COUNT 2>
2386(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
2387<END_RESULT>
2388<RESULT IF_PASS COUNT 1>
2389(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
2390<END_RESULT>
2391<RESULT IF_PASS COUNT 2>
2392(?is)\berror:
2393<END_RESULT>
2394<RESULT IF_PASS POSITIVE>
2395(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
2396<END_RESULT>
2397
2398<END_TC>
2399:exmp.
2400
2401.*---------------------------------------------------------------------*
2402:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: basic type
2403.*---------------------------------------------------------------------*
2404:xmp tab=0.
2405<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: basic type>
2406
2407<COMPILE>
2408<VERDICT_LEAF PASS>
2409<MODULE TTCN ModuleA ModuleA.ttcn>
2410module ModuleA {
2411 type component MyCT {}
2412 function MyCompFunc (
2413 integer par_1, // basic type
2414 in integer par_2,
2415 out integer par_3,
2416 inout integer par_4 ) runs on MyCT {
2417 var integer temp := par_1;
2418 par_1 := par_2;
2419 par_2 := par_3;
2420 par_3 := par_4;
2421 par_4 := temp;
2422 }
2423 function MyTempFunc () runs on MyCT {
2424 var integer var_1 := 1;
2425 var integer var_2 := 2;
2426 var integer var_3 := 3;
2427 var integer var_4 := 4;
2428 var integer var_11, var_22, var_33, var_44;
2429 MyCompFunc( var_1, var_2, var_3, var_4); // good
2430 MyCompFunc( var_11, var_22, var_33, var_44); // good
2431 MyCompFunc( 1, 2, var_3, var_4); // good
2432 MyCompFunc( 1, 2, 3, 4); // error
2433 }
2434}
2435<END_MODULE>
2436<RESULT IF_PASS COUNT 2>
2437(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
2438<END_RESULT>
2439<RESULT IF_PASS COUNT 1>
2440(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
2441<END_RESULT>
2442<RESULT IF_PASS COUNT 2>
2443(?is)\berror:
2444<END_RESULT>
2445<RESULT IF_PASS POSITIVE>
2446(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
2447<END_RESULT>
2448
2449<END_TC>
2450:exmp.
2451
2452.*---------------------------------------------------------------------*
2453:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: basic type
2454.*---------------------------------------------------------------------*
2455:xmp tab=0.
2456<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: basic type>
2457
2458<COMPILE>
2459<VERDICT_LEAF PASS>
2460<MODULE TTCN ModuleA ModuleA.ttcn>
2461module ModuleA {
2462 external function MyExtFunc (
2463 integer par_1, // basic type
2464 in integer par_2,
2465 out integer par_3,
2466 inout integer par_4 );
2467 control {
2468 var integer var_1 := 1;
2469 var integer var_2 := 2;
2470 var integer var_3 := 3;
2471 var integer var_4 := 4;
2472 var integer var_11, var_22, var_33, var_44;
2473 MyExtFunc( var_1, var_2, var_3, var_4); // good
2474 MyExtFunc( var_11, var_22, var_33, var_44); // good
2475 MyExtFunc( 1, 2, var_3, var_4); // good
2476 MyExtFunc( 1, 2, 3, 4); // error
2477 }
2478}
2479<END_MODULE>
2480<RESULT IF_PASS COUNT 2>
2481(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
2482<END_RESULT>
2483<RESULT IF_PASS COUNT 1>
2484(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
2485<END_RESULT>
2486<RESULT IF_PASS COUNT 2>
2487(?is)\berror:
2488<END_RESULT>
2489<RESULT IF_PASS POSITIVE>
2490(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
2491<END_RESULT>
2492
2493<END_TC>
2494:exmp.
2495
2496.*---------------------------------------------------------------------*
2497:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: basic type as non-mandatory parameter
2498.*---------------------------------------------------------------------*
2499:xmp tab=0.
2500<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: basic type as non-mandatory parameter>
2501
2502<COMPILE>
2503<VERDICT_LEAF PASS>
2504<MODULE TTCN ModuleA ModuleA.ttcn>
2505module ModuleA {
2506 external function MyExtFunc (
2507 integer par_1 := 1, // basic type
2508 in integer par_2 := 1,
2509 out integer par_3 := 1,
2510 inout integer par_4 := 1 );
2511}
2512<END_MODULE>
2513<RESULT IF_PASS COUNT 2>
2514(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
2515<END_RESULT>
2516<RESULT IF_PASS COUNT 1>
2517(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
2518<END_RESULT>
2519<RESULT IF_PASS COUNT 2>
2520(?is)\berror:
2521<END_RESULT>
2522<RESULT IF_PASS POSITIVE>
2523(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
2524<END_RESULT>
2525
2526<END_TC>
2527:exmp.
2528
2529.*---------------------------------------------------------------------*
2530:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function: basic string type
2531.*---------------------------------------------------------------------*
2532:xmp tab=0.
2533<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function: basic string type>
2534
2535<COMPILE>
2536<VERDICT_LEAF PASS>
2537<MODULE TTCN ModuleA ModuleA.ttcn>
2538module ModuleA {
2539 function MyFunc (
2540 charstring par_1, // basic string type
2541 in charstring par_2,
2542 out charstring par_3,
2543 inout charstring par_4 ) {
2544 var charstring temp := par_1;
2545 par_1 := par_2;
2546 par_2 := par_3;
2547 par_3 := par_4;
2548 par_4 := temp;
2549 }
2550 control {
2551 var charstring var_1 := "q";
2552 var charstring var_2 := "w";
2553 var charstring var_3 := "e";
2554 var charstring var_4 := "r";
2555 var charstring var_11, var_22, var_33, var_44;
2556 MyFunc( var_1, var_2, var_3, var_4); // good
2557 MyFunc( var_11, var_22, var_33, var_44); // good
2558 MyFunc( "w", "e", var_3, var_4); // good
2559 MyFunc( "q", "b", "5", "w"); // error
2560 }
2561}
2562<END_MODULE>
2563<RESULT IF_PASS COUNT 2>
2564(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
2565<END_RESULT>
2566<RESULT IF_PASS COUNT 1>
2567(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
2568<END_RESULT>
2569<RESULT IF_PASS COUNT 2>
2570(?is)\berror:
2571<END_RESULT>
2572<RESULT IF_PASS POSITIVE>
2573(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
2574<END_RESULT>
2575
2576<END_TC>
2577:exmp.
2578
2579.*---------------------------------------------------------------------*
2580:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: basic string type
2581.*---------------------------------------------------------------------*
2582:xmp tab=0.
2583<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: basic string type>
2584
2585<COMPILE>
2586<VERDICT_LEAF PASS>
2587<MODULE TTCN ModuleA ModuleA.ttcn>
2588module ModuleA {
2589 type component MyCT {}
2590 function MyCompFunc (
2591 charstring par_1, // basic string type
2592 in charstring par_2,
2593 out charstring par_3,
2594 inout charstring par_4 ) runs on MyCT {
2595 var charstring temp := par_1;
2596 par_1 := par_2;
2597 par_2 := par_3;
2598 par_3 := par_4;
2599 par_4 := temp;
2600 }
2601 function MyTempFunc () runs on MyCT {
2602 var charstring var_1 := "q";
2603 var charstring var_2 := "w";
2604 var charstring var_3 := "e";
2605 var charstring var_4 := "r";
2606 var charstring var_11, var_22, var_33, var_44;
2607 MyCompFunc( var_1, var_2, var_3, var_4); // good
2608 MyCompFunc( var_11, var_22, var_33, var_44); // good
2609 MyCompFunc( "w", "e", var_3, var_4); // good
2610 MyCompFunc( "q", "b", "5", "w"); // error
2611 }
2612}
2613<END_MODULE>
2614<RESULT IF_PASS COUNT 2>
2615(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
2616<END_RESULT>
2617<RESULT IF_PASS COUNT 1>
2618(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
2619<END_RESULT>
2620<RESULT IF_PASS COUNT 2>
2621(?is)\berror:
2622<END_RESULT>
2623<RESULT IF_PASS POSITIVE>
2624(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
2625<END_RESULT>
2626
2627<END_TC>
2628:exmp.
2629
2630.*---------------------------------------------------------------------*
2631:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: basic string type
2632.*---------------------------------------------------------------------*
2633:xmp tab=0.
2634<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: basic string type>
2635
2636<COMPILE>
2637<VERDICT_LEAF PASS>
2638<MODULE TTCN ModuleA ModuleA.ttcn>
2639module ModuleA {
2640 external function MyExtFunc (
2641 charstring par_1, // basic string type
2642 in charstring par_2,
2643 out charstring par_3,
2644 inout charstring par_4 );
2645 control {
2646 var charstring var_1 := "q";
2647 var charstring var_2 := "w";
2648 var charstring var_3 := "e";
2649 var charstring var_4 := "r";
2650 var charstring var_11, var_22, var_33, var_44;
2651 MyExtFunc( var_1, var_2, var_3, var_4); // good
2652 MyExtFunc( var_11, var_22, var_33, var_44); // good
2653 MyExtFunc( "w", "e", var_3, var_4); // good
2654 MyExtFunc( "q", "b", "5", "w"); // error
2655 }
2656}
2657<END_MODULE>
2658<RESULT IF_PASS COUNT 2>
2659(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
2660<END_RESULT>
2661<RESULT IF_PASS COUNT 1>
2662(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
2663<END_RESULT>
2664<RESULT IF_PASS COUNT 2>
2665(?is)\berror:
2666<END_RESULT>
2667<RESULT IF_PASS POSITIVE>
2668(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
2669<END_RESULT>
2670
2671<END_TC>
2672:exmp.
2673
2674.*---------------------------------------------------------------------*
2675:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function: user-defined type
2676.*---------------------------------------------------------------------*
2677:xmp tab=0.
2678<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function: user-defined type>
2679
2680<COMPILE>
2681<VERDICT_LEAF PASS>
2682<MODULE TTCN ModuleA ModuleA.ttcn>
2683module ModuleA {
2684 type set MySet {
2685 float field1,
2686 boolean field2 optional
2687 }
2688 function MyFunc (
2689 MySet par_1, // user-defined type
2690 in MySet par_2,
2691 out MySet par_3,
2692 inout MySet par_4 ) {
2693 var MySet temp := { field1:=par_1.field1 }
2694 par_1.field1 := par_2.field1;
2695 par_2.field1 := par_3.field1;
2696 par_3.field1 := par_4.field1;
2697 par_4.field1 := temp.field1;
2698 }
2699 control {
2700 var MySet var_1 := { field1:=1.3 };
2701 var MySet var_2 := { field1:=2.5 };
2702 var MySet var_3 := { field1:=3.1 };
2703 var MySet var_4 := { field1:=4.9 };
2704 var MySet var_11, var_22, var_33, var_44;
2705 MyFunc(var_1,var_2,var_3,var_4); // good
2706 MyFunc(var_11,var_22,var_33,var_44); // good
2707 MyFunc( {field1:=1.2, field2:=true}, // good
2708 {field1:=2.5, field2:=true},
2709 var_3,
2710 var_4);
2711 MyFunc( {field1:=1.2, field2:=true}, // error
2712 {field1:=2.5, field2:=true},
2713 {field1:=3.6, field2:=true},
2714 {field1:=4.1, field2:=true});
2715 }
2716}
2717<END_MODULE>
2718<RESULT IF_PASS COUNT 2>
2719(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
2720<END_RESULT>
2721<RESULT IF_PASS COUNT 1>
2722(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
2723<END_RESULT>
2724<RESULT IF_PASS COUNT 2>
2725(?is)\berror:
2726<END_RESULT>
2727<RESULT IF_PASS POSITIVE>
2728(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
2729<END_RESULT>
2730
2731<END_TC>
2732:exmp.
2733
2734.*---------------------------------------------------------------------*
2735:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: user-defined type
2736.*---------------------------------------------------------------------*
2737:xmp tab=0.
2738<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: user-defined type>
2739
2740<COMPILE>
2741<VERDICT_LEAF PASS>
2742<MODULE TTCN ModuleA ModuleA.ttcn>
2743module ModuleA {
2744 type component MyCT {}
2745 type set MySet {
2746 float field1,
2747 boolean field2 optional
2748 }
2749 function MyCompFunc (
2750 MySet par_1, // user-defined type
2751 in MySet par_2,
2752 out MySet par_3,
2753 inout MySet par_4 ) runs on MyCT {
2754 var MySet temp := { field1:=par_1.field1 }
2755 par_1.field1 := par_2.field1;
2756 par_2.field1 := par_3.field1;
2757 par_3.field1 := par_4.field1;
2758 par_4.field1 := temp.field1;
2759 }
2760 function MyTempFunc () runs on MyCT {
2761 var MySet var_1 := { field1:=1.3 };
2762 var MySet var_2 := { field1:=2.5 };
2763 var MySet var_3 := { field1:=3.1 };
2764 var MySet var_4 := { field1:=4.9 };
2765 var MySet var_11, var_22, var_33, var_44;
2766 MyCompFunc(var_1,var_2,var_3,var_4); // good
2767 MyCompFunc(var_11,var_22,var_33,var_44); // good
2768 MyCompFunc( {field1:=1.2, field2:=true}, // good
2769 {field1:=2.5, field2:=true},
2770 var_3,
2771 var_4);
2772 MyCompFunc( {field1:=1.2, field2:=true}, // error
2773 {field1:=2.5, field2:=true},
2774 {field1:=3.6, field2:=true},
2775 {field1:=4.1, field2:=true});
2776 }
2777}
2778<END_MODULE>
2779<RESULT IF_PASS COUNT 2>
2780(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
2781<END_RESULT>
2782<RESULT IF_PASS COUNT 1>
2783(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
2784<END_RESULT>
2785<RESULT IF_PASS COUNT 2>
2786(?is)\berror:
2787<END_RESULT>
2788<RESULT IF_PASS POSITIVE>
2789(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
2790<END_RESULT>
2791
2792<END_TC>
2793:exmp.
2794
2795.*---------------------------------------------------------------------*
2796:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: user-defined type
2797.*---------------------------------------------------------------------*
2798:xmp tab=0.
2799<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: user-defined type>
2800
2801<COMPILE>
2802<VERDICT_LEAF PASS>
2803<MODULE TTCN ModuleA ModuleA.ttcn>
2804module ModuleA {
2805 type set MySet {
2806 float field1,
2807 boolean field2 optional
2808 }
2809 external function MyExtFunc (
2810 MySet par_1, // user-defined type
2811 in MySet par_2,
2812 out MySet par_3,
2813 inout MySet par_4 );
2814 control {
2815 var MySet var_1 := { field1:=1.3 };
2816 var MySet var_2 := { field1:=2.5 };
2817 var MySet var_3 := { field1:=3.1 };
2818 var MySet var_4 := { field1:=4.9 };
2819 var MySet var_11, var_22, var_33, var_44;
2820 MyExtFunc(var_1,var_2,var_3,var_4); // good
2821 MyExtFunc(var_11,var_22,var_33,var_44); // good
2822 MyExtFunc( {field1:=1.2, field2:=true}, // good
2823 {field1:=2.5, field2:=true},
2824 var_3,
2825 var_4);
2826 MyExtFunc( {field1:=1.2, field2:=true}, // error
2827 {field1:=2.5, field2:=true},
2828 {field1:=3.6, field2:=true},
2829 {field1:=4.1, field2:=true});
2830 }
2831}
2832<END_MODULE>
2833<RESULT IF_PASS COUNT 2>
2834(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
2835<END_RESULT>
2836<RESULT IF_PASS COUNT 1>
2837(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
2838<END_RESULT>
2839<RESULT IF_PASS COUNT 2>
2840(?is)\berror:
2841<END_RESULT>
2842<RESULT IF_PASS POSITIVE>
2843(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
2844<END_RESULT>
2845
2846<END_TC>
2847:exmp.
2848
2849.*---------------------------------------------------------------------*
2850:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function: address type
2851.*---------------------------------------------------------------------*
2852:xmp tab=0.
2853<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function: address type>
2854
2855<COMPILE>
2856<VERDICT_LEAF PASS>
2857<MODULE TTCN ModuleA ModuleA.ttcn>
2858module ModuleA {
2859 type record address { integer field }
2860 function MyFunc (
2861 address par_1, // address type
2862 in address par_2,
2863 out address par_3,
2864 inout address par_4 ) {
2865 var address temp := { field:=par_1.field };
2866 par_1.field := par_2.field;
2867 par_2.field := par_3.field;
2868 par_3.field := par_4.field;
2869 par_4.field := temp.field;
2870 }
2871 control {
2872 var address var_1 := { field:=1 };
2873 var address var_2 := { field:=2 };
2874 var address var_3 := { field:=3 };
2875 var address var_4 := { field:=4 };
2876 var address var_11, var_22, var_33, var_44;
2877 MyFunc( {1}, {2}, var_3, var_4 ); // good
2878 MyFunc( var_1, var_2, var_3, var_4 ); // good
2879 MyFunc( var_11, var_22, var_33, var_44 ); // good
2880 MyFunc( {1}, {2}, {3}, {4} ); // error
2881 }
2882}
2883<END_MODULE>
2884<RESULT IF_PASS COUNT 2>
2885(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
2886<END_RESULT>
2887<RESULT IF_PASS COUNT 1>
2888(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
2889<END_RESULT>
2890<RESULT IF_PASS COUNT 2>
2891(?is)\berror:
2892<END_RESULT>
2893<RESULT IF_PASS POSITIVE>
2894(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
2895<END_RESULT>
2896
2897<END_TC>
2898:exmp.
2899
2900.*---------------------------------------------------------------------*
2901:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: address type
2902.*---------------------------------------------------------------------*
2903:xmp tab=0.
2904<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: address type>
2905
2906<COMPILE>
2907<VERDICT_LEAF PASS>
2908<MODULE TTCN ModuleA ModuleA.ttcn>
2909module ModuleA {
2910 type component MyCT {}
2911 type record address { integer field }
2912 function MyCompFunc (
2913 address par_1, // address type
2914 in address par_2,
2915 out address par_3,
2916 inout address par_4 ) runs on MyCT {
2917 var address temp := { field:=par_1.field };
2918 par_1.field := par_2.field;
2919 par_2.field := par_3.field;
2920 par_3.field := par_4.field;
2921 par_4.field := temp.field;
2922 }
2923 function MyTempFunc () runs on MyCT {
2924 var address var_1 := { field:=1 };
2925 var address var_2 := { field:=2 };
2926 var address var_3 := { field:=3 };
2927 var address var_4 := { field:=4 };
2928 var address var_11, var_22, var_33, var_44;
2929 MyCompFunc( {1}, {2}, var_3, var_4 ); // good
2930 MyCompFunc( var_1, var_2, var_3, var_4 ); // good
2931 MyCompFunc( var_11, var_22, var_33, var_44 ); // good
2932 MyCompFunc( {1}, {2}, {3}, {4} ); // error
2933 }
2934}
2935<END_MODULE>
2936<RESULT IF_PASS COUNT 2>
2937(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
2938<END_RESULT>
2939<RESULT IF_PASS COUNT 1>
2940(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
2941<END_RESULT>
2942<RESULT IF_PASS COUNT 2>
2943(?is)\berror:
2944<END_RESULT>
2945<RESULT IF_PASS POSITIVE>
2946(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
2947<END_RESULT>
2948
2949<END_TC>
2950:exmp.
2951
2952.*---------------------------------------------------------------------*
2953:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: address type
2954.*---------------------------------------------------------------------*
2955:xmp tab=0.
2956<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: address type>
2957
2958<COMPILE>
2959<VERDICT_LEAF PASS>
2960<MODULE TTCN ModuleA ModuleA.ttcn>
2961module ModuleA {
2962 type record address { integer field }
2963 external function MyExtFunc (
2964 address par_1, // address type
2965 in address par_2,
2966 out address par_3,
2967 inout address par_4 );
2968 control {
2969 var address var_1 := { field:=1 };
2970 var address var_2 := { field:=2 };
2971 var address var_3 := { field:=3 };
2972 var address var_4 := { field:=4 };
2973 var address var_11, var_22, var_33, var_44;
2974 MyExtFunc( {1}, {2}, var_3, var_4 ); // good
2975 MyExtFunc( var_1, var_2, var_3, var_4 ); // good
2976 MyExtFunc( var_11, var_22, var_33, var_44 ); // good
2977 MyExtFunc( {1}, {2}, {3}, {4} ); // error
2978 }
2979}
2980<END_MODULE>
2981<RESULT IF_PASS COUNT 2>
2982(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
2983<END_RESULT>
2984<RESULT IF_PASS COUNT 1>
2985(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
2986<END_RESULT>
2987<RESULT IF_PASS COUNT 2>
2988(?is)\berror:
2989<END_RESULT>
2990<RESULT IF_PASS POSITIVE>
2991(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
2992<END_RESULT>
2993
2994<END_TC>
2995:exmp.
2996
2997.*---------------------------------------------------------------------*
2998:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function: template
2999.*---------------------------------------------------------------------*
3000:xmp tab=0.
3001<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function: template>
3002
3003<COMPILE>
3004<VERDICT_LEAF PASS>
3005<MODULE TTCN ModuleA ModuleA.ttcn>
3006module ModuleA {
3007 function MyFunc (
3008 template float par_1, // template
3009 in template float par_2,
3010 out template float par_3,
3011 inout template float par_4 ) {
3012 var float temp;
3013 temp := valueof ( par_1 );
3014 temp := valueof ( par_2 );
3015 temp := valueof ( par_3 );
3016 temp := valueof ( par_4 );
3017 par_1 := par_2;
3018 par_2 := par_3;
3019 par_3 := par_4;
3020 par_4 := temp;
3021 }
3022 control {
3023 var float var_1 := 1.3;
3024 var float var_2 := 2.5;
3025 var float var_3 := 3.1;
3026 var float var_4 := 4.9;
3027 var template float var_11, var_22, var_33, var_44;
3028
3029 MyFunc( 1.1, 2.8, var_33, var_44); // good
3030 MyFunc( var_11, var_22, var_33, var_44); // good
3031 MyFunc( var_1, var_2, var_3, var_4); // error
3032 MyFunc( 1.1, 2.8, 3.53, 4.94); // error
3033 }
3034}
3035<END_MODULE>
3036<RESULT IF_PASS COUNT 4>
3037(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
3038<END_RESULT>
3039<RESULT IF_PASS COUNT 2>
3040(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
3041<END_RESULT>
3042<RESULT IF_PASS COUNT 4>
3043(?is)\berror:
3044<END_RESULT>
3045<RESULT IF_PASS POSITIVE>
3046(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
3047<END_RESULT>
3048
3049<END_TC>
3050:exmp.
3051
3052.*---------------------------------------------------------------------*
3053:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: template
3054.*---------------------------------------------------------------------*
3055:xmp tab=0.
3056<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: template>
3057
3058<COMPILE>
3059<VERDICT_LEAF PASS>
3060<MODULE TTCN ModuleA ModuleA.ttcn>
3061module ModuleA {
3062 type component MyCT {}
3063 function MyCompFunc (
3064 template float par_1, // template
3065 in template float par_2,
3066 out template float par_3,
3067 inout template float par_4 ) runs on MyCT {
3068 var float temp;
3069 temp := valueof ( par_1 );
3070 temp := valueof ( par_2 );
3071 temp := valueof ( par_3 );
3072 temp := valueof ( par_4 );
3073 par_1 := par_2;
3074 par_2 := par_3;
3075 par_3 := par_4;
3076 par_4 := temp;
3077 }
3078 function MyTempFunc () runs on MyCT {
3079 var float var_1 := 1.3;
3080 var float var_2 := 2.5;
3081 var float var_3 := 3.1;
3082 var float var_4 := 4.9;
3083 var template float var_11, var_22, var_33, var_44;
3084
3085 MyCompFunc( 1.1, 2.8, var_33, var_44); // good
3086 MyCompFunc( var_11, var_22, var_33, var_44); // good
3087 MyCompFunc( var_1, var_2, var_3, var_4); // error
3088 MyCompFunc( 1.1, 2.8, 3.53, 4.94); // error
3089 }
3090}
3091<END_MODULE>
3092<RESULT IF_PASS COUNT 4>
3093(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
3094<END_RESULT>
3095<RESULT IF_PASS COUNT 2>
3096(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
3097<END_RESULT>
3098<RESULT IF_PASS COUNT 4>
3099(?is)\berror:
3100<END_RESULT>
3101<RESULT IF_PASS POSITIVE>
3102(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
3103<END_RESULT>
3104
3105<END_TC>
3106:exmp.
3107
3108.*---------------------------------------------------------------------*
3109:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: template
3110.*---------------------------------------------------------------------*
3111:xmp tab=0.
3112<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: template>
3113
3114<COMPILE>
3115<VERDICT_LEAF PASS>
3116<MODULE TTCN ModuleA ModuleA.ttcn>
3117module ModuleA {
3118 external function MyExtFunc (
3119 template float par_1, // template
3120 in template float par_2,
3121 out template float par_3,
3122 inout template float par_4 );
3123 control {
3124 var float var_1 := 1.3;
3125 var float var_2 := 2.5;
3126 var float var_3 := 3.1;
3127 var float var_4 := 4.9;
3128 var template float var_11, var_22, var_33, var_44;
3129
3130 MyExtFunc( 1.1, 2.8, var_33, var_44); // good
3131 MyExtFunc( var_11, var_22, var_33, var_44); // good
3132 MyExtFunc( var_1, var_2, var_3, var_4); // error
3133 MyExtFunc( 1.1, 2.8, 3.53, 4.94); // error
3134 }
3135}
3136<END_MODULE>
3137<RESULT IF_PASS COUNT 4>
3138(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
3139<END_RESULT>
3140<RESULT IF_PASS COUNT 2>
3141(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
3142<END_RESULT>
3143<RESULT IF_PASS COUNT 4>
3144(?is)\berror:
3145<END_RESULT>
3146<RESULT IF_PASS POSITIVE>
3147(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
3148<END_RESULT>
3149
3150<END_TC>
3151:exmp.
3152
3153.*---------------------------------------------------------------------*
3154:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function: component type
3155.*---------------------------------------------------------------------*
3156:xmp tab=0.
3157<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function: component type>
3158
3159<COMPILE>
3160<VERDICT_LEAF PASS>
3161<MODULE TTCN ModuleA ModuleA.ttcn>
3162module ModuleA {
3163 type component MyCT {}
3164 function MyFunc (
3165 MyCT par_1, // component type
3166 in MyCT par_2,
3167 out MyCT par_3,
3168 inout MyCT par_4 ) {
3169 var MyCT temp := par_1;
3170 par_1 := par_2;
3171 par_2 := par_3;
3172 par_3 := par_4;
3173 par_4 := temp;
3174 }
3175 function MyCompFunc () runs on MyCT {
3176 var MyCT temp, var_1, var_2, var_3, var_4;
3177 temp := MyCT.create;
3178 MyFunc( var_1, var_2, var_3, var_4 ); // good
3179 MyFunc( temp, temp, temp, temp); // good
3180 MyFunc( MyCT.create, MyCT.create, temp, temp ); // good
3181 MyFunc( MyCT.create, MyCT.create, MyCT.create, MyCT.create ); // error
3182 }
3183}
3184<END_MODULE>
3185<RESULT IF_PASS COUNT 2>
3186(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
3187<END_RESULT>
3188<RESULT IF_PASS COUNT 1>
3189(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
3190<END_RESULT>
3191<RESULT IF_PASS COUNT 2>
3192(?is)\berror:
3193<END_RESULT>
3194<RESULT IF_PASS POSITIVE>
3195(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
3196<END_RESULT>
3197
3198<END_TC>
3199:exmp.
3200
3201.*---------------------------------------------------------------------*
3202:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: component type
3203.*---------------------------------------------------------------------*
3204:xmp tab=0.
3205<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: component type>
3206
3207<COMPILE>
3208<VERDICT_LEAF PASS>
3209<MODULE TTCN ModuleA ModuleA.ttcn>
3210module ModuleA {
3211 type component MyCT {}
3212 function MyCompFunc (
3213 MyCT par_1, // component type
3214 in MyCT par_2,
3215 out MyCT par_3,
3216 inout MyCT par_4 ) runs on MyCT {
3217 var MyCT temp := par_1;
3218 par_1 := par_2;
3219 par_2 := par_3;
3220 par_3 := par_4;
3221 par_4 := temp;
3222 }
3223 function MyTempFunc () runs on MyCT {
3224 var MyCT temp, var_1, var_2, var_3, var_4;
3225 temp := MyCT.create;
3226 MyCompFunc( var_1, var_2, var_3, var_4 ); // good
3227 MyCompFunc( temp, temp, temp, temp); // good
3228 MyCompFunc( MyCT.create, MyCT.create, temp, temp ); // good
3229 MyCompFunc( MyCT.create, MyCT.create, MyCT.create, MyCT.create ); // error
3230 }
3231}
3232<END_MODULE>
3233<RESULT IF_PASS COUNT 2>
3234(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
3235<END_RESULT>
3236<RESULT IF_PASS COUNT 1>
3237(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
3238<END_RESULT>
3239<RESULT IF_PASS COUNT 2>
3240(?is)\berror:
3241<END_RESULT>
3242<RESULT IF_PASS POSITIVE>
3243(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
3244<END_RESULT>
3245
3246<END_TC>
3247:exmp.
3248
3249.*---------------------------------------------------------------------*
3250:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: component type
3251.*---------------------------------------------------------------------*
3252:xmp tab=0.
3253<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: component type>
3254
3255<COMPILE>
3256<VERDICT_LEAF PASS>
3257<MODULE TTCN ModuleA ModuleA.ttcn>
3258module ModuleA {
3259 type component MyCT {}
3260 external function MyExtFunc (
3261 MyCT par_1, // component type
3262 in MyCT par_2,
3263 out MyCT par_3,
3264 inout MyCT par_4 );
3265 function MyTempFunc () runs on MyCT {
3266 var MyCT temp, var_1, var_2, var_3, var_4;
3267 temp := MyCT.create;
3268 MyExtFunc( var_1, var_2, var_3, var_4 ); // good
3269 MyExtFunc( temp, temp, temp, temp); // good
3270 MyExtFunc( MyCT.create, MyCT.create, temp, temp ); // good
3271 MyExtFunc( MyCT.create, MyCT.create, MyCT.create, MyCT.create ); // error
3272 }
3273}
3274<END_MODULE>
3275<RESULT IF_PASS COUNT 2>
3276(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
3277<END_RESULT>
3278<RESULT IF_PASS COUNT 1>
3279(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
3280<END_RESULT>
3281<RESULT IF_PASS COUNT 2>
3282(?is)\berror:
3283<END_RESULT>
3284<RESULT IF_PASS POSITIVE>
3285(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
3286<END_RESULT>
3287
3288<END_TC>
3289:exmp.
3290
3291.*---------------------------------------------------------------------*
3292:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function: port type
3293.*---------------------------------------------------------------------*
3294:xmp tab=0.
3295<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function: port type>
3296
3297<COMPILE>
3298<VERDICT_LEAF PASS>
3299<MODULE TTCN ModuleA ModuleA.ttcn>
3300module ModuleA {
3301 type port MyPort message { inout charstring; } // port type
3302 type component MyCT {
3303 port MyPort port_1;
3304 port MyPort port_2;
3305 }
3306 function MyFunc ( MyPort par_1, inout MyPort par_2 ) {
3307 par_1 := par_2;
3308 par_2 := par_1;
3309 }
3310 function MyCompFunc ( MyPort par_1, inout MyPort par_2 ) runs on MyCT {
3311 port_1 := par_1;
3312 par_1 := par_2;
3313 par_2 := port_1;
3314 }
3315 external function MyExtFunc ( MyPort par_1, inout MyPort par_2 );
3316 function MyTempFunc ( MyPort par_1, inout MyPort par_2 ) runs on MyCT {
3317 MyFunc( port_1, port_2 );
3318 MyCompFunc( port_1, port_2 );
3319 MyExtFunc( port_1, port_2 );
3320 }
3321}
3322<END_MODULE>
3323<RESULT IF_PASS COUNT 1>
3324(?im)\berror\b.+?Reference.+?expected.+?instead of.+?port_1
3325<END_RESULT>
3326<RESULT IF_PASS COUNT 2>
3327(?im)\berror\b.+?Reference.+?expected.+?instead of.+?par_1
3328<END_RESULT>
3329<RESULT IF_PASS COUNT 2>
3330(?im)\berror\b.+?Reference.+?expected.+?instead of.+?par_2
3331<END_RESULT>
3332<RESULT IF_PASS COUNT 5>
3333(?is)\berror:
3334<END_RESULT>
3335<RESULT IF_PASS POSITIVE>
3336(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
3337<END_RESULT>
3338
3339<END_TC>
3340:exmp.
3341
3342.*---------------------------------------------------------------------*
3343:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function: default
3344.*---------------------------------------------------------------------*
3345:xmp tab=0.
3346<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function: default>
3347
3348<COMPILE>
3349<VERDICT_LEAF PASS>
3350<MODULE TTCN ModuleA ModuleA.ttcn>
3351module ModuleA {
3352 function MyFunc (
3353 default par_1, // default
3354 in default par_2,
3355 out default par_3,
3356 inout default par_4 ) {
3357 var default temp := par_1;
3358 par_1 := par_2;
3359 par_2 := par_3;
3360 par_3 := par_4;
3361 par_4 := temp;
3362 }
3363 control {
3364 var default var_1, var_2, var_3, var_4;
3365 var default temp := null;
3366 MyFunc( var_1, var_2, var_3, var_4 ); // good
3367 MyFunc( temp, temp, temp, temp); // good
3368 MyFunc( null, null, temp, temp); // good
3369 MyFunc( null, null, null, null); // error
3370 }
3371}
3372<END_MODULE>
3373<RESULT IF_PASS COUNT 2>
3374(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
3375<END_RESULT>
3376<RESULT IF_PASS COUNT 1>
3377(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
3378<END_RESULT>
3379<RESULT IF_PASS COUNT 2>
3380(?is)\berror:
3381<END_RESULT>
3382<RESULT IF_PASS POSITIVE>
3383(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
3384<END_RESULT>
3385
3386<END_TC>
3387:exmp.
3388
3389.*---------------------------------------------------------------------*
3390:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: default
3391.*---------------------------------------------------------------------*
3392:xmp tab=0.
3393<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: default>
3394
3395<COMPILE>
3396<VERDICT_LEAF PASS>
3397<MODULE TTCN ModuleA ModuleA.ttcn>
3398module ModuleA {
3399 type component MyCT {}
3400 function MyCompFunc (
3401 default par_1, // default type
3402 in default par_2,
3403 out default par_3,
3404 inout default par_4 ) runs on MyCT {
3405 var default temp := par_1;
3406 par_1 := par_2;
3407 par_2 := par_3;
3408 par_3 := par_4;
3409 par_4 := temp;
3410 }
3411 function MyTempFunc () runs on MyCT {
3412 var default var_1, var_2, var_3, var_4;
3413 var default temp := null;
3414 MyCompFunc( var_1, var_2, var_3, var_4 ); // good
3415 MyCompFunc( temp, temp, temp, temp); // good
3416 MyCompFunc( null, null, temp, temp); // good
3417 MyCompFunc( null, null, null, null); // error
3418 }
3419}
3420<END_MODULE>
3421<RESULT IF_PASS COUNT 2>
3422(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
3423<END_RESULT>
3424<RESULT IF_PASS COUNT 1>
3425(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
3426<END_RESULT>
3427<RESULT IF_PASS COUNT 2>
3428(?is)\berror:
3429<END_RESULT>
3430<RESULT IF_PASS POSITIVE>
3431(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
3432<END_RESULT>
3433
3434<END_TC>
3435:exmp.
3436
3437.*---------------------------------------------------------------------*
3438:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: default
3439.*---------------------------------------------------------------------*
3440:xmp tab=0.
3441<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: default>
3442
3443<COMPILE>
3444<VERDICT_LEAF PASS>
3445<MODULE TTCN ModuleA ModuleA.ttcn>
3446module ModuleA {
3447 external function MyExtFunc (
3448 default par_1, // default type
3449 in default par_2,
3450 out default par_3,
3451 inout default par_4 );
3452 control {
3453 var default var_1, var_2, var_3, var_4;
3454 var default temp := null;
3455 MyExtFunc( var_1, var_2, var_3, var_4 ); // good
3456 MyExtFunc( temp, temp, temp, temp); // good
3457 MyExtFunc( null, null, temp, temp); // good
3458 MyExtFunc( null, null, null, null); // error
3459 }
3460}
3461<END_MODULE>
3462<RESULT IF_PASS COUNT 2>
3463(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
3464<END_RESULT>
3465<RESULT IF_PASS COUNT 1>
3466(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
3467<END_RESULT>
3468<RESULT IF_PASS COUNT 2>
3469(?is)\berror:
3470<END_RESULT>
3471<RESULT IF_PASS POSITIVE>
3472(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
3473<END_RESULT>
3474
3475<END_TC>
3476:exmp.
3477
3478.*---------------------------------------------------------------------*
3479:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function: timer
3480.*---------------------------------------------------------------------*
3481:xmp tab=0.
3482<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function: timer>
3483
3484<COMPILE>
3485<VERDICT_LEAF PASS>
3486<MODULE TTCN ModuleA ModuleA.ttcn>
3487module ModuleA {
3488 type component MyCT {}
3489 function MyFunc ( timer par_1, inout timer par_2 ) {
3490 timer temp := 2.3;
3491 temp := par_1; // error
3492 par_1 := par_2; // error
3493 par_2 := temp; // error
3494 }
3495 control {
3496 timer T1 := 2.9;
3497 timer T2 := 5.7;
3498 timer T3, T4;
3499 MyFunc( T1, T2 ); // good
3500 MyFunc( T3, T4 ); // good
3501 MyFunc( 3.8, 4.5 ); // error
3502 }
3503}
3504<END_MODULE>
3505<RESULT IF_PASS COUNT 1>
3506(?im)\berror\b.+?Reference.+?expected.+?instead of.+?temp
3507<END_RESULT>
3508<RESULT IF_PASS COUNT 1>
3509(?im)\berror\b.+?Reference.+?expected.+?instead of.+?par_1
3510<END_RESULT>
3511<RESULT IF_PASS COUNT 1>
3512(?im)\berror\b.+?Reference.+?expected.+?instead of.+?par_2
3513<END_RESULT>
3514<RESULT IF_PASS COUNT 2>
3515(?im)\berror\b.+?Reference.+?timer.+?expected.+?parameter
3516<END_RESULT>
3517<RESULT IF_PASS COUNT 5>
3518(?is)\berror:
3519<END_RESULT>
3520<RESULT IF_PASS POSITIVE>
3521(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
3522<END_RESULT>
3523
3524<END_TC>
3525:exmp.
3526
3527.*---------------------------------------------------------------------*
3528:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function: timer as non-mandatory parameter
3529.*---------------------------------------------------------------------*
3530:xmp tab=0.
3531<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function: timer as non-mandatory parameter>
3532
3533<COMPILE>
3534<VERDICT_LEAF PASS>
3535<MODULE TTCN ModuleA ModuleA.ttcn>
3536module ModuleA {
3537 function MyFunc (
3538 timer par_1 := 1.0, // basic type
3539 inout timer par_4 := 1.0 ) {};
3540}
3541<END_MODULE>
3542<RESULT IF_PASS COUNT 2>
3543(?im)\berror\b.+?Reference.+?timer.+?expected.+?for.+?parameter
3544<END_RESULT>
3545<RESULT IF_PASS COUNT 2>
3546(?is)\berror:
3547<END_RESULT>
3548<RESULT IF_PASS POSITIVE>
3549(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
3550<END_RESULT>
3551
3552<END_TC>
3553:exmp.
3554
3555.*---------------------------------------------------------------------*
3556:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: timer
3557.*---------------------------------------------------------------------*
3558:xmp tab=0.
3559<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Function_runs_on: timer>
3560
3561<COMPILE>
3562<VERDICT_LEAF PASS>
3563<MODULE TTCN ModuleA ModuleA.ttcn>
3564module ModuleA {
3565 type component MyCT {}
3566 function MyCompFunc ( timer par_1, inout timer par_2 ) runs on MyCT {
3567 timer temp := 2.3;
3568 temp := par_1; // error
3569 par_1 := par_2; // error
3570 par_2 := temp; // error
3571 }
3572 function MyTempFunc () runs on MyCT {
3573 timer T1 := 2.9;
3574 timer T2 := 5.7;
3575 timer T3, T4;
3576 MyCompFunc( T1, T2 ); // good
3577 MyCompFunc( T3, T4 ); // good
3578 MyCompFunc( 3.8, 4.5 ); // error
3579 }
3580}
3581<END_MODULE>
3582<RESULT IF_PASS COUNT 1>
3583(?im)\berror\b.+?Reference.+?expected.+?instead of.+?temp
3584<END_RESULT>
3585<RESULT IF_PASS COUNT 1>
3586(?im)\berror\b.+?Reference.+?expected.+?instead of.+?par_1
3587<END_RESULT>
3588<RESULT IF_PASS COUNT 1>
3589(?im)\berror\b.+?Reference.+?expected.+?instead of.+?par_2
3590<END_RESULT>
3591<RESULT IF_PASS COUNT 2>
3592(?im)\berror\b.+?Reference.+?timer.+?expected.+?parameter
3593<END_RESULT>
3594<RESULT IF_PASS COUNT 5>
3595(?is)\berror:
3596<END_RESULT>
3597<RESULT IF_PASS POSITIVE>
3598(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
3599<END_RESULT>
3600
3601<END_TC>
3602:exmp.
3603
3604.*---------------------------------------------------------------------*
3605:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: timer
3606.*---------------------------------------------------------------------*
3607:xmp tab=0.
3608<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->External Function: timer>
3609
3610<COMPILE>
3611<VERDICT_LEAF PASS>
3612<MODULE TTCN ModuleA ModuleA.ttcn>
3613module ModuleA {
3614 type component MyCT {}
3615 external function MyExtFunc ( timer par_1, inout timer par_2 );
3616 control {
3617 timer T1 := 2.9;
3618 timer T2 := 5.7;
3619 timer T3, T4;
3620 MyExtFunc( T1, T2 ); // good
3621 MyExtFunc( T3, T4 ); // good
3622 MyExtFunc( 3.8, 4.5 ); // error
3623 }
3624}
3625<END_MODULE>
3626<RESULT IF_PASS COUNT 2>
3627(?im)\berror\b.+?Reference.+?timer.+?expected.+?parameter
3628<END_RESULT>
3629<RESULT IF_PASS COUNT 2>
3630(?is)\berror:
3631<END_RESULT>
3632<RESULT IF_PASS POSITIVE>
3633(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
3634<END_RESULT>
3635
3636<END_TC>
3637:exmp.
3638
3639.*---------------------------------------------------------------------*
3640:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: allowed in/out/inout
3641.*---------------------------------------------------------------------*
3642:xmp tab=0.
3643<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: allowed in/out/inout>
3644
3645<COMPILE>
3646<VERDICT_LEAF PASS>
3647<MODULE TTCN ModuleA ModuleA.ttcn>
3648module ModuleA {
3649 type port MyPort message { inout charstring; }
3650 type component MyCT {}
3651 type set MySet {
3652 float field1,
3653 boolean field2 optional
3654 }
3655 type record address { integer field }
3656 altstep MyAltstep (
3657 integer par_11_1, // basic type
3658 in integer par_12_1,
3659 out integer par_13_1,
3660 inout integer par_14_1,
3661
3662 octetstring par_11_2, // basic string type
3663 in octetstring par_12_2,
3664 out octetstring par_13_2,
3665 inout octetstring par_14_2,
3666
3667 MySet par_21, // user-defined structured type
3668 in MySet par_22,
3669 out MySet par_23,
3670 inout MySet par_24,
3671
3672 address par_31, // address
3673 in address par_32,
3674 out address par_33,
3675 inout address par_34,
3676
3677 template MySet par_41, // template
3678 in template MySet par_42,
3679 out template MySet par_43,
3680 inout template MySet par_44,
3681
3682 MyCT par_51, // component type
3683 in MyCT par_52,
3684 out MyCT par_53,
3685 inout MyCT par_54,
3686
3687 MyPort par_61, // port type
3688 inout MyPort par_64,
3689
3690 default par_71, // default
3691 in default par_72,
3692 out default par_73,
3693 inout default par_74,
3694
3695 timer par_81, // timer
3696 inout timer par_84 ) {
3697 [else] {}
3698 }
3699}
3700<END_MODULE>
3701<RESULT IF_PASS POSITIVE>
3702(?im)\bnotify\b.+?Generating.+?code
3703<END_RESULT>
3704
3705<END_TC>
3706:exmp.
3707
3708.*---------------------------------------------------------------------*
3709:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: allowed in/out/inout
3710.*---------------------------------------------------------------------*
3711:xmp tab=0.
3712<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: allowed in/out/inout>
3713
3714<COMPILE>
3715<VERDICT_LEAF PASS>
3716<MODULE TTCN ModuleA ModuleA.ttcn>
3717module ModuleA {
3718 type port MyPort message { inout charstring; }
3719 type component MyCT {}
3720 type set MySet {
3721 float field1,
3722 boolean field2 optional
3723 }
3724 type record address { integer field }
3725 altstep MyCompAltstep (
3726 integer par_11_1, // basic type
3727 in integer par_12_1,
3728 out integer par_13_1,
3729 inout integer par_14_1,
3730
3731 octetstring par_11_2, // basic string type
3732 in octetstring par_12_2,
3733 out octetstring par_13_2,
3734 inout octetstring par_14_2,
3735
3736 MySet par_21, // user-defined structured type
3737 in MySet par_22,
3738 out MySet par_23,
3739 inout MySet par_24,
3740
3741 address par_31, // address
3742 in address par_32,
3743 out address par_33,
3744 inout address par_34,
3745
3746 template MySet par_41, // template
3747 in template MySet par_42,
3748 out template MySet par_43,
3749 inout template MySet par_44,
3750
3751 MyCT par_51, // component type
3752 in MyCT par_52,
3753 out MyCT par_53,
3754 inout MyCT par_54,
3755
3756 MyPort par_61, // port type
3757 inout MyPort par_64,
3758
3759 default par_71, // default
3760 in default par_72,
3761 out default par_73,
3762 inout default par_74,
3763
3764 timer par_81, // timer
3765 inout timer par_84 ) runs on MyCT {
3766 [else] {}
3767 }
3768}
3769<END_MODULE>
3770<RESULT IF_PASS POSITIVE>
3771(?im)\bnotify\b.+?Generating.+?code
3772<END_RESULT>
3773
3774<END_TC>
3775:exmp.
3776
3777.*---------------------------------------------------------------------*
3778:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: allowed non-mandatory in/out/inout
3779.*---------------------------------------------------------------------*
3780:xmp tab=0.
3781<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: allowed non-mandatory in/out/inout>
3782
3783<COMPILE>
3784<VERDICT_LEAF PASS>
3785<MODULE TTCN ModuleA ModuleA.ttcn>
3786module ModuleA {
3787 type port MyPort message { inout charstring; }
3788 type set MySet {
3789 float field1,
3790 boolean field2 optional
3791 }
3792 type record address { integer field }
3793 type component MyCT {
3794 const integer comp_const_i := 0;
3795 var integer comp_var_i := 0;
3796 const octetstring comp_const_o := '00'O;
3797 var octetstring comp_var_o := '00'O;
3798 const MySet comp_const_set := {field1 := 1.0, field2 := true};
3799 var MySet comp_var_set := {field1 := 1.0, field2 := true};
3800 const address comp_const_address := {5};
3801 var address comp_var_address := {5};
3802 port MyPort comp_port;
3803 timer comp_timer := 1.0;
3804 }
3805 altstep MyCompAltstep (
3806 integer par_11_1 := comp_const_i, // basic type
3807 in integer par_12_1 := comp_const_i,
3808 out integer par_13_1 := comp_var_i,
3809 inout integer par_14_1 := comp_var_i,
3810
3811 octetstring par_11_2 := comp_const_o, // basic string type
3812 in octetstring par_12_2 := comp_const_o,
3813 out octetstring par_13_2 := comp_var_o,
3814 inout octetstring par_14_2 := comp_var_o,
3815
3816 MySet par_21 := comp_const_set, // user-defined structured type
3817 in MySet par_22 := comp_const_set,
3818 out MySet par_23 := comp_var_set,
3819 inout MySet par_24 := comp_var_set,
3820
3821 address par_31 := comp_const_address, // address
3822 in address par_32 := comp_const_address,
3823 out address par_33 := comp_var_address,
3824 inout address par_34 := comp_var_address,
3825
3826 MyPort par_61 := comp_port, // port type
3827 inout MyPort par_64 := comp_port,
3828
3829 timer par_81 := comp_timer, // timer
3830 inout timer par_84 := comp_timer ) runs on MyCT {
3831 [else] {}
3832 }
3833}
3834<END_MODULE>
3835<RESULT IF_PASS POSITIVE>
3836(?im)\bnotify\b.+?Generating.+?code
3837<END_RESULT>
3838
3839<END_TC>
3840:exmp.
3841
3842.*---------------------------------------------------------------------*
3843:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: port type with in/out
3844.*---------------------------------------------------------------------*
3845:xmp tab=0.
3846<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: port type with in/out>
3847
3848<COMPILE>
3849<VERDICT_LEAF PASS>
3850<MODULE TTCN ModuleA ModuleA.ttcn>
3851module ModuleA {
3852 type port MyPort message { inout charstring; }
3853 type component MyCT {}
3854 altstep MyFunc ( in MyPort par_1, out MyPort par_2 ) {
3855 [else] {}
3856 }
3857 altstep MyCompFunc ( in MyPort par_1, out MyPort par_2 ) {
3858 [else] {}
3859 }
3860}
3861<END_MODULE>
3862<RESULT IF_PASS COUNT 4>
3863(?im)\berror\b.+?Port.+?cannot.+?used.+?value
3864<END_RESULT>
3865<RESULT IF_PASS COUNT 2>
3866(?im)\berror\b.+?Port.+?cannot.+?used.+?out.+?value
3867<END_RESULT>
3868<RESULT IF_PASS COUNT 4>
3869(?is)\berror:
3870<END_RESULT>
3871<RESULT IF_PASS POSITIVE>
3872(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
3873<END_RESULT>
3874
3875<END_TC>
3876:exmp.
3877
3878.*---------------------------------------------------------------------*
3879:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: timer with in/out
3880.*---------------------------------------------------------------------*
3881:xmp tab=0.
3882<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: timer with in/out>
3883
3884<COMPILE>
3885<VERDICT_LEAF PASS>
3886<MODULE TTCN ModuleA ModuleA.ttcn>
3887module ModuleA {
3888 type component MyCT {}
3889 altstep MyFunc ( in timer par_1, out timer par_2 ) {
3890 [else] {}
3891 }
3892 altstep MyCompFunc ( in timer par_1, out timer par_2 ) {
3893 [else] {}
3894 }
3895}
3896<END_MODULE>
3897<RESULT IF_PASS COUNT 4>
3898(?im)\berror\b.+?syntax.+?error
3899<END_RESULT>
3900<RESULT IF_PASS COUNT 4>
3901(?is)\berror:
3902<END_RESULT>
3903
3904<END_TC>
3905:exmp.
3906
3907.*---------------------------------------------------------------------*
3908:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: basic type
3909.*---------------------------------------------------------------------*
3910:xmp tab=0.
3911<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: basic type>
3912
3913<COMPILE>
3914<VERDICT_LEAF PASS>
3915<MODULE TTCN ModuleA ModuleA.ttcn>
3916module ModuleA {
3917 altstep MyAltstep (
3918 integer par_1, // basic type
3919 in integer par_2,
3920 out integer par_3,
3921 inout integer par_4 ) {
3922 var integer temp := par_1;
3923 [else] {
3924 par_1 := par_2;
3925 par_2 := par_3;
3926 par_3 := par_4;
3927 par_4 := temp;
3928 }
3929 }
3930 control {
3931 var integer var_1 := 1;
3932 var integer var_2 := 2;
3933 var integer var_3 := 3;
3934 var integer var_4 := 4;
3935 var integer var_11, var_22, var_33, var_44;
3936 MyAltstep( var_1, var_2, var_3, var_4); // good
3937 MyAltstep( var_11, var_22, var_33, var_44); // good
3938 MyAltstep( 1, 2, var_3, var_4); // good
3939 MyAltstep( 1, 2, 3, 4); // error
3940 }
3941}
3942<END_MODULE>
3943<RESULT IF_PASS COUNT 2>
3944(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
3945<END_RESULT>
3946<RESULT IF_PASS COUNT 1>
3947(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
3948<END_RESULT>
3949<RESULT IF_PASS COUNT 2>
3950(?is)\berror:
3951<END_RESULT>
3952<RESULT IF_PASS POSITIVE>
3953(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
3954<END_RESULT>
3955
3956<END_TC>
3957:exmp.
3958
3959.*---------------------------------------------------------------------*
3960:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: basic type as non-mandatory parameter
3961.*---------------------------------------------------------------------*
3962:xmp tab=0.
3963<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: basic type as non-mandatory parameter>
3964
3965<COMPILE>
3966<VERDICT_LEAF PASS>
3967<MODULE TTCN ModuleA ModuleA.ttcn>
3968module ModuleA {
3969 altstep MyAltstep (
3970 integer par_1 := 1, // basic type
3971 in integer par_2 := 1,
3972 out integer par_3 := 1,
3973 inout integer par_4 := 1 ) {
3974 [else] {}
3975 }
3976}
3977<END_MODULE>
3978<RESULT IF_PASS COUNT 2>
3979(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
3980<END_RESULT>
3981<RESULT IF_PASS COUNT 1>
3982(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
3983<END_RESULT>
3984<RESULT IF_PASS COUNT 2>
3985(?is)\berror:
3986<END_RESULT>
3987<RESULT IF_PASS POSITIVE>
3988(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
3989<END_RESULT>
3990
3991<END_TC>
3992:exmp.
3993
3994.*---------------------------------------------------------------------*
3995:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: basic type
3996.*---------------------------------------------------------------------*
3997:xmp tab=0.
3998<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: basic type>
3999
4000<COMPILE>
4001<VERDICT_LEAF PASS>
4002<MODULE TTCN ModuleA ModuleA.ttcn>
4003module ModuleA {
4004 type component MyCT {}
4005 altstep MyCompAltstep (
4006 integer par_1, // basic type
4007 in integer par_2,
4008 out integer par_3,
4009 inout integer par_4 ) runs on MyCT {
4010 var integer temp := par_1;
4011 [else] {
4012 par_1 := par_2;
4013 par_2 := par_3;
4014 par_3 := par_4;
4015 par_4 := temp;
4016 }
4017 }
4018 function MyCompFunc () runs on MyCT {
4019 var integer var_1 := 1;
4020 var integer var_2 := 2;
4021 var integer var_3 := 3;
4022 var integer var_4 := 4;
4023 var integer var_11, var_22, var_33, var_44;
4024 MyCompAltstep( var_1, var_2, var_3, var_4); // good
4025 MyCompAltstep( var_11, var_22, var_33, var_44); // good
4026 MyCompAltstep( 1, 2, var_3, var_4); // good
4027 MyCompAltstep( 1, 2, 3, 4); // error
4028 }
4029}
4030<END_MODULE>
4031<RESULT IF_PASS COUNT 2>
4032(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
4033<END_RESULT>
4034<RESULT IF_PASS COUNT 1>
4035(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
4036<END_RESULT>
4037<RESULT IF_PASS COUNT 2>
4038(?is)\berror:
4039<END_RESULT>
4040<RESULT IF_PASS POSITIVE>
4041(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
4042<END_RESULT>
4043
4044<END_TC>
4045:exmp.
4046
4047.*---------------------------------------------------------------------*
4048:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: basic string type
4049.*---------------------------------------------------------------------*
4050:xmp tab=0.
4051<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: basic string type>
4052
4053<COMPILE>
4054<VERDICT_LEAF PASS>
4055<MODULE TTCN ModuleA ModuleA.ttcn>
4056module ModuleA {
4057 altstep MyAltstep (
4058 charstring par_1, // basic string type
4059 in charstring par_2,
4060 out charstring par_3,
4061 inout charstring par_4 ) {
4062 var charstring temp := par_1;
4063 [else] {
4064 par_1 := par_2;
4065 par_2 := par_3;
4066 par_3 := par_4;
4067 par_4 := temp;
4068 }
4069 }
4070 control {
4071 var charstring var_1 := "q";
4072 var charstring var_2 := "w";
4073 var charstring var_3 := "e";
4074 var charstring var_4 := "r";
4075 var charstring var_11, var_22, var_33, var_44;
4076 MyAltstep( var_1, var_2, var_3, var_4); // good
4077 MyAltstep( var_11, var_22, var_33, var_44); // good
4078 MyAltstep( "w", "e", var_3, var_4); // good
4079 MyAltstep( "q", "b", "5", "w"); // error
4080 }
4081}
4082<END_MODULE>
4083<RESULT IF_PASS COUNT 2>
4084(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
4085<END_RESULT>
4086<RESULT IF_PASS COUNT 1>
4087(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
4088<END_RESULT>
4089<RESULT IF_PASS COUNT 2>
4090(?is)\berror:
4091<END_RESULT>
4092<RESULT IF_PASS POSITIVE>
4093(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
4094<END_RESULT>
4095
4096<END_TC>
4097:exmp.
4098
4099.*---------------------------------------------------------------------*
4100:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: basic string type
4101.*---------------------------------------------------------------------*
4102:xmp tab=0.
4103<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: basic string type>
4104
4105<COMPILE>
4106<VERDICT_LEAF PASS>
4107<MODULE TTCN ModuleA ModuleA.ttcn>
4108module ModuleA {
4109 type component MyCT {}
4110 altstep MyCompAltstep (
4111 charstring par_1, // basic string type
4112 in charstring par_2,
4113 out charstring par_3,
4114 inout charstring par_4 ) runs on MyCT {
4115 var charstring temp := par_1;
4116 [else] {
4117 par_1 := par_2;
4118 par_2 := par_3;
4119 par_3 := par_4;
4120 par_4 := temp;
4121 }
4122 }
4123 function MyCompFunc () runs on MyCT {
4124 var charstring var_1 := "q";
4125 var charstring var_2 := "w";
4126 var charstring var_3 := "e";
4127 var charstring var_4 := "r";
4128 var charstring var_11, var_22, var_33, var_44;
4129 MyCompAltstep( var_1, var_2, var_3, var_4); // good
4130 MyCompAltstep( var_11, var_22, var_33, var_44); // good
4131 MyCompAltstep( "w", "e", var_3, var_4); // good
4132 MyCompAltstep( "q", "b", "5", "w"); // error
4133 }
4134}
4135<END_MODULE>
4136<RESULT IF_PASS COUNT 2>
4137(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
4138<END_RESULT>
4139<RESULT IF_PASS COUNT 1>
4140(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
4141<END_RESULT>
4142<RESULT IF_PASS COUNT 2>
4143(?is)\berror:
4144<END_RESULT>
4145<RESULT IF_PASS POSITIVE>
4146(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
4147<END_RESULT>
4148
4149<END_TC>
4150:exmp.
4151
4152.*---------------------------------------------------------------------*
4153:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: user-defined type
4154.*---------------------------------------------------------------------*
4155:xmp tab=0.
4156<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: user-defined type>
4157
4158<COMPILE>
4159<VERDICT_LEAF PASS>
4160<MODULE TTCN ModuleA ModuleA.ttcn>
4161module ModuleA {
4162 type set MySet {
4163 float field1,
4164 boolean field2 optional
4165 }
4166 altstep MyAltstep (
4167 MySet par_1, // user-defined type
4168 in MySet par_2,
4169 out MySet par_3,
4170 inout MySet par_4 ) {
4171 var MySet temp := { field1:=par_1.field1 }
4172 [else] {
4173 par_1.field1 := par_2.field1;
4174 par_2.field1 := par_3.field1;
4175 par_3.field1 := par_4.field1;
4176 par_4.field1 := temp.field1;
4177 }
4178 }
4179 control {
4180 var MySet var_1 := { field1:=1.3 };
4181 var MySet var_2 := { field1:=2.5 };
4182 var MySet var_3 := { field1:=3.1 };
4183 var MySet var_4 := { field1:=4.9 };
4184 var MySet var_11, var_22, var_33, var_44;
4185 MyAltstep(var_1,var_2,var_3,var_4); // good
4186 MyAltstep(var_11,var_22,var_33,var_44); // good
4187 MyAltstep( {field1:=1.2, field2:=true}, // good
4188 {field1:=2.5, field2:=true},
4189 var_3,
4190 var_4);
4191 MyAltstep( {field1:=1.2, field2:=true}, // error
4192 {field1:=2.5, field2:=true},
4193 {field1:=3.6, field2:=true},
4194 {field1:=4.1, field2:=true});
4195 }
4196}
4197<END_MODULE>
4198<RESULT IF_PASS COUNT 2>
4199(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
4200<END_RESULT>
4201<RESULT IF_PASS COUNT 1>
4202(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
4203<END_RESULT>
4204<RESULT IF_PASS COUNT 2>
4205(?is)\berror:
4206<END_RESULT>
4207<RESULT IF_PASS POSITIVE>
4208(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
4209<END_RESULT>
4210
4211<END_TC>
4212:exmp.
4213
4214.*---------------------------------------------------------------------*
4215:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: user-defined type
4216.*---------------------------------------------------------------------*
4217:xmp tab=0.
4218<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: user-defined type>
4219
4220<COMPILE>
4221<VERDICT_LEAF PASS>
4222<MODULE TTCN ModuleA ModuleA.ttcn>
4223module ModuleA {
4224 type component MyCT {}
4225 type set MySet {
4226 float field1,
4227 boolean field2 optional
4228 }
4229 altstep MyCompAltstep (
4230 MySet par_1, // user-defined type
4231 in MySet par_2,
4232 out MySet par_3,
4233 inout MySet par_4 ) runs on MyCT {
4234 var MySet temp := { field1:=par_1.field1 }
4235 [else] {
4236 par_1.field1 := par_2.field1;
4237 par_2.field1 := par_3.field1;
4238 par_3.field1 := par_4.field1;
4239 par_4.field1 := temp.field1;
4240 }
4241 }
4242 function MyCompFunc () runs on MyCT {
4243 var MySet var_1 := { field1:=1.3 };
4244 var MySet var_2 := { field1:=2.5 };
4245 var MySet var_3 := { field1:=3.1 };
4246 var MySet var_4 := { field1:=4.9 };
4247 var MySet var_11, var_22, var_33, var_44;
4248 MyCompAltstep(var_1,var_2,var_3,var_4); // good
4249 MyCompAltstep(var_11,var_22,var_33,var_44); // good
4250 MyCompAltstep( {field1:=1.2, field2:=true}, // good
4251 {field1:=2.5, field2:=true},
4252 var_3,
4253 var_4);
4254 MyCompAltstep( {field1:=1.2, field2:=true}, // error
4255 {field1:=2.5, field2:=true},
4256 {field1:=3.6, field2:=true},
4257 {field1:=4.1, field2:=true});
4258 }
4259}
4260<END_MODULE>
4261<RESULT IF_PASS COUNT 2>
4262(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
4263<END_RESULT>
4264<RESULT IF_PASS COUNT 1>
4265(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
4266<END_RESULT>
4267<RESULT IF_PASS COUNT 2>
4268(?is)\berror:
4269<END_RESULT>
4270<RESULT IF_PASS POSITIVE>
4271(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
4272<END_RESULT>
4273
4274<END_TC>
4275:exmp.
4276
4277.*---------------------------------------------------------------------*
4278:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: address type
4279.*---------------------------------------------------------------------*
4280:xmp tab=0.
4281<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: address type>
4282
4283<COMPILE>
4284<VERDICT_LEAF PASS>
4285<MODULE TTCN ModuleA ModuleA.ttcn>
4286module ModuleA {
4287 type record address { integer field }
4288 altstep MyAltstep (
4289 address par_1, // address type
4290 in address par_2,
4291 out address par_3,
4292 inout address par_4 ) {
4293 var address temp := { field:=par_1.field };
4294 [else] {
4295 par_1.field := par_2.field;
4296 par_2.field := par_3.field;
4297 par_3.field := par_4.field;
4298 par_4.field := temp.field;
4299 }
4300 }
4301 control {
4302 var address var_1 := { field:=1 };
4303 var address var_2 := { field:=2 };
4304 var address var_3 := { field:=3 };
4305 var address var_4 := { field:=4 };
4306 var address var_11, var_22, var_33, var_44;
4307 MyAltstep( {1}, {2}, var_3, var_4 ); // good
4308 MyAltstep( var_1, var_2, var_3, var_4 ); // good
4309 MyAltstep( var_11, var_22, var_33, var_44 ); // good
4310 MyAltstep( {1}, {2}, {3}, {4} ); // error
4311 }
4312}
4313<END_MODULE>
4314<RESULT IF_PASS COUNT 2>
4315(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
4316<END_RESULT>
4317<RESULT IF_PASS COUNT 1>
4318(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
4319<END_RESULT>
4320<RESULT IF_PASS COUNT 2>
4321(?is)\berror:
4322<END_RESULT>
4323<RESULT IF_PASS POSITIVE>
4324(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
4325<END_RESULT>
4326
4327<END_TC>
4328:exmp.
4329
4330.*---------------------------------------------------------------------*
4331:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: address type
4332.*---------------------------------------------------------------------*
4333:xmp tab=0.
4334<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: address type>
4335
4336<COMPILE>
4337<VERDICT_LEAF PASS>
4338<MODULE TTCN ModuleA ModuleA.ttcn>
4339module ModuleA {
4340 type component MyCT {}
4341 type record address { integer field }
4342 altstep MyCompAltstep (
4343 address par_1, // address type
4344 in address par_2,
4345 out address par_3,
4346 inout address par_4 ) runs on MyCT {
4347 var address temp := { field:=par_1.field };
4348 [else] {
4349 par_1.field := par_2.field;
4350 par_2.field := par_3.field;
4351 par_3.field := par_4.field;
4352 par_4.field := temp.field;
4353 }
4354 }
4355 function MyCompFunc () runs on MyCT {
4356 var address var_1 := { field:=1 };
4357 var address var_2 := { field:=2 };
4358 var address var_3 := { field:=3 };
4359 var address var_4 := { field:=4 };
4360 var address var_11, var_22, var_33, var_44;
4361 MyCompAltstep( {1}, {2}, var_3, var_4 ); // good
4362 MyCompAltstep( var_1, var_2, var_3, var_4 ); // good
4363 MyCompAltstep( var_11, var_22, var_33, var_44 ); // good
4364 MyCompAltstep( {1}, {2}, {3}, {4} ); // error
4365 }
4366}
4367<END_MODULE>
4368<RESULT IF_PASS COUNT 2>
4369(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
4370<END_RESULT>
4371<RESULT IF_PASS COUNT 1>
4372(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
4373<END_RESULT>
4374<RESULT IF_PASS COUNT 2>
4375(?is)\berror:
4376<END_RESULT>
4377<RESULT IF_PASS POSITIVE>
4378(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
4379<END_RESULT>
4380
4381<END_TC>
4382:exmp.
4383
4384.*---------------------------------------------------------------------*
4385:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: template
4386.*---------------------------------------------------------------------*
4387:xmp tab=0.
4388<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: template>
4389
4390<COMPILE>
4391<VERDICT_LEAF PASS>
4392<MODULE TTCN ModuleA ModuleA.ttcn>
4393module ModuleA {
4394 altstep MyAltstep (
4395 template float par_1, // template
4396 in template float par_2,
4397 out template float par_3,
4398 inout template float par_4 ) {
4399 var float temp;
4400 [else] {
4401 temp := valueof ( par_1 );
4402 temp := valueof ( par_2 );
4403 temp := valueof ( par_3 );
4404 temp := valueof ( par_4 );
4405 par_1 := par_2;
4406 par_2 := par_3;
4407 par_3 := par_4;
4408 par_4 := temp;
4409 }
4410 }
4411 control {
4412 var float var_1 := 1.3;
4413 var float var_2 := 2.5;
4414 var float var_3 := 3.1;
4415 var float var_4 := 4.9;
4416 var template float var_11, var_22, var_33, var_44;
4417
4418 MyAltstep( 1.1, 2.8, var_33, var_44); // good
4419 MyAltstep( var_11, var_22, var_33, var_44); // good
4420 MyAltstep( var_1, var_2, var_3, var_4); // error
4421 MyAltstep( 1.1, 2.8, 3.53, 4.94); // error
4422 }
4423}
4424<END_MODULE>
4425<RESULT IF_PASS COUNT 4>
4426(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
4427<END_RESULT>
4428<RESULT IF_PASS COUNT 2>
4429(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
4430<END_RESULT>
4431<RESULT IF_PASS COUNT 4>
4432(?is)\berror:
4433<END_RESULT>
4434<RESULT IF_PASS POSITIVE>
4435(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
4436<END_RESULT>
4437
4438<END_TC>
4439:exmp.
4440
4441.*---------------------------------------------------------------------*
4442:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: template
4443.*---------------------------------------------------------------------*
4444:xmp tab=0.
4445<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: template>
4446
4447<COMPILE>
4448<VERDICT_LEAF PASS>
4449<MODULE TTCN ModuleA ModuleA.ttcn>
4450module ModuleA {
4451 type component MyCT {}
4452 altstep MyCompAltstep (
4453 template float par_1, // template
4454 in template float par_2,
4455 out template float par_3,
4456 inout template float par_4 ) runs on MyCT {
4457 var float temp;
4458 [else] {
4459 temp := valueof ( par_1 );
4460 temp := valueof ( par_2 );
4461 temp := valueof ( par_3 );
4462 temp := valueof ( par_4 );
4463 par_1 := par_2;
4464 par_2 := par_3;
4465 par_3 := par_4;
4466 par_4 := temp;
4467 }
4468 }
4469 function MyCompFunc () runs on MyCT {
4470 var float var_1 := 1.3;
4471 var float var_2 := 2.5;
4472 var float var_3 := 3.1;
4473 var float var_4 := 4.9;
4474 var template float var_11, var_22, var_33, var_44;
4475
4476 MyCompAltstep( 1.1, 2.8, var_33, var_44); // good
4477 MyCompAltstep( var_11, var_22, var_33, var_44); // good
4478 MyCompAltstep( var_1, var_2, var_3, var_4); // error
4479 MyCompAltstep( 1.1, 2.8, 3.53, 4.94); // error
4480 }
4481}
4482<END_MODULE>
4483<RESULT IF_PASS COUNT 4>
4484(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
4485<END_RESULT>
4486<RESULT IF_PASS COUNT 2>
4487(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
4488<END_RESULT>
4489<RESULT IF_PASS COUNT 4>
4490(?is)\berror:
4491<END_RESULT>
4492<RESULT IF_PASS POSITIVE>
4493(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
4494<END_RESULT>
4495
4496<END_TC>
4497:exmp.
4498
4499.*---------------------------------------------------------------------*
4500:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: component type
4501.*---------------------------------------------------------------------*
4502:xmp tab=0.
4503<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: component type>
4504
4505<COMPILE>
4506<VERDICT_LEAF PASS>
4507<MODULE TTCN ModuleA ModuleA.ttcn>
4508module ModuleA {
4509 type component MyCT {}
4510 altstep MyAltstep (
4511 MyCT par_1, // component type
4512 in MyCT par_2,
4513 out MyCT par_3,
4514 inout MyCT par_4 ) {
4515 var MyCT temp := par_1;
4516 [else] {
4517 par_1 := par_2;
4518 par_2 := par_3;
4519 par_3 := par_4;
4520 par_4 := temp;
4521 }
4522 }
4523 function MyCompFunc () runs on MyCT {
4524 var MyCT temp, var_1, var_2, var_3, var_4;
4525 temp := MyCT.create;
4526 MyAltstep( var_1, var_2, var_3, var_4 ); // good
4527 MyAltstep( temp, temp, temp, temp); // good
4528 MyAltstep( MyCT.create, MyCT.create, temp, temp ); // good
4529 MyAltstep( MyCT.create, MyCT.create, MyCT.create, MyCT.create ); // error
4530 }
4531}
4532<END_MODULE>
4533<RESULT IF_PASS COUNT 2>
4534(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
4535<END_RESULT>
4536<RESULT IF_PASS COUNT 1>
4537(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
4538<END_RESULT>
4539<RESULT IF_PASS COUNT 2>
4540(?is)\berror:
4541<END_RESULT>
4542<RESULT IF_PASS POSITIVE>
4543(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
4544<END_RESULT>
4545
4546<END_TC>
4547:exmp.
4548
4549.*---------------------------------------------------------------------*
4550:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: component type
4551.*---------------------------------------------------------------------*
4552:xmp tab=0.
4553<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: component type>
4554
4555<COMPILE>
4556<VERDICT_LEAF PASS>
4557<MODULE TTCN ModuleA ModuleA.ttcn>
4558module ModuleA {
4559 type component MyCT {}
4560 altstep MyCompAltstep (
4561 MyCT par_1, // component type
4562 in MyCT par_2,
4563 out MyCT par_3,
4564 inout MyCT par_4 ) runs on MyCT {
4565 var MyCT temp := par_1;
4566 [else] {
4567 par_1 := par_2;
4568 par_2 := par_3;
4569 par_3 := par_4;
4570 par_4 := temp;
4571 }
4572 }
4573 function MyCompFunc () runs on MyCT {
4574 var MyCT temp, var_1, var_2, var_3, var_4;
4575 temp := MyCT.create;
4576 MyCompAltstep( var_1, var_2, var_3, var_4 ); // good
4577 MyCompAltstep( temp, temp, temp, temp); // good
4578 MyCompAltstep( MyCT.create, MyCT.create, temp, temp ); // good
4579 MyCompAltstep( MyCT.create, MyCT.create, MyCT.create, MyCT.create ); // error
4580 }
4581}
4582<END_MODULE>
4583<RESULT IF_PASS COUNT 2>
4584(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
4585<END_RESULT>
4586<RESULT IF_PASS COUNT 1>
4587(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
4588<END_RESULT>
4589<RESULT IF_PASS COUNT 2>
4590(?is)\berror:
4591<END_RESULT>
4592<RESULT IF_PASS POSITIVE>
4593(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
4594<END_RESULT>
4595
4596<END_TC>
4597:exmp.
4598
4599.*---------------------------------------------------------------------*
4600:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: port type
4601.*---------------------------------------------------------------------*
4602:xmp tab=0.
4603<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: port type>
4604
4605<COMPILE>
4606<VERDICT_LEAF PASS>
4607<MODULE TTCN ModuleA ModuleA.ttcn>
4608module ModuleA {
4609 type port MyPort message { inout charstring; } // port type
4610 type component MyCT {
4611 port MyPort port_1;
4612 port MyPort port_2;
4613 }
4614 altstep MyAltstep ( MyPort par_1, inout MyPort par_2 ) {
4615 [else] {
4616 par_1 := par_2;
4617 par_2 := par_1;
4618 }
4619 }
4620 altstep MyCompAltstep ( MyPort par_1, inout MyPort par_2 ) runs on MyCT {
4621 [else] {
4622 port_1 := par_1;
4623 par_1 := par_2;
4624 par_2 := port_1;
4625 }
4626 }
4627 function MyCompFunc ( MyPort par_1, inout MyPort par_2 ) runs on MyCT {
4628 MyAltstep( port_1, port_2 );
4629 MyCompAltstep( port_1, port_2 );
4630 }
4631}
4632<END_MODULE>
4633<RESULT IF_PASS COUNT 1>
4634(?im)\berror\b.+?Reference.+?expected.+?instead of.+?port_1
4635<END_RESULT>
4636<RESULT IF_PASS COUNT 2>
4637(?im)\berror\b.+?Reference.+?expected.+?instead of.+?par_1
4638<END_RESULT>
4639<RESULT IF_PASS COUNT 2>
4640(?im)\berror\b.+?Reference.+?expected.+?instead of.+?par_2
4641<END_RESULT>
4642<RESULT IF_PASS COUNT 5>
4643(?is)\berror:
4644<END_RESULT>
4645<RESULT IF_PASS POSITIVE>
4646(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
4647<END_RESULT>
4648
4649<END_TC>
4650:exmp.
4651
4652.*---------------------------------------------------------------------*
4653:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: default
4654.*---------------------------------------------------------------------*
4655:xmp tab=0.
4656<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: default>
4657
4658<COMPILE>
4659<VERDICT_LEAF PASS>
4660<MODULE TTCN ModuleA ModuleA.ttcn>
4661module ModuleA {
4662 altstep MyAltstep (
4663 default par_1, // default
4664 in default par_2,
4665 out default par_3,
4666 inout default par_4 ) {
4667 var default temp := par_1;
4668 [else] {
4669 par_1 := par_2;
4670 par_2 := par_3;
4671 par_3 := par_4;
4672 par_4 := temp;
4673 }
4674 }
4675 control {
4676 var default var_1, var_2, var_3, var_4;
4677 var default temp := null;
4678 MyAltstep( var_1, var_2, var_3, var_4 ); // good
4679 MyAltstep( temp, temp, temp, temp); // good
4680 MyAltstep( null, null, temp, temp); // good
4681 MyAltstep( null, null, null, null); // error
4682 }
4683}
4684<END_MODULE>
4685<RESULT IF_PASS COUNT 2>
4686(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
4687<END_RESULT>
4688<RESULT IF_PASS COUNT 1>
4689(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
4690<END_RESULT>
4691<RESULT IF_PASS COUNT 2>
4692(?is)\berror:
4693<END_RESULT>
4694<RESULT IF_PASS POSITIVE>
4695(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
4696<END_RESULT>
4697
4698<END_TC>
4699:exmp.
4700
4701.*---------------------------------------------------------------------*
4702:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: default
4703.*---------------------------------------------------------------------*
4704:xmp tab=0.
4705<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: default>
4706
4707<COMPILE>
4708<VERDICT_LEAF PASS>
4709<MODULE TTCN ModuleA ModuleA.ttcn>
4710module ModuleA {
4711 type component MyCT {}
4712 altstep MyCompAltstep (
4713 default par_1, // default type
4714 in default par_2,
4715 out default par_3,
4716 inout default par_4 ) runs on MyCT {
4717 var default temp := par_1;
4718 [else] {
4719 par_1 := par_2;
4720 par_2 := par_3;
4721 par_3 := par_4;
4722 par_4 := temp;
4723 }
4724 }
4725 function MyCompFunc () runs on MyCT {
4726 var default var_1, var_2, var_3, var_4;
4727 var default temp := null;
4728 MyCompAltstep( var_1, var_2, var_3, var_4 ); // good
4729 MyCompAltstep( temp, temp, temp, temp); // good
4730 MyCompAltstep( null, null, temp, temp); // good
4731 MyCompAltstep( null, null, null, null); // error
4732 }
4733}
4734<END_MODULE>
4735<RESULT IF_PASS COUNT 2>
4736(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
4737<END_RESULT>
4738<RESULT IF_PASS COUNT 1>
4739(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
4740<END_RESULT>
4741<RESULT IF_PASS COUNT 2>
4742(?is)\berror:
4743<END_RESULT>
4744<RESULT IF_PASS POSITIVE>
4745(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
4746<END_RESULT>
4747
4748<END_TC>
4749:exmp.
4750
4751.*---------------------------------------------------------------------*
4752:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: timer
4753.*---------------------------------------------------------------------*
4754:xmp tab=0.
4755<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: timer>
4756
4757<COMPILE>
4758<VERDICT_LEAF PASS>
4759<MODULE TTCN ModuleA ModuleA.ttcn>
4760module ModuleA {
4761 type component MyCT {}
4762 altstep MyAltstep ( timer par_1, inout timer par_2 ) {
4763 timer temp := 2.3;
4764 [else] {
4765 temp := par_1; // error
4766 par_1 := par_2; // error
4767 par_2 := temp; // error
4768 }
4769 }
4770 control {
4771 timer T1 := 2.9;
4772 timer T2 := 5.7;
4773 timer T3, T4;
4774 MyAltstep( T1, T2 ); // good
4775 MyAltstep( T3, T4 ); // good
4776 MyAltstep( 3.8, 4.5 ); // error
4777 }
4778}
4779<END_MODULE>
4780<RESULT IF_PASS COUNT 1>
4781(?im)\berror\b.+?Reference.+?expected.+?instead of.+?temp
4782<END_RESULT>
4783<RESULT IF_PASS COUNT 1>
4784(?im)\berror\b.+?Reference.+?expected.+?instead of.+?par_1
4785<END_RESULT>
4786<RESULT IF_PASS COUNT 1>
4787(?im)\berror\b.+?Reference.+?expected.+?instead of.+?par_2
4788<END_RESULT>
4789<RESULT IF_PASS COUNT 2>
4790(?im)\berror\b.+?Reference.+?timer.+?expected.+?parameter
4791<END_RESULT>
4792<RESULT IF_PASS COUNT 5>
4793(?is)\berror:
4794<END_RESULT>
4795<RESULT IF_PASS POSITIVE>
4796(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
4797<END_RESULT>
4798
4799<END_TC>
4800:exmp.
4801
4802.*---------------------------------------------------------------------*
4803:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: timer as non-mandatory parameter
4804.*---------------------------------------------------------------------*
4805:xmp tab=0.
4806<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep: timer as non-mandatory parameter>
4807
4808<COMPILE>
4809<VERDICT_LEAF PASS>
4810<MODULE TTCN ModuleA ModuleA.ttcn>
4811module ModuleA {
4812 type component MyCT {}
4813 altstep MyAltstep ( timer par_1 := 1.0, inout timer par_2 := 1.0) {
4814 [else] {}
4815 }
4816}
4817<END_MODULE>
4818<RESULT IF_PASS COUNT 2>
4819(?im)\berror\b.+?Reference.+?timer.+?expected.+?parameter
4820<END_RESULT>
4821<RESULT IF_PASS COUNT 2>
4822(?is)\berror:
4823<END_RESULT>
4824<RESULT IF_PASS POSITIVE>
4825(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
4826<END_RESULT>
4827
4828<END_TC>
4829:exmp.
4830
4831.*---------------------------------------------------------------------*
4832:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: timer
4833.*---------------------------------------------------------------------*
4834:xmp tab=0.
4835<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Altstep_runs_on: timer>
4836
4837<COMPILE>
4838<VERDICT_LEAF PASS>
4839<MODULE TTCN ModuleA ModuleA.ttcn>
4840module ModuleA {
4841 type component MyCT {}
4842 altstep MyCompAltstep ( timer par_1, inout timer par_2 ) runs on MyCT {
4843 timer temp := 2.3;
4844 [else] {
4845 temp := par_1; // error
4846 par_1 := par_2; // error
4847 par_2 := temp; // error
4848 }
4849 }
4850 function MyCompFunc () runs on MyCT {
4851 timer T1 := 2.9;
4852 timer T2 := 5.7;
4853 timer T3, T4;
4854 MyCompAltstep( T1, T2 ); // good
4855 MyCompAltstep( T3, T4 ); // good
4856 MyCompAltstep( 3.8, 4.5 ); // error
4857 }
4858}
4859<END_MODULE>
4860<RESULT IF_PASS COUNT 1>
4861(?im)\berror\b.+?Reference.+?expected.+?instead of.+?temp
4862<END_RESULT>
4863<RESULT IF_PASS COUNT 1>
4864(?im)\berror\b.+?Reference.+?expected.+?instead of.+?par_1
4865<END_RESULT>
4866<RESULT IF_PASS COUNT 1>
4867(?im)\berror\b.+?Reference.+?expected.+?instead of.+?par_2
4868<END_RESULT>
4869<RESULT IF_PASS COUNT 2>
4870(?im)\berror\b.+?Reference.+?timer.+?expected.+?parameter
4871<END_RESULT>
4872<RESULT IF_PASS COUNT 5>
4873(?is)\berror:
4874<END_RESULT>
4875<RESULT IF_PASS POSITIVE>
4876(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
4877<END_RESULT>
4878
4879<END_TC>
4880:exmp.
4881
4882.*---------------------------------------------------------------------*
4883:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Testcase: allowed in/out/inout
4884.*---------------------------------------------------------------------*
4885:xmp tab=0.
4886<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Testcase: allowed in/out/inout>
4887
4888<COMPILEGCC>
4889<VERDICT_LEAF PASS>
4890<MODULE TTCN ModuleA ModuleA.ttcn>
4891module ModuleA {
4892 type component MyCT {}
4893 type set MySet {
4894 float field1,
4895 boolean field2 optional
4896 }
4897 type record address { integer field }
4898 testcase MyTestcase (
4899 integer par_11_1, // basic type
4900 in integer par_12_1,
4901 out integer par_13_1,
4902 inout integer par_14_1,
4903
4904 octetstring par_11_2, // basic string type
4905 in octetstring par_12_2,
4906 out octetstring par_13_2,
4907 inout octetstring par_14_2,
4908
4909 MySet par_21, // user-defined structured type
4910 in MySet par_22,
4911 out MySet par_23,
4912 inout MySet par_24,
4913
4914 address par_31, // address
4915 in address par_32,
4916 out address par_33,
4917 inout address par_34,
4918
4919 template MySet par_41, // template
4920 in template MySet par_42,
4921 out template MySet par_43,
4922 inout template MySet par_44,
4923
4924 MyCT par_51, // component type
4925 in MyCT par_52,
4926 out MyCT par_53,
4927 inout MyCT par_54,
4928
4929 default par_71, // default
4930 in default par_72,
4931 out default par_73,
4932 inout default par_74 ) runs on MyCT {}
4933}
4934<END_MODULE>
4935<RESULT IF_PASS POSITIVE>
4936(?im)\bnotify\b.+?Generating.+?code
4937<END_RESULT>
4938
4939<END_TC>
4940:exmp.
4941
4942.*---------------------------------------------------------------------*
4943:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Testcase: allowed non-mandatory in/out/inout
4944.*---------------------------------------------------------------------*
4945:xmp tab=0.
4946<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Testcase: allowed non-mandatory in/out/inout>
4947
4948<COMPILEGCC>
4949<VERDICT_LEAF PASS>
4950<MODULE TTCN ModuleA ModuleA.ttcn>
4951module ModuleA {
4952 type port MyPort message { inout charstring; }
4953 type set MySet {
4954 float field1,
4955 boolean field2 optional
4956 }
4957 type record address { integer field }
4958 type component MyCT {
4959 const integer comp_const_i := 0;
4960 var integer comp_var_i := 0;
4961 const octetstring comp_const_o := '00'O;
4962 var octetstring comp_var_o := '00'O;
4963 const MySet comp_const_set := {field1 := 1.0, field2 := true};
4964 var MySet comp_var_set := {field1 := 1.0, field2 := true};
4965 const address comp_const_address := {5};
4966 var address comp_var_address := {5};
4967 port MyPort comp_port;
4968 timer comp_timer := 1.0;
4969 }
4970 testcase MyTestcase (
4971 integer par_11_1 := comp_const_i, // basic type
4972 in integer par_12_1 := comp_const_i,
4973 out integer par_13_1 := comp_var_i,
4974 inout integer par_14_1 := comp_var_i,
4975
4976 octetstring par_11_2 := comp_const_o, // basic string type
4977 in octetstring par_12_2 := comp_const_o,
4978 out octetstring par_13_2 := comp_var_o,
4979 inout octetstring par_14_2 := comp_var_o,
4980
4981 MySet par_21 := comp_const_set, // user-defined structured type
4982 in MySet par_22 := comp_const_set,
4983 out MySet par_23 := comp_var_set,
4984 inout MySet par_24 := comp_var_set,
4985
4986 address par_31 := comp_const_address, // address
4987 in address par_32 := comp_const_address,
4988 out address par_33 := comp_var_address,
4989 inout address par_34 := comp_var_address ) runs on MyCT {}
4990}
4991<END_MODULE>
4992<RESULT IF_PASS POSITIVE>
4993(?im)\bnotify\b.+?Generating.+?code
4994<END_RESULT>
4995
4996<END_TC>
4997:exmp.
4998
4999.*---------------------------------------------------------------------*
5000:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Testcase: basic type
5001.*---------------------------------------------------------------------*
5002:xmp tab=0.
5003<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Testcase: basic type>
5004
5005<COMPILE>
5006<VERDICT_LEAF PASS>
5007<MODULE TTCN ModuleA ModuleA.ttcn>
5008module ModuleA {
5009 type component MyCT {}
5010 testcase MyTestcase (
5011 integer par_1, // basic type
5012 in integer par_2,
5013 out integer par_3,
5014 inout integer par_4 ) runs on MyCT {
5015 var integer temp := par_1;
5016 par_1 := par_2;
5017 par_2 := par_3;
5018 par_3 := par_4;
5019 par_4 := temp;
5020 }
5021 control {
5022 var integer var_1 := 1;
5023 var integer var_2 := 2;
5024 var integer var_3 := 3;
5025 var integer var_4 := 4;
5026 var integer var_11, var_22, var_33, var_44;
5027 execute ( MyTestcase( var_1, var_2, var_3, var_4) ); // good
5028 execute ( MyTestcase( var_11, var_22, var_33, var_44) ); // good
5029 execute ( MyTestcase( 1, 2, var_3, var_4) ); // good
5030 execute ( MyTestcase( 1, 2, 3, 4) ); // error
5031 }
5032}
5033<END_MODULE>
5034<RESULT IF_PASS COUNT 2>
5035(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
5036<END_RESULT>
5037<RESULT IF_PASS COUNT 1>
5038(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
5039<END_RESULT>
5040<RESULT IF_PASS COUNT 2>
5041(?is)\berror:
5042<END_RESULT>
5043<RESULT IF_PASS POSITIVE>
5044(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
5045<END_RESULT>
5046
5047<END_TC>
5048:exmp.
5049
5050.*---------------------------------------------------------------------*
5051:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Testcase: basic string type
5052.*---------------------------------------------------------------------*
5053:xmp tab=0.
5054<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Testcase: basic string type>
5055
5056<COMPILE>
5057<VERDICT_LEAF PASS>
5058<MODULE TTCN ModuleA ModuleA.ttcn>
5059module ModuleA {
5060 type component MyCT {}
5061 testcase MyTestcase (
5062 charstring par_1, // basic string type
5063 in charstring par_2,
5064 out charstring par_3,
5065 inout charstring par_4 ) runs on MyCT {
5066 var charstring temp := par_1;
5067 par_1 := par_2;
5068 par_2 := par_3;
5069 par_3 := par_4;
5070 par_4 := temp;
5071 }
5072 control {
5073 var charstring var_1 := "q";
5074 var charstring var_2 := "w";
5075 var charstring var_3 := "e";
5076 var charstring var_4 := "r";
5077 var charstring var_11, var_22, var_33, var_44;
5078 execute ( MyTestcase( var_1, var_2, var_3, var_4) ); // good
5079 execute ( MyTestcase( var_11, var_22, var_33, var_44) ); // good
5080 execute ( MyTestcase( "w", "e", var_3, var_4) ); // good
5081 execute ( MyTestcase( "q", "b", "5", "w") ); // error
5082 }
5083}
5084<END_MODULE>
5085<RESULT IF_PASS COUNT 2>
5086(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
5087<END_RESULT>
5088<RESULT IF_PASS COUNT 1>
5089(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
5090<END_RESULT>
5091<RESULT IF_PASS COUNT 2>
5092(?is)\berror:
5093<END_RESULT>
5094<RESULT IF_PASS POSITIVE>
5095(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
5096<END_RESULT>
5097
5098<END_TC>
5099:exmp.
5100
5101.*---------------------------------------------------------------------*
5102:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Testcase: user-defined type
5103.*---------------------------------------------------------------------*
5104:xmp tab=0.
5105<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Testcase: user-defined type>
5106
5107<COMPILE>
5108<VERDICT_LEAF PASS>
5109<MODULE TTCN ModuleA ModuleA.ttcn>
5110module ModuleA {
5111 type component MyCT {}
5112 type set MySet {
5113 float field1,
5114 boolean field2 optional
5115 }
5116 testcase MyTestcase (
5117 MySet par_1, // user-defined type
5118 in MySet par_2,
5119 out MySet par_3,
5120 inout MySet par_4 ) runs on MyCT {
5121 var MySet temp := { field1:=par_1.field1 }
5122 par_1.field1 := par_2.field1;
5123 par_2.field1 := par_3.field1;
5124 par_3.field1 := par_4.field1;
5125 par_4.field1 := temp.field1;
5126 }
5127 control {
5128 var MySet var_1 := { field1:=1.3 };
5129 var MySet var_2 := { field1:=2.5 };
5130 var MySet var_3 := { field1:=3.1 };
5131 var MySet var_4 := { field1:=4.9 };
5132 var MySet var_11, var_22, var_33, var_44;
5133 execute ( MyTestcase(var_1,var_2,var_3,var_4) ); // good
5134 execute ( MyTestcase(var_11,var_22,var_33,var_44) ); // good
5135 execute ( MyTestcase( {field1:=1.2, field2:=true}, // good
5136 {field1:=2.5, field2:=true},
5137 var_3,
5138 var_4) );
5139 execute ( MyTestcase( {field1:=1.2, field2:=true}, // error
5140 {field1:=2.5, field2:=true},
5141 {field1:=3.6, field2:=true},
5142 {field1:=4.1, field2:=true}) );
5143 }
5144}
5145<END_MODULE>
5146<RESULT IF_PASS COUNT 2>
5147(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
5148<END_RESULT>
5149<RESULT IF_PASS COUNT 1>
5150(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
5151<END_RESULT>
5152<RESULT IF_PASS COUNT 2>
5153(?is)\berror:
5154<END_RESULT>
5155<RESULT IF_PASS POSITIVE>
5156(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
5157<END_RESULT>
5158
5159<END_TC>
5160:exmp.
5161
5162.*---------------------------------------------------------------------*
5163:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Testcase: address type
5164.*---------------------------------------------------------------------*
5165:xmp tab=0.
5166<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Testcase: address type>
5167
5168<COMPILE>
5169<VERDICT_LEAF PASS>
5170<MODULE TTCN ModuleA ModuleA.ttcn>
5171module ModuleA {
5172 type component MyCT {}
5173 type record address { integer field }
5174 testcase MyTestcase (
5175 address par_1, // address type
5176 in address par_2,
5177 out address par_3,
5178 inout address par_4 ) runs on MyCT {
5179 var address temp := { field:=par_1.field };
5180 par_1.field := par_2.field;
5181 par_2.field := par_3.field;
5182 par_3.field := par_4.field;
5183 par_4.field := temp.field;
5184 }
5185 control {
5186 var address var_1 := { field:=1 };
5187 var address var_2 := { field:=2 };
5188 var address var_3 := { field:=3 };
5189 var address var_4 := { field:=4 };
5190 var address var_11, var_22, var_33, var_44;
5191 execute ( MyTestcase( {1}, {2}, var_3, var_4 ) ); // good
5192 execute ( MyTestcase( var_1, var_2, var_3, var_4 ) ); // good
5193 execute ( MyTestcase( var_11, var_22, var_33, var_44 ) ); // good
5194 execute ( MyTestcase( {1}, {2}, {3}, {4} ) ); // error
5195 }
5196}
5197<END_MODULE>
5198<RESULT IF_PASS COUNT 2>
5199(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
5200<END_RESULT>
5201<RESULT IF_PASS COUNT 1>
5202(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
5203<END_RESULT>
5204<RESULT IF_PASS COUNT 2>
5205(?is)\berror:
5206<END_RESULT>
5207<RESULT IF_PASS POSITIVE>
5208(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
5209<END_RESULT>
5210
5211<END_TC>
5212:exmp.
5213
5214.*---------------------------------------------------------------------*
5215:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Testcase: template
5216.*---------------------------------------------------------------------*
5217:xmp tab=0.
5218<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Testcase: template>
5219
5220<COMPILE>
5221<VERDICT_LEAF PASS>
5222<MODULE TTCN ModuleA ModuleA.ttcn>
5223module ModuleA {
5224 type component MyCT {}
5225 testcase MyTestcase (
5226 template float par_1, // template
5227 in template float par_2,
5228 out template float par_3,
5229 inout template float par_4 ) runs on MyCT {
5230 var float temp;
5231 temp := valueof ( par_1 );
5232 temp := valueof ( par_2 );
5233 temp := valueof ( par_3 );
5234 temp := valueof ( par_4 );
5235 par_1 := par_2;
5236 par_2 := par_3;
5237 par_3 := par_4;
5238 par_4 := temp;
5239 }
5240 control {
5241 var float var_1 := 1.3;
5242 var float var_2 := 2.5;
5243 var float var_3 := 3.1;
5244 var float var_4 := 4.9;
5245 var template float var_11, var_22, var_33, var_44;
5246
5247 execute ( MyTestcase( 1.1, 2.8, var_33, var_44) ); // good
5248 execute ( MyTestcase( var_11, var_22, var_33, var_44) ); // good
5249 execute ( MyTestcase( var_1, var_2, var_3, var_4) ); // error
5250 execute ( MyTestcase( 1.1, 2.8, 3.53, 4.94) ); // error
5251 }
5252}
5253<END_MODULE>
5254<RESULT IF_PASS COUNT 4>
5255(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
5256<END_RESULT>
5257<RESULT IF_PASS COUNT 2>
5258(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
5259<END_RESULT>
5260<RESULT IF_PASS COUNT 4>
5261(?is)\berror:
5262<END_RESULT>
5263<RESULT IF_PASS POSITIVE>
5264(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
5265<END_RESULT>
5266
5267<END_TC>
5268:exmp.
5269
5270.*---------------------------------------------------------------------*
5271:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Testcase: component type
5272.*---------------------------------------------------------------------*
5273:xmp tab=0.
5274<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Testcase: component type>
5275
5276<COMPILE>
5277<VERDICT_LEAF PASS>
5278<MODULE TTCN ModuleA ModuleA.ttcn>
5279module ModuleA {
5280 type component MyCT {}
5281 testcase MyTestcase (
5282 MyCT par_1, // component type
5283 in MyCT par_2,
5284 out MyCT par_3,
5285 inout MyCT par_4 ) runs on MyCT {
5286 var MyCT temp := par_1;
5287 par_1 := par_2;
5288 par_2 := par_3;
5289 par_3 := par_4;
5290 par_4 := temp;
5291 }
5292 control {
5293 execute ( MyTestcase( null, null, null, null) ); // good
5294 }
5295}
5296<END_MODULE>
5297<RESULT IF_PASS COUNT 2>
5298(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
5299<END_RESULT>
5300<RESULT IF_PASS COUNT 1>
5301(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
5302<END_RESULT>
5303<RESULT IF_PASS COUNT 2>
5304(?is)\berror:
5305<END_RESULT>
5306<RESULT IF_PASS POSITIVE>
5307(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
5308<END_RESULT>
5309
5310<END_TC>
5311:exmp.
5312
5313.*---------------------------------------------------------------------*
5314:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Testcase: default
5315.*---------------------------------------------------------------------*
5316:xmp tab=0.
5317<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Testcase: default>
5318
5319<COMPILE>
5320<VERDICT_LEAF PASS>
5321<MODULE TTCN ModuleA ModuleA.ttcn>
5322module ModuleA {
5323 type component MyCT {}
5324 testcase MyTestcase (
5325 default par_1, // default type
5326 in default par_2,
5327 out default par_3,
5328 inout default par_4 ) runs on MyCT {
5329 var default temp := par_1;
5330 par_1 := par_2;
5331 par_2 := par_3;
5332 par_3 := par_4;
5333 par_4 := temp;
5334 }
5335 control {
5336 var default var_1, var_2, var_3, var_4;
5337 var default temp := null;
5338 execute ( MyTestcase( var_1, var_2, var_3, var_4 ) ); // good
5339 execute ( MyTestcase( temp, temp, temp, temp) ); // good
5340 execute ( MyTestcase( null, null, temp, temp) ); // good
5341 execute ( MyTestcase( null, null, null, null) ); // error
5342 }
5343}
5344<END_MODULE>
5345<RESULT IF_PASS COUNT 2>
5346(?im)\berror\b.+?Reference.+?expected.+?out.+?parameter
5347<END_RESULT>
5348<RESULT IF_PASS COUNT 1>
5349(?im)\berror\b.+?Reference.+?expected.+?inout.+?parameter
5350<END_RESULT>
5351<RESULT IF_PASS COUNT 2>
5352(?is)\berror:
5353<END_RESULT>
5354<RESULT IF_PASS POSITIVE>
5355(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
5356<END_RESULT>
5357
5358<END_TC>
5359:exmp.
5360
5361.*---------------------------------------------------------------------*
5362:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Signature: allowed in/out/inout
5363.*---------------------------------------------------------------------*
5364:xmp tab=0.
5365<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Signature: allowed in/out/inout>
5366
5367<COMPILEGCC>
5368<VERDICT_LEAF PASS>
5369<MODULE TTCN ModuleA ModuleA.ttcn>
5370module ModuleA {
5371 type component MyCT {}
5372 type set MySet {
5373 float field1,
5374 boolean field2 optional
5375 }
5376 type record address { integer field }
5377 signature MySigE(); // empty parameter list
5378 signature MySig (
5379 integer par_11_1, // basic type
5380 in integer par_12_1,
5381 out integer par_13_1,
5382 inout integer par_14_1,
5383
5384 octetstring par_11_2, // basic string type
5385 in octetstring par_12_2,
5386 out octetstring par_13_2,
5387 inout octetstring par_14_2,
5388
5389 MySet par_21, // user-defined structured type
5390 in MySet par_22,
5391 out MySet par_23,
5392 inout MySet par_24,
5393
5394 address par_31, // address
5395 in address par_32,
5396 out address par_33,
5397 inout address par_34,
5398
5399 MyCT par_51, // component type
5400 in MyCT par_52,
5401 out MyCT par_53,
5402 inout MyCT par_54 );
5403}
5404<END_MODULE>
5405<RESULT IF_PASS POSITIVE>
5406(?im)\bnotify\b.+?Generating.+?code
5407<END_RESULT>
5408
5409<END_TC>
5410:exmp.
5411
5412.*---------------------------------------------------------------------*
5413:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Signature: basic type
5414.*---------------------------------------------------------------------*
5415:xmp tab=0.
5416<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Signature: basic type>
5417
5418<COMPILEGCC>
5419<VERDICT_LEAF PASS>
5420<MODULE TTCN ModuleA ModuleA.ttcn>
5421module ModuleA {
5422 signature MySig (
5423 integer par_1, // basic type
5424 in integer par_2,
5425 out integer par_3,
5426 inout integer par_4 );
5427 type port MyPortType procedure { inout MySig } with { extension "internal" }
5428 type component MyComp {
5429 port MyPortType MyPort;
5430 }
5431 function MyFunc() runs on MyComp {
5432 var integer var_1 := 1;
5433 var integer var_2 := 2;
5434 var integer var_3 := 3;
5435 var integer var_4 := 4;
5436 var integer var_11, var_22, var_33, var_44;
5437
5438 MyPort.call(MySig:{ var_1, var_2, var_3, var_4 }, 20E-3 + 20E-3) {
5439 [] MyPort.getreply {}
5440 }
5441 MyPort.call(MySig:{ var_11, var_22, var_33, var_44 }, 20E-3 + 20E-3) {
5442 [] MyPort.getreply {}
5443 }
5444 MyPort.call(MySig:{ 1, 2, var_3, var_4 }, 20E-3 + 20E-3) {
5445 [] MyPort.getreply {}
5446 }
5447 MyPort.call(MySig:{ 1, 2, 3, 4 }, 20E-3 + 20E-3) {
5448 [] MyPort.getreply {}
5449 }
5450 }
5451}
5452<END_MODULE>
5453<RESULT IF_PASS POSITIVE>
5454(?im)\bnotify\b.+?Generating.+?code
5455<END_RESULT>
5456
5457<END_TC>
5458:exmp.
5459
5460.*---------------------------------------------------------------------*
5461:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Signature: basic string type
5462.*---------------------------------------------------------------------*
5463:xmp tab=0.
5464<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Signature: basic string type>
5465
5466<COMPILEGCC>
5467<VERDICT_LEAF PASS>
5468<MODULE TTCN ModuleA ModuleA.ttcn>
5469module ModuleA {
5470 signature MySig (
5471 charstring par_1, // basic string type
5472 in charstring par_2,
5473 out charstring par_3,
5474 inout charstring par_4 );
5475 type port MyPortType procedure { inout MySig } with { extension "internal" }
5476 type component MyComp {
5477 port MyPortType MyPort;
5478 }
5479 function MyFunc() runs on MyComp {
5480 var charstring var_1 := "q";
5481 var charstring var_2 := "w";
5482 var charstring var_3 := "e";
5483 var charstring var_4 := "r";
5484 var charstring var_11, var_22, var_33, var_44;
5485
5486 MyPort.call(MySig:{ var_1, var_2, var_3, var_4 }, 20E-3 + 20E-3) {
5487 [] MyPort.getreply {}
5488 }
5489 MyPort.call(MySig:{ var_11, var_22, var_33, var_44 }, 20E-3 + 20E-3) {
5490 [] MyPort.getreply {}
5491 }
5492 MyPort.call(MySig:{ "s", "z", var_3, var_4 }, 20E-3 + 20E-3) {
5493 [] MyPort.getreply {}
5494 }
5495 MyPort.call(MySig:{ "p", "n", "c", "a" }, 20E-3 + 20E-3) {
5496 [] MyPort.getreply {}
5497 }
5498 }
5499}
5500<END_MODULE>
5501<RESULT IF_PASS POSITIVE>
5502(?im)\bnotify\b.+?Generating.+?code
5503<END_RESULT>
5504
5505<END_TC>
5506:exmp.
5507
5508.*---------------------------------------------------------------------*
5509:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Signature: user-defined type
5510.*---------------------------------------------------------------------*
5511:xmp tab=0.
5512<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Signature: user-defined type>
5513
5514<COMPILEGCC>
5515<VERDICT_LEAF PASS>
5516<MODULE TTCN ModuleA ModuleA.ttcn>
5517module ModuleA {
5518 type set MySet {
5519 float field1,
5520 boolean field2
5521 }
5522 signature MySig (
5523 MySet par_1, // user-defined type
5524 in MySet par_2,
5525 out MySet par_3,
5526 inout MySet par_4 );
5527 type port MyPortType procedure { inout MySig } with { extension "internal" }
5528 type component MyComp {
5529 port MyPortType MyPort;
5530 }
5531 function MyFunc() runs on MyComp {
5532 var MySet var_1 := { field1:=1.3 };
5533 var MySet var_2 := { field1:=2.5 };
5534 var MySet var_3 := { field1:=3.1 };
5535 var MySet var_4 := { field1:=4.9 };
5536 var MySet var_11, var_22, var_33, var_44;
5537
5538 MyPort.call(MySig:{ var_1, var_2, var_3, var_4 }, 20E-3 + 20E-3) {
5539 [] MyPort.getreply {}
5540 }
5541 MyPort.call(MySig:{ var_11, var_22, var_33, var_44 }, 20E-3 + 20E-3) {
5542 [] MyPort.getreply {}
5543 }
5544 MyPort.call(MySig:{ {field1:=1.2, field2:=true},
5545 {field1:=2.5, field2:=true},
5546 var_3,
5547 var_4 }, 20E-3 + 20E-3) {
5548 [] MyPort.getreply {}
5549 }
5550 MyPort.call(MySig:{ {field1:=1.2, field2:=true},
5551 {field1:=2.5, field2:=true},
5552 {field1:=3.6, field2:=true},
5553 {field1:=4.1, field2:=true} }, 20E-3 + 20E-3) {
5554 [] MyPort.getreply {}
5555 }
5556 }
5557}
5558<END_MODULE>
5559<RESULT IF_PASS POSITIVE>
5560(?im)\bnotify\b.+?Generating.+?code
5561<END_RESULT>
5562
5563<END_TC>
5564:exmp.
5565
5566.*---------------------------------------------------------------------*
5567:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Signature: address type
5568.*---------------------------------------------------------------------*
5569:xmp tab=0.
5570<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Signature: address type>
5571
5572<COMPILEGCC>
5573<VERDICT_LEAF PASS>
5574<MODULE TTCN ModuleA ModuleA.ttcn>
5575module ModuleA {
5576 type record address { integer field }
5577 signature MySig (
5578 address par_1, // address type
5579 in address par_2,
5580 out address par_3,
5581 inout address par_4 );
5582 type port MyPortType procedure { inout MySig } with { extension "internal" }
5583 type component MyComp {
5584 port MyPortType MyPort;
5585 }
5586 function MyFunc() runs on MyComp {
5587 var address var_1 := { field:=1 };
5588 var address var_2 := { field:=2 };
5589 var address var_3 := { field:=3 };
5590 var address var_4 := { field:=4 };
5591 var address var_11, var_22, var_33, var_44;
5592
5593 MyPort.call(MySig:{ var_1, var_2, var_3, var_4 }, 20E-3 + 20E-3) {
5594 [] MyPort.getreply {}
5595 }
5596 MyPort.call(MySig:{ var_11, var_22, var_33, var_44 }, 20E-3 + 20E-3) {
5597 [] MyPort.getreply {}
5598 }
5599 MyPort.call(MySig:{ {2}, {5}, var_3, var_4 }, 20E-3 + 20E-3) {
5600 [] MyPort.getreply {}
5601 }
5602 MyPort.call(MySig:{ {2}, {5}, {6}, {4} }, 20E-3 + 20E-3) {
5603 [] MyPort.getreply {}
5604 }
5605 }
5606}
5607<END_MODULE>
5608<RESULT IF_PASS POSITIVE>
5609(?im)\bnotify\b.+?Generating.+?code
5610<END_RESULT>
5611
5612<END_TC>
5613:exmp.
5614
5615.*---------------------------------------------------------------------*
5616:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Signature: component type
5617.*---------------------------------------------------------------------*
5618:xmp tab=0.
5619<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Signature: component type>
5620
5621<COMPILEGCC>
5622<VERDICT_LEAF PASS>
5623<MODULE TTCN ModuleA ModuleA.ttcn>
5624module ModuleA {
5625 type component MyCT {}
5626 signature MySig (
5627 MyCT par_1, // component type
5628 in MyCT par_2,
5629 out MyCT par_3,
5630 inout MyCT par_4 );
5631 type port MyPortType procedure { inout MySig } with { extension "internal" }
5632 type component MyComp {
5633 port MyPortType MyPort;
5634 }
5635 function MyFunc() runs on MyComp {
5636 var MyCT temp, var_1, var_2, var_3, var_4;
5637 temp := MyCT.create;
5638
5639 MyPort.call(MySig:{ var_1, var_2, var_3, var_4 }, 20E-3 + 20E-3) {
5640 [] MyPort.getreply {}
5641 }
5642 MyPort.call(MySig:{ temp, temp, temp, temp }, 20E-3 + 20E-3) {
5643 [] MyPort.getreply {}
5644 }
5645 MyPort.call(MySig:{ MyCT.create, MyCT.create, temp, temp }, 20E-3 + 20E-3) {
5646 [] MyPort.getreply {}
5647 }
5648 MyPort.call(MySig:{ MyCT.create, MyCT.create, MyCT.create, MyCT.create }, 20E-3 + 20E-3) {
5649 [] MyPort.getreply {}
5650 }
5651 }
5652}
5653<END_MODULE>
5654<RESULT IF_PASS POSITIVE>
5655(?im)\bnotify\b.+?Generating.+?code
5656<END_RESULT>
5657
5658<END_TC>
5659:exmp.
5660
5661.*---------------------------------------------------------------------*
5662:h3.TTCN-3::ParNotAllowedPassedByValueOrRef->Signature: special parameter
5663.*---------------------------------------------------------------------*
5664:xmp tab=0.
5665<TC - TTCN-3::ParNotAllowedPassedByValueOrRef->Signature: special parameter>
5666
5667<COMPILE>
5668<VERDICT_LEAF PASS>
5669<MODULE TTCN ModuleA ModuleA.ttcn>
5670module ModuleA {
5671 signature MySig (
5672 integer par_1, // basic type
5673 in integer par_2,
5674 out integer par_3,
5675 inout integer par_4 );
5676 type port MyPortType procedure { inout MySig } with { extension "internal" }
5677 type component MyComp {
5678 port MyPortType MyPort;
5679 }
5680 function MyFunc() runs on MyComp {
5681 MyPort.call(MySig:{ -, 2, 3, 4 }, 20E-3 + 20E-3) { // good
5682 [] MyPort.catch {}
5683 }
5684 MyPort.call(MySig:{ 1, -, 3, 4 }, 20E-3 + 20E-3) { // good
5685 [] MyPort.catch {}
5686 }
5687 MyPort.call(MySig:{ 1, 2, -, 4 }, 20E-3 + 20E-3) { // good
5688 [] MyPort.catch {}
5689 }
5690 MyPort.call(MySig:{ 1, 2, 3, - }, 20E-3 + 20E-3) { // error
5691 [] MyPort.catch {}
5692 }
5693 }
5694}
5695<END_MODULE>
5696<RESULT IF_PASS COUNT 1>
5697(?im)\berror\b.+?Signature.+?incomplete.+?inout.+?parameter.+?par_4.+?missing
5698<END_RESULT>
5699<RESULT IF_PASS COUNT >
5700(?is)\berror:
5701<END_RESULT>
5702<RESULT IF_PASS POSITIVE>
5703(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
5704<END_RESULT>
5705
5706<END_TC>
5707:exmp.
5708
5709
5710.*---------------------------------------------------------------------*
5711:h3. group parametrization test 1
5712.*---------------------------------------------------------------------*
5713:xmp tab=0.
5714<TC - group parametrization test 1 >
5715<COMPILE>
5716<VERDICT_LEAF FAIL>
5717<MODULE TTCN ModuleA ModuleA.ttcn>
5718module ModuleA {
5719 group grp1(1) {
5720 type integer int1;
5721 }
5722}
5723<END_MODULE>
5724<RESULT IF_FAIL COUNT 1>
5725(?im)\berror\b.+syntax error
5726<END_RESULT>
5727<END_TC>
5728:exmp.
5729
5730.*---------------------------------------------------------------------*
5731:h3. group parametrization test 2
5732.*---------------------------------------------------------------------*
5733:xmp tab=0.
5734<TC - group parametrization test 2 >
5735<COMPILE>
5736<VERDICT_LEAF FAIL>
5737<MODULE TTCN ModuleA ModuleA.ttcn>
5738module ModuleA {
5739 group(1) grp1 {
5740 type integer int1;
5741 }
5742}
5743<END_MODULE>
5744<RESULT IF_FAIL COUNT 1>
5745(?im)\berror\b.+syntax error
5746<END_RESULT>
5747<END_TC>
5748:exmp.
5749
5750.*---------------------------------------------------------------------*
5751:h3.TTCN-3::FunctionReference invalid parametrization of type
5752.*---------------------------------------------------------------------*
5753:xmp tab=0.
5754<TC - TTCN-3::FunctionReference invalid parametrization of type>
5755<COMPILE>
5756<VERDICT_LEAF FAIL>
5757<MODULE TTCN ModuleA ModuleA.ttcn>
5758module ModuleA {
5759 type function fntype(in integer i);
5760 control {
5761 fntype(11);
5762 }
5763}
5764<END_MODULE>
5765<RESULT IF_FAIL COUNT 1>
5766(?is)\berror:
5767<END_RESULT>
5768<RESULT IF_FAIL POSITIVE>
5769(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
5770<END_RESULT>
5771<END_TC>
5772:exmp.
5773
5774.*---------------------------------------------------------------------*
5775:h3.TTCN-3::FunctionReference invalid parametrization of type 2
5776.*---------------------------------------------------------------------*
5777:xmp tab=0.
5778<TC - TTCN-3::FunctionReference invalid parametrization of type 2>
5779<COMPILE>
5780<VERDICT_LEAF FAIL>
5781<MODULE TTCN ModuleA ModuleA.ttcn>
5782module ModuleA {
5783 type function(in integer i) fntype;
5784 control {
5785 }
5786}
5787<END_MODULE>
5788<RESULT IF_FAIL COUNT 1>
5789(?is)\berror:
5790<END_RESULT>
5791<RESULT IF_FAIL POSITIVE>
5792(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
5793<END_RESULT>
5794<END_TC>
5795:exmp.
5796
5797.*---------------------------------------------------------------------*
5798:h3.TTCN-3::FunctionReference invalid parametrization of variable
5799.*---------------------------------------------------------------------*
5800:xmp tab=0.
5801<TC - TTCN-3::FunctionReference invalid parametrization of variable>
5802<COMPILE>
5803<VERDICT_LEAF FAIL>
5804<MODULE TTCN ModuleA ModuleA.ttcn>
5805module ModuleA {
5806 type function fntype(in integer i);
5807 function fn(in integer i) { }
5808 control {
5809 var fntype f := refers(fn);
5810 f(11);
5811 }
5812}
5813<END_MODULE>
5814<RESULT IF_FAIL COUNT 1>
5815(?is)\berror:
5816<END_RESULT>
5817<RESULT IF_FAIL POSITIVE>
5818(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
5819<END_RESULT>
5820<END_TC>
5821:exmp.
5822
5823.*---------------------------------------------------------------------*
5824:h3.TTCN-3::FunctionReference invalid parametrization of derefers
5825.*---------------------------------------------------------------------*
5826:xmp tab=0.
5827<TC - TTCN-3::FunctionReference invalid parametrization of derefers>
5828<COMPILE>
5829<VERDICT_LEAF FAIL>
5830<MODULE TTCN ModuleA ModuleA.ttcn>
5831module ModuleA {
5832 type function fntype(in integer i);
5833 function fn(in integer i) { }
5834 control {
5835 var fntype f := refers(fn);
5836 execute(derefers(f));
5837 }
5838}
5839<END_MODULE>
5840<RESULT IF_FAIL COUNT 1>
5841(?is)\berror:
5842<END_RESULT>
5843<RESULT IF_FAIL POSITIVE>
5844(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
5845<END_RESULT>
5846<END_TC>
5847:exmp.
5848
5849.*---------------------------------------------------------------------*
5850:h3.TTCN-3::FunctionReference invalid parametrization of derefers 2
5851.*---------------------------------------------------------------------*
5852:xmp tab=0.
5853<TC - TTCN-3::FunctionReference invalid parametrization of derefers 2>
5854<COMPILE>
5855<VERDICT_LEAF FAIL>
5856<MODULE TTCN ModuleA ModuleA.ttcn>
5857module ModuleA {
5858 function fn(in integer i) { }
5859 control {
5860 execute(derefers(refers(fn)));
5861 }
5862}
5863<END_MODULE>
5864<RESULT IF_FAIL COUNT 1>
5865(?is)\berror:
5866<END_RESULT>
5867<RESULT IF_FAIL POSITIVE>
5868(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
5869<END_RESULT>
5870<END_TC>
5871:exmp.
5872
5873.*---------------------------------------------------------------------*
5874:h3.TTCN-3::FunctionReference invalid parametrization of derefers 3
5875.*---------------------------------------------------------------------*
5876:xmp tab=0.
5877<TC - TTCN-3::FunctionReference invalid parametrization of derefers 3>
5878<COMPILE>
5879<VERDICT_LEAF FAIL>
5880<MODULE TTCN ModuleA ModuleA.ttcn>
5881module ModuleA {
5882 type component my_component{};
5883 function fn(in integer i) { }
5884 control {
5885 var my_component comp_var := my_component.create;
5886 comp_var.start(derefers(refers(fn)));
5887 }
5888}
5889<END_MODULE>
5890<RESULT IF_FAIL COUNT 1>
5891(?is)\berror:
5892<END_RESULT>
5893<RESULT IF_FAIL POSITIVE>
5894(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
5895<END_RESULT>
5896<END_TC>
5897:exmp.
5898
5899
5900.*---------------------------------------------------------------------*
5901:h3.TTCN-3::FunctionReference invalid parametrization of derefers 4
5902.*---------------------------------------------------------------------*
5903:xmp tab=0.
5904<TC - TTCN-3::FunctionReference invalid parametrization of derefers 4>
5905<COMPILE>
5906<VERDICT_LEAF FAIL>
5907<MODULE TTCN ModuleA ModuleA.ttcn>
5908module ModuleA {
5909 function fn(in integer i) { }
5910 control {
5911 execute(derefers(null));
5912 }
5913}
5914<END_MODULE>
5915<RESULT IF_FAIL COUNT 1>
5916(?is)\berror:
5917<END_RESULT>
5918<RESULT IF_FAIL POSITIVE>
5919(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
5920<END_RESULT>
5921<END_TC>
5922:exmp.
5923
5924.*---------------------------------------------------------------------*
5925:h3.TTCN-3::FunctionReference invalid parametrization of derefers 5
5926.*---------------------------------------------------------------------*
5927:xmp tab=0.
5928<TC - TTCN-3::FunctionReference invalid parametrization of derefers 5>
5929<COMPILE>
5930<VERDICT_LEAF FAIL>
5931<MODULE TTCN ModuleA ModuleA.ttcn>
5932module ModuleA {
5933 type component my_component{};
5934 function fn(in integer i) { }
5935 control {
5936 var my_component comp_var := my_component.create;
5937 comp_var.start(derefers(null));
5938 }
5939}
5940<END_MODULE>
5941<RESULT IF_FAIL COUNT 1>
5942(?is)\berror:
5943<END_RESULT>
5944<RESULT IF_FAIL POSITIVE>
5945(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
5946<END_RESULT>
5947<END_TC>
5948:exmp.
5949
5950.*---------------------------------------------------------------------*
5951:h3.TTCN-3::Big integer parameters
5952.*---------------------------------------------------------------------*
5953:xmp tab=0.
5954<TC - TTCN-3::Big integer parameters>
5955
5956<COMPILEGCC>
5957<VERDICT_LEAF PASS>
5958<MODULE TTCN ModuleA ModuleA.ttcn>
5959module ModuleA {
5960 type component my_component { }
5961 function fn(in integer i, in integer j) runs on my_component { }
5962 testcase tc(in integer i) runs on my_component { fn(1234567891011121314151617181920, i) }
5963 control {
5964 execute(tc(1234567891011121314151617181920))
5965 }
5966}
5967<END_MODULE>
5968<RESULT IF_PASS POSITIVE>
5969(?im)\bnotify\b.+?Generating.+?code
5970<END_RESULT>
5971
5972<END_TC>
5973:exmp.
5974
5975.*---------------------------------------------------------------------*
5976:h3.TTCN-3::Parameterised template reference without parameter list1
5977.*---------------------------------------------------------------------*
5978:xmp tab=0.
5979<TC - TTCN-3::Parameterised template reference without parameter list1>
5980
5981<COMPILE>
5982<VERDICT_LEAF PASS>
5983<MODULE TTCN ModuleA ModuleA.ttcn>
5984module ModuleA {
5985 type record my_type {
5986 integer field1,
5987 integer field2
5988 };
5989 template my_type t_orig (in integer pl_1 := 0, in integer pl_2 := 0)
5990 :=
5991 { field1 := pl_1,
5992 field2 := pl_2
5993 }
5994
5995 function f() {
5996 var template my_type X1 := t_orig(1,2);
5997 var template my_type X2 := t_orig();
5998 var template my_type X3 := t_orig;
5999 }
6000}
6001<END_MODULE>
6002<RESULT IF_PASS POSITIVE>
6003(?im)\bnotify\b.+?Generating.+?code
6004<END_RESULT>
6005
6006<END_TC>
6007:exmp.
6008
6009.*---------------------------------------------------------------------*
6010:h3.TTCN-3::Parameterised template reference without parameter list2
6011.*---------------------------------------------------------------------*
6012:xmp tab=0.
6013<TC - TTCN-3::Parameterised template reference without parameter list2>
6014
6015<COMPILE>
6016<VERDICT_LEAF PASS>
6017<MODULE TTCN ModuleA ModuleA.ttcn>
6018module ModuleA {
6019 type record my_type {
6020 integer field1,
6021 integer field2
6022 };
6023 template my_type t_orig (in integer pl_1 := 0, in integer pl_2)
6024 :=
6025 { field1 := pl_1,
6026 field2 := pl_2
6027 }
6028
6029 function f() {
6030 var template my_type X1 := t_orig(1,2);
6031 var template my_type X2 := t_orig();
6032 var template my_type X3 := t_orig;
6033 }
6034}
6035<END_MODULE>
6036<RESULT IF_PASS COUNT 1>
6037(?im)\berror\b.+?Too.+?few.+?parameters.+?2.+?was.+?expected.+?instead.+?of.+?0
6038<END_RESULT>
6039<RESULT IF_PASS COUNT 1>
6040(?im)\berror\b.+?Reference.+?to.+?parameterized.+?definition.+?without.+?actual.+?parameter.+?list
6041<END_RESULT>
6042<RESULT IF_PASS POSITIVE>
6043(?im)\bnotify\b.+?\bcode\b.+?\bnot\b.+?\bgenerated\b
6044<END_RESULT>
6045
6046<END_TC>
6047:exmp.
6048
6049.*---------------------------------------------------------------------*
6050:h1.Abbreviations
6051.*---------------------------------------------------------------------*
6052:list.
6053:li D='ASN.1'.Abstract Syntax Notation 1
6054:li D='EDML'.Ericsson Document Markup Language
6055:li D='SA'.Semantic Analyser
6056:li D='TTCN-3'.Test and Test Control Notation version 3
6057:elist.
6058
6059.*---------------------------------------------------------------------*
6060:h1.References
6061.*---------------------------------------------------------------------*
6062:list.
6063:li D='[1]'.3/ETH/RUS-2003:0087 Uen
6064:nl.Requirement Specification for TITAN's TTCN-3 Semantic Analyser
6065:li D='[2]'.1/174 02-FCPCA 101 42 Uen
6066:nl.Statement of Compliance for TITAN project
6067:li D='[3]'.ETSI ES 201 873-1, v3.0.0 Mockup v1 (2004-03):
6068:nl.Testing and Test Control Notation version 3.,
6069:nl.Part 1: TTCN-3 Core Language
6070:elist.
6071
6072.*---------------------------------------------------------------------*
6073:h1.Terminology
6074.*---------------------------------------------------------------------*
6075:list.
6076:li D='TITAN'.Ericsson's TTCN-3 Test Environment
6077:elist.
6078
6079:etext.
6080
This page took 0.252605 seconds and 5 git commands to generate.