1 /******************************************************************************
2 * Copyright (c) 2000-2015 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 ******************************************************************************/
9 type port PCOType message
14 type component MTCType
16 port PCOType comp_port1,comp_port2;
17 const integer comp_const_i:= 0;
18 var integer comp_var_i := 0;
19 timer comp_t := 100.0;
22 template integer templ_int := 0;
23 template integer templ_int2 := 1;
31 template rec_type t1(in integer x:=1, in integer y := 1):=
43 type function func_type(in boolean is_set := false, in boolean b := false) return verdicttype;
44 const func_type func_const := refers(boolean_function);
46 function simple_integers(in integer i1, in integer i2 := 0, in integer i3 := 0) return integer
51 function simple_integer_template(in integer i1, template integer i2:=templ_int) return integer
53 return i1 + valueof(i2);
56 function missing_integers(in integer i1:=0, in integer i2, inout integer i3) return integer
61 function mixed_integers(in integer i1:=0, in integer i2, in integer i3:=0) return integer
66 function lotsof_mixed_integers(in integer i1:=0, in integer i2:=0, in integer i3, in integer i4 := 0, in integer i5:=0, in integer i6:=comp_const_i, inout integer i7:= comp_var_i) runs on MTCType return integer
68 return i1+i2+i3+i4+i5+i6+i7;
71 function boolean_function(in boolean is_set := false, in boolean b := false) return verdicttype
73 if(is_set and b == true) {return pass;}
74 else if(not(is_set) and b == false) {return pass;}
78 function float_function(in boolean is_set := false, in float f:=0.0) return verdicttype
80 if(is_set and f == 1.0) {return pass;}
81 else if(not(is_set) and f == 0.0) {return pass;}
85 function charstring_function(in boolean is_set := false, in charstring c:="") return verdicttype
87 if(is_set and c == "Hello") {return pass;}
88 else if(not(is_set) and c == "") {return pass;}
92 function octetstring_function( in boolean is_set := false, in octetstring o:=''O) return verdicttype
94 if(is_set and o == '11'O) {return pass;}
95 else if(not(is_set) and o == ''O) {return pass;}
99 function bitstring_function( in boolean is_set := false, in bitstring b:=''B) return verdicttype
101 if(is_set and b == '11'B) {return pass;}
102 else if(not(is_set) and b == ''B) {return pass;}
106 function record_function(in boolean is_set := false, in rec_type r:={0,0}) return verdicttype
108 if(is_set and r == {1,1}) {return pass;}
109 else if(not(is_set) and r == {0,0}) {return pass;}
113 function set_function(in boolean is_set := false, in set_type r:={a:=0,b:=0}) return verdicttype
115 if(is_set and r == {a:=1,b:=1}) {return pass;}
116 else if(not(is_set) and r == {a:=0,b:=0}) {return pass;}
120 function timer_function(in boolean is_set := false, inout timer t := comp_t) runs on MTCType return verdicttype
122 if(is_set and t.running) {return pass;}
123 else if(not(is_set) and not(t.running)) { return pass;}
127 function port_function(in boolean is_set := false, inout PCOType p := comp_port1) runs on MTCType return verdicttype
132 []p.receive(charstring:"default"){
133 if(is_set){return fail;}
136 []p.receive(charstring:"actual"){
137 if(is_set){return pass;}
140 []t.timeout{return fail;}
146 altstep simple_altstep(in boolean is_set := false) runs on MTCType
148 []comp_port1.receive("Hello")
150 if(is_set){setverdict(pass);}
151 else{setverdict(fail);}
155 if(is_set){setverdict(fail);}
156 else{setverdict(pass);}
160 testcase simple_integer_test() runs on MTCType
162 var integer temporal;
163 if(simple_integers(1,2,3) == 6) {setverdict(pass);}
164 else {setverdict(fail);}
165 if(simple_integers(1,2,-) == 3) {setverdict(pass);}
166 else {setverdict(fail);}
167 if(simple_integers(1,2) == 3) {setverdict(pass);}
168 else {setverdict(fail);}
169 if(simple_integer_template(1,templ_int) == 1) {setverdict(pass);}
170 else {setverdict(fail);}
171 if(simple_integer_template(1,templ_int2) == 2) {setverdict(pass);}
172 else {setverdict(fail);}
173 if(simple_integer_template(1,-) == 1) {setverdict(pass);}
174 else {setverdict(fail);}
175 if(simple_integer_template(1) == 1) {setverdict(pass);}
176 else {setverdict(fail);}
178 if(missing_integers(-,1,temporal) == 3) {setverdict(pass);}
179 else {setverdict(fail);}
180 if(mixed_integers(1,2,3) == 6) {setverdict(pass);}
181 else {setverdict(fail);}
182 if(mixed_integers(1,2,-) == 3) {setverdict(pass);}
183 else {setverdict(fail);}
184 if(mixed_integers(1,2) == 3) {setverdict(pass);}
185 else {setverdict(fail);}
186 if(mixed_integers(-,2,3) == 5) {setverdict(pass);}
187 else {setverdict(fail);}
188 if(mixed_integers(-,2,-) == 2) {setverdict(pass);}
189 else {setverdict(fail);}
190 if(mixed_integers(-,2) == 2) {setverdict(pass);}
191 else {setverdict(fail);}
192 if(lotsof_mixed_integers(1,2,3,4,5,6) == 21) {setverdict(pass);}
193 else {setverdict(fail);}
194 if(lotsof_mixed_integers(-,-,3,4,5,6) == 18) {setverdict(pass);}
195 else {setverdict(fail);}
197 if(lotsof_mixed_integers(-,-,3,4,5,6,temporal) == 25) {setverdict(pass);}
198 else {setverdict(fail);}
199 if(lotsof_mixed_integers(1,2,3) == 6) {setverdict(pass);}
200 else {setverdict(fail);}
201 if(lotsof_mixed_integers(-,-,3) == 3) {setverdict(pass);}
202 else {setverdict(fail);}
205 testcase simple_boolean_test() runs on MTCType
207 setverdict(boolean_function(true,true));
208 setverdict(boolean_function(false,-));
209 setverdict(boolean_function(false));
210 setverdict(boolean_function(-,-));
211 setverdict(boolean_function());
214 testcase simple_float_test() runs on MTCType
216 setverdict(float_function(true,1.0));
217 setverdict(float_function(false,-));
218 setverdict(float_function(false));
219 setverdict(float_function(-,-));
220 setverdict(float_function());
223 testcase simple_charstring_test() runs on MTCType
225 setverdict(charstring_function(true,"Hello"));
226 setverdict(charstring_function(false,-));
227 setverdict(charstring_function(false));
228 setverdict(charstring_function(-,-));
229 setverdict(charstring_function());
232 testcase simple_octetstring_test() runs on MTCType
234 setverdict(octetstring_function(true,'11'O));
235 setverdict(octetstring_function(false,-));
236 setverdict(octetstring_function(false));
237 setverdict(octetstring_function(-,-));
238 setverdict(octetstring_function());
241 testcase simple_bitstring_test() runs on MTCType
243 setverdict(bitstring_function(true,'11'B));
244 setverdict(bitstring_function(false,-));
245 setverdict(bitstring_function(false));
246 setverdict(bitstring_function(-,-));
247 setverdict(bitstring_function());
250 testcase simple_record_test() runs on MTCType
252 setverdict(record_function(true,{1,1}));
253 setverdict(record_function(false,-));
254 setverdict(record_function(false));
255 setverdict(record_function(-,-));
256 setverdict(record_function());
259 testcase simple_set_test() runs on MTCType
261 setverdict(set_function(true,{a:=1,b:=1}));
262 setverdict(set_function(false,-));
263 setverdict(set_function(false));
264 setverdict(set_function(-,-));
265 setverdict(set_function());
268 testcase simple_timer_test() runs on MTCType
272 setverdict(timer_function(true,temp));
275 setverdict(timer_function(true,comp_t));
277 setverdict(timer_function(false,-));
278 setverdict(timer_function(false));
279 setverdict(timer_function(-,-));
280 setverdict(timer_function());
283 testcase simple_port_test() runs on MTCType
285 connect(self:comp_port1,self:comp_port1);
286 connect(self:comp_port2,self:comp_port2);
287 comp_port2.send("actual");
288 setverdict(port_function(true,comp_port2));
289 comp_port1.send("default");
290 setverdict(port_function(false,-));
291 comp_port1.send("default");
292 setverdict(port_function(false));
293 comp_port1.send("default");
294 setverdict(port_function(-,-));
295 comp_port1.send("default");
296 setverdict(port_function());
297 disconnect(self:comp_port1,self:comp_port1);
298 disconnect(self:comp_port2,self:comp_port2);
301 testcase altstep_test() runs on MTCType
303 connect(self:comp_port1,self:comp_port1);
305 comp_port1.send("Hello");
308 []simple_altstep(true){T.stop;}
309 []T.timeout {setverdict(inconc);}
311 comp_port1.send("rossz uzenet");
314 []simple_altstep(){T.stop;}
315 []T.timeout {setverdict(inconc);}
317 activate(simple_altstep(true));
318 comp_port1.send("Hello");
321 []T.timeout {setverdict(inconc);}
325 activate(simple_altstep());
326 comp_port1.send("rossz uzenet");
329 []simple_altstep(false){T.stop;}
330 []T.timeout {setverdict(inconc);}
333 disconnect(self:comp_port1,self:comp_port1);
336 testcase testcase_test(in boolean is_set := false, in integer x := 1,
337 in integer y := 1) runs on MTCType
339 if(not(is_set) and x == 1 and y == 1){setverdict(pass);}
340 else if(is_set and x == 2 and y == 2){setverdict(pass);}
341 else {setverdict(fail);}
344 testcase template_test() runs on MTCType
346 var rec_type given := {2,2};
347 var rec_type base := {1,1};
348 if(match(base,t1())){setverdict(pass);}
349 else{setverdict(fail);}
350 if(match(base,t1(-,-))){setverdict(pass);}
351 else{setverdict(fail);}
352 if(match(base,t1(1))){setverdict(pass);}
353 else{setverdict(fail);}
354 if(match(base,t1(-,1))){setverdict(pass);}
355 else{setverdict(fail);}
356 if(match(given,t1(2,2))){setverdict(pass);}
357 else{setverdict(fail);}
360 testcase functionreference_test() runs on MTCType
362 var func_type func_var := refers(boolean_function);
363 setverdict(func_var.apply(true,true));
364 setverdict(func_var.apply(false,-));
365 setverdict(func_var.apply(false));
366 setverdict(func_var.apply(-,-));
367 setverdict(func_var.apply());
368 setverdict(func_const.apply(true,true));
369 setverdict(func_const.apply(false,-));
370 setverdict(func_const.apply(false));
371 setverdict(func_const.apply(-,-));
372 setverdict(func_const.apply());
376 execute(simple_integer_test());
377 execute(simple_boolean_test());
378 execute(simple_float_test());
379 execute(simple_charstring_test());
380 execute(simple_octetstring_test());
381 execute(simple_bitstring_test());
382 execute(simple_record_test());
383 execute(simple_set_test());
384 execute(simple_timer_test());
385 execute(simple_port_test());
386 execute(altstep_test());
387 execute(testcase_test(false,-,-));
388 execute(testcase_test(false,-,1));
389 execute(testcase_test(false));
390 execute(testcase_test());
391 execute(testcase_test(true,2,2));
392 execute(template_test());
393 execute(functionreference_test());