Sync with 5.4.0
[deliverable/titan.core.git] / regression_test / compileonly / dynamicTemplate / DynamicTemplate.ttcn
CommitLineData
970ed795 1/******************************************************************************
3abe9331 2 * Copyright (c) 2000-2015 Ericsson Telecom AB
970ed795
EL
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 ******************************************************************************/
8module DynamicTemplate {
9
10// Prerequisites
11
12type integer T1;
13
14type record T2 {
15 bitstring f1 optional,
16 objid f2,
17 T1 f3
18}
19
20type set T3 {
21 octetstring f1,
22 T2 f2 optional,
23 verdicttype f3
24}
25
26type union T4 {
27 boolean f1,
28 T2 f2,
29 T3 f3,
30 T5 f5
31}
32
33type record of hexstring T5;
34
35type set of T4 T6;
36
37type port PT message {
38 inout bitstring, T6;
39} with { extension "internal" }
40
41template bitstring t1 := '10?01*1'B;
42
43// Test Cases
44
45// DynamicTemplate-001
46function f1(boolean flag) return template bitstring
47{
48 var boolean flag2 := true;
49 if (flag) {
50 // DynamicTemplate-006
51 return not4b ('1001'B & '0110'B);
52 } else if (flag2) {
53 // DynamicTemplate-007
54 return t1;
55 } else {
56 // DynamicTemplate-008
57 return ?;
58 }
59}
60
61// DynamicTemplate-002
62external function ef1() return template float;
63
64// DynamicTemplate-003
65function f2(template T6 par_t6) runs on C return template T6
66{
67 if (flag) {
68 // DynamicTemplate-009
69 return {
70 vt4,
71 *,
72 { f5 := { 'AB?C'H, '*F'H, ''H } },
73 { f2 := { f1 := *, f2 := objid { 1 2 3 4 }, f3 := (1..10) } },
74 { f3 := { f1 := '12*AB'O,
75 f2 := { f1 := omit, f2 := ?, f3 := complement(5, 10, 13) } ifpresent,
76 f3 := (pass, fail) }
77 }
78 } length(7..9);
79 } else {
80 var boolean flag2 := true;
81 if (flag2) {
82 // DynamicTemplate-010
83 return par_t6;
84 } else {
85 // DynamicTemplate-011
86 // DynamicTemplate-025
87 return vt6;
88 }
89 }
90}
91
92// DynamicTemplate-004
93external function ef2() return template T3;
94
95// DynamicTemplate-012
96template bitstring t2(boolean flag) := f1(flag);
97
98// DynamicTemplate-013
99function f2b() runs on C
100{
101 var template T6 tmp := f2(f2(f2(?)));
102}
103
104// DynamicTemplate-014
105function f2c() runs on C
106{
107 P.send(f1(true));
108 P.send(bitstring:f1(true));
109 P.receive(f2(?));
110 P.receive(T6:f2(?));
111}
112
113// DynamicTemplate-015
114function f2d()
115{
116 var T6 v1 := valueof(f2({}));
117 if (match(v1, f2(?))) { }
118}
119
120type component C {
121 port PT P;
122 var boolean flag;
123 // DynamicTemplate-016
124 var template octetstring vt1;
125
126 // DynamicTemplate-017
127 var template integer vt2 := 5;
128
129 // DynamicTemplate-018
130 var template bitstring vt3:= complement('1*1'B, '01?0'B, '1'B) ifpresent;
131
132 // DynamicTemplate-019
133 var template T4 vt4;
134
135 // DynamicTemplate-020
136 var template T3 vt5 := { f1 := ?, f3 := error };
137
138 // DynamicTemplate-021
139 // DynamicTemplate-025
140 var template T6 vt6 := { { f1 := false }, { f2 := ? },
141 { f3 := { f1 := ?, f2 := *, f3 := ? } } };
142
143
144 // DynamicTemplate-022
145 var template integer vt7[100];
146 var template float vt8[3] := { (0.0 .. 0.5), (1.0 .. 1.5), (2.0 .. 2.5) };
147
148 // DynamicTemplate-023
149 var template T5 vt9[3][5];
150 var template octetstring vt10[3][2][2] :=
151 { { { ''O, ''O }, { ?, * } }, -, { { '00'O, 'FF'O }, { '?'O, '*'O } } };
152
153 // DynamicTemplate-024
154 var template T2 vt10a, vt10b[2] /*, vt10c[1][1]*/;
155 var template integer vt11a := 1, vt11b := ?, vt11c[2] := { complement(1), 2 };
156}
157
158// DynamicTemplate-026
159function f3()
160{
161 // DynamicTemplate-026
162 var template charstring vt1 := pattern "AB?C*";
163 var template T6 vt2[1], vt3 := *;
164 // DynamicTemplate-027
165 do {
166 var template T5 vt4 := ({ }, { (''H, '?'H) }, { '1?'H, '2*'H });
167 } while (false);
168 // DynamicTemplate-028
169 for (var template integer i := 0; valueof(i) < 10; i := valueof(i) + 1) {
170 }
171}
172
173// DynamicTemplate-029
174testcase tc1() runs on C
175{
176 var template T2 vt12 := { f1 := omit };
177}
178
179// DynamicTemplate-030
180altstep as1()
181{
182 var template integer vti := 1;
183 var template T6 vt6 := ?;
184 [] any timer.timeout {
185 // DynamicTemplate-032
186 var template bitstring vbs[10], vbs2 := '10??10*1?0'B;
187 }
188 [] any component.done {
189 // DynamicTemplate-033
190 var template octetstring vbs2, vbs;
191 }
192}
193
194function f4() {
195 var bitstring v1 := '1001'B;
196 var template bitstring vt1;
197 var template T6 vt2;
198 // DynamicTemplate-034
199 vt1 := '0110'B;
200 vt1 := not4b (v1 & v1);
201 // DynamicTemplate-035
202 vt1 := t1;
203 // DynamicTemplate-036
204 vt1 := ?;
205 // DynamicTemplate-037
206 vt1 := f1(false);
207 // DynamicTemplate-038
208 vt2[0].f1 := ?;
209}
210
211function f5() runs on C return template T6 {
212 var template T6 vt12 := {}, vt13;
213 var T6 v1;
214 // DynamicTemplate-039
215 vt13 := f2(vt12);
216 // DynamicTemplate-040
217 P.send(vt12);
218 P.send(T6:vt12);
219 P.receive(vt13);
220 P.receive(T6:vt13) -> value v1;
221 // DynamicTemplate-041
222 v1 := valueof(vt12);
223 // DynamicTemplate-042
224 if (match(v1, vt13)) { }
225 // DynamicTemplate-011
226 return vt13;
227}
228
229// DynamicTemplate-043
230// DynamicTemplate-045
231function f6(in template integer par1, inout template bitstring par2,
232 out template objid par3) {
233}
234
235// DynamicTemplate-044
236function f7(inout template T3 par1, out template T5 par2,
237 in template T6 par3) runs on C {
238}
239
240// DynamicTemplate-046
241external function ef3(in template T1 par1, inout template T2 par2,
242 out template T3 par3);
243
244// DynamicTemplate-047
245testcase tc2(in template T4 par1, inout template T5 par2,
246 out template T6 par3) runs on C {
247}
248
249// DynamicTemplate-048
250altstep as2(in template float par1, out template octetstring par2,
251 inout template universal charstring par3) {
252 [] any timer.timeout { }
253}
254
255function f8(out template T6 par1, inout template bitstring par2) runs on C {
256 var bitstring vbs;
257 var template bitstring vtbs;
258 // DynamicTemplate-049
259 par1 := { ?, ? };
260 par1[0] := { f1 := ? };
261 // DynamicTemplate-050
262 vtbs := par2;
263 // DynamicTemplate-051
264 f6(1, par2, par1[1].f2.f2);
265 // DynamicTemplate-052
266 P.send(par2);
267 P.receive(par2);
268 // DynamicTemplate-053
269 vbs := valueof(par2);
270 if (match(vbs, par2)) { }
271}
272
273
274// DynamicTemplate-030
275control {
276 var template verdicttype vt := complement(fail);
277}
278
279}
This page took 0.03783 seconds and 5 git commands to generate.