Commit | Line | Data |
---|---|---|
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 | ******************************************************************************/ | |
8 | module TsetOper { | |
9 | // ********** Type definitions ********************* | |
10 | type component setOper_mycomp {}; | |
11 | type set typedefset_empty {}; | |
12 | type enumerated setOper_myenum {xx1,xx2,xx3}; | |
13 | type record setOper_trecord { | |
14 | integer x1 optional, | |
15 | float x2 }; | |
16 | type record of octetstring setOper_trecof; | |
17 | type set setOper_tset { | |
18 | integer x1, | |
19 | float x2 optional }; | |
20 | type set of charstring setOper_tsetof; | |
21 | type union setOper_tunion { | |
22 | integer x1, | |
23 | float x2 }; | |
24 | type set setOper_myset1 { // set from basic types | |
25 | integer x1, | |
26 | float x2, | |
27 | setOper_myenum x3 }; | |
28 | type set setOper_myset2 { // set from basic types, with optional field | |
29 | integer x1, | |
30 | float x2, | |
31 | setOper_myenum x3, | |
32 | integer x4 optional }; | |
33 | type set setOper_myset3 { // set from record, with optional field | |
34 | setOper_trecord x1, | |
35 | setOper_trecord x2 optional | |
36 | }; | |
37 | type set setOper_myset4 { // set from record of, with optional field | |
38 | setOper_trecof x1, | |
39 | setOper_trecof x2 optional | |
40 | }; | |
41 | type set setOper_myset5 { // set from set, with optional field | |
42 | setOper_tset x1, | |
43 | setOper_tset x2 optional | |
44 | }; | |
45 | type set setOper_myset6 { // set from set of, with optional field | |
46 | setOper_tsetof x1, | |
47 | setOper_tsetof x2 optional | |
48 | }; | |
49 | type set setOper_myset7 { // set from union, with optional field | |
50 | setOper_tunion x1, | |
51 | setOper_tunion x2 optional | |
52 | }; | |
53 | type set typedefsetComp_myset { | |
54 | setOper_trecord x1, | |
55 | setOper_trecof x2, | |
56 | setOper_tset x3, | |
57 | setOper_tsetof x4 optional, | |
58 | setOper_tunion x5, | |
59 | integer x6[3] | |
60 | }; | |
61 | // *************** Constanst *********************** | |
62 | const setOper_trecord setOper_temp1:={ x1:=omit, x2:=3.4 }; | |
63 | const setOper_trecof setOper_temp2:={ 'AF12'O }; | |
64 | const setOper_tset setOper_temp3:={ x1:=234, x2:=1.9}; | |
65 | const setOper_tsetof setOper_temp4:={"f","8"}; | |
66 | const setOper_tunion setOper_temp5:={ x2:=1.3 }; | |
67 | const setOper_myset1 setOper_const1:={ //set with basic types | |
68 | x1:=1, | |
69 | x2:=1.2, | |
70 | x3:=xx2 }; | |
71 | const setOper_myset2 setOper_const2:={ //set with basic types, with optional field | |
72 | x1:=1, | |
73 | x2:=1.2, | |
74 | x3:=xx2, | |
75 | x4:=2 }; | |
76 | const setOper_myset2 setOper_const3:={ //set with basic types, with omited field | |
77 | x1:=1, | |
78 | x2:=1.2, | |
79 | x3:=xx2, | |
80 | x4:=omit }; | |
81 | const setOper_myset3 setOper_const4:={ //set from record | |
82 | x1:={ x1:=1, x2:=1.2 }, | |
83 | x2:=setOper_temp1 | |
84 | }; | |
85 | const setOper_myset3 setOper_const5:={ //set from record, with omited field | |
86 | x1:={ x1:=1, x2:=1.2 }, | |
87 | x2:=omit | |
88 | }; | |
89 | const setOper_myset4 setOper_const6:={ //set from record of | |
90 | x1:={ '12AB'O, 'CD12'O }, | |
91 | x2:=setOper_temp2 | |
92 | }; | |
93 | const setOper_myset4 setOper_const7:={ //set from record of, with omited field | |
94 | x1:={ '12AB'O, 'CD12'O }, | |
95 | x2:=omit | |
96 | }; | |
97 | const setOper_myset5 setOper_const8:={ //set from set | |
98 | x1:={ x1:=2, x2:=1.3}, | |
99 | x2:=setOper_temp3 | |
100 | }; | |
101 | const setOper_myset5 setOper_const9:={ //set from set, with omited field | |
102 | x1:={ x1:=2, x2:=1.3}, | |
103 | x2:=omit | |
104 | }; | |
105 | const setOper_myset6 setOper_const10:={ //set from set of | |
106 | x1:={"a","b"}, | |
107 | x2:=setOper_temp4 //{"f","8"}, | |
108 | }; | |
109 | const setOper_myset6 setOper_const11:={ //set from set of, with omited field | |
110 | x1:={"a","b"}, | |
111 | x2:=omit | |
112 | }; | |
113 | const setOper_myset7 setOper_const12:={ //set from union | |
114 | x1:={ x1 :=3 }, | |
115 | x2:=setOper_temp5 //{ x2:=1.3 } | |
116 | }; | |
117 | const setOper_myset7 setOper_const13:={ //set from union, with omited field | |
118 | x1:={ x1 :=3 }, | |
119 | x2:=omit | |
120 | }; | |
121 | const typedefsetComp_myset setOper_const14 := { // complex set | |
122 | x1 := { x1:=omit, x2:=3.4 }, | |
123 | x2 := { 'AF12'O }, | |
124 | x3 := { x1:=234, x2:=1.9}, | |
125 | x4 := {"f","8"}, | |
126 | x5 := { x2:=1.3 }, | |
127 | x6 := {1,2,3} | |
128 | } | |
129 | ||
130 | testcase setAssign() runs on setOper_mycomp{ | |
131 | var setOper_myset1 x1:={ //set with basic types | |
132 | x1:=1, | |
133 | x2:=1.2, | |
134 | x3:=xx2 }; | |
135 | var setOper_myset1 x2,x3; | |
136 | x2:={ x1:=1, x2:=1.2, x3:=xx2 }; | |
137 | x3:={ x2:=1.2, x1:=1, x3:=xx2 }; | |
138 | if (x1.x1==1) {setverdict(pass);} //at declaration | |
139 | else {setverdict(fail);} | |
140 | if (x1.x2==1.2) {setverdict(pass);} | |
141 | else {setverdict(fail);} | |
142 | if (x1.x3==xx2) {setverdict(pass);} | |
143 | else {setverdict(fail);} | |
144 | if (x2.x1==1) {setverdict(pass);} //later | |
145 | else {setverdict(fail);} | |
146 | if (x2.x2==1.2) {setverdict(pass);} | |
147 | else {setverdict(fail);} | |
148 | if (x2.x3==xx2) {setverdict(pass);} | |
149 | else {setverdict(fail);} | |
150 | if (x3.x1==1) {setverdict(pass);} //out of order | |
151 | else {setverdict(fail);} | |
152 | if (x3.x2==1.2) {setverdict(pass);} | |
153 | else {setverdict(fail);} | |
154 | if (x3.x3==xx2) {setverdict(pass);} | |
155 | else {setverdict(fail);} | |
156 | } | |
157 | ||
158 | testcase setAssignOpt() runs on setOper_mycomp{ | |
159 | var integer inttemp:=2; | |
160 | var setOper_myset2 x1:={ //set with basic types, with optional field | |
161 | x1:=1, | |
162 | x2:=1.2, | |
163 | x3:=xx2, | |
164 | x4:=inttemp}; //2 | |
165 | var setOper_myset2 x2:={ //set with basic types, with omited field | |
166 | x1:=1, | |
167 | x2:=1.2, | |
168 | x3:=xx2, | |
169 | x4:=omit }; | |
170 | var setOper_myset2 x3, x4; | |
171 | x3:={ //set with basic types, with optional field | |
172 | x1:=1, | |
173 | x2:=1.2, | |
174 | x3:=xx2, | |
175 | x4:=inttemp }; //2 | |
176 | x4:={ //set with basic types, with omited field | |
177 | x1:=1, | |
178 | x2:=1.2, | |
179 | x3:=xx2, | |
180 | x4:=omit }; | |
181 | //at declaration, with optional field | |
182 | if (x1.x1==1) {setverdict(pass);} | |
183 | else {setverdict(fail);} | |
184 | if (x1.x2==1.2) {setverdict(pass);} | |
185 | else {setverdict(fail);} | |
186 | if (x1.x3==xx2) {setverdict(pass);} | |
187 | else {setverdict(fail);} | |
188 | if (x1.x4==2) {setverdict(pass);} | |
189 | else {setverdict(fail);} | |
190 | //at declaration, with omited field | |
191 | if (x2.x1==1) {setverdict(pass);} | |
192 | else {setverdict(fail);} | |
193 | if (x2.x2==1.2) {setverdict(pass);} | |
194 | else {setverdict(fail);} | |
195 | if (x2.x3==xx2) {setverdict(pass);} | |
196 | else {setverdict(fail);} | |
197 | if (not(ispresent(x2.x4))) {setverdict(pass);} | |
198 | else {setverdict(fail);} | |
199 | //later, with optional field | |
200 | if (x3.x1==1) {setverdict(pass);} | |
201 | else {setverdict(fail);} | |
202 | if (x3.x2==1.2) {setverdict(pass);} | |
203 | else {setverdict(fail);} | |
204 | if (x3.x3==xx2) {setverdict(pass);} | |
205 | else {setverdict(fail);} | |
206 | if (x3.x4==2) {setverdict(pass);} | |
207 | else {setverdict(fail);} | |
208 | //later, with optional field | |
209 | if (x4.x1==1) {setverdict(pass);} | |
210 | else {setverdict(fail);} | |
211 | if (x4.x2==1.2) {setverdict(pass);} | |
212 | else {setverdict(fail);} | |
213 | if (x4.x3==xx2) {setverdict(pass);} | |
214 | else {setverdict(fail);} | |
215 | if (not(ispresent(x4.x4))) {setverdict(pass);} | |
216 | else {setverdict(fail);} | |
217 | } | |
218 | ||
219 | testcase setAssignRec() runs on setOper_mycomp{ | |
220 | var setOper_trecord temp1:={ x1:=omit, x2:=3.4 }; | |
221 | var setOper_myset3 x1:={ //set from record | |
222 | x1:={ x1:=1, x2:=1.2 }, | |
223 | x2:=temp1 | |
224 | }; | |
225 | var setOper_myset3 x2:={ //set from record, with omited field | |
226 | x1:={ x1:=1, x2:=1.2 }, | |
227 | x2:=omit | |
228 | }; | |
229 | var setOper_myset3 x3,x4; | |
230 | x3:={ //set from record | |
231 | x1:={ x1:=1, x2:=1.2 }, | |
232 | x2:=temp1 | |
233 | }; | |
234 | x4:={ //set from record, with omited field | |
235 | x1:={ x1:=1, x2:=1.2 }, | |
236 | x2:=omit | |
237 | }; | |
238 | if (x1.x1.x1==1) {setverdict(pass);} //at declaration | |
239 | else {setverdict(fail);} | |
240 | if (x1.x1.x2==1.2) {setverdict(pass);} | |
241 | else {setverdict(fail);} | |
242 | if (x1.x2==temp1) {setverdict(pass);} | |
243 | else {setverdict(fail);} | |
244 | if (x2.x1.x1==1) {setverdict(pass);} //at declaration, omit | |
245 | else {setverdict(fail);} | |
246 | if (x2.x1.x2==1.2) {setverdict(pass);} | |
247 | else {setverdict(fail);} | |
248 | if (not(ispresent(x2.x2))) {setverdict(pass);} | |
249 | else {setverdict(fail);} | |
250 | if (x3.x1.x1==1) {setverdict(pass);} //later | |
251 | else {setverdict(fail);} | |
252 | if (x3.x1.x2==1.2) {setverdict(pass);} | |
253 | else {setverdict(fail);} | |
254 | if (x3.x2==temp1) {setverdict(pass);} | |
255 | else {setverdict(fail);} | |
256 | if (x4.x1.x1==1) {setverdict(pass);} //later, omit | |
257 | else {setverdict(fail);} | |
258 | if (x4.x1.x2==1.2) {setverdict(pass);} | |
259 | else {setverdict(fail);} | |
260 | if (not(ispresent(x4.x2))) {setverdict(pass);} | |
261 | else {setverdict(fail);} | |
262 | } | |
263 | ||
264 | testcase setAssignRecof() runs on setOper_mycomp{ | |
265 | var setOper_trecof temp2:={'AF12'O}; | |
266 | var setOper_myset4 x1:={ //set from record of | |
267 | x1:={ '12AB'O, 'CD12'O }, | |
268 | x2:=temp2 | |
269 | }; | |
270 | var setOper_myset4 x2:={ //set from record of, with omited field | |
271 | x1:={ '12AB'O, 'CD12'O }, | |
272 | x2:=omit | |
273 | }; | |
274 | var setOper_myset4 x3,x4 | |
275 | x3:={ //set from record of | |
276 | x1:={ '12AB'O, 'CD12'O }, | |
277 | x2:=temp2 | |
278 | }; | |
279 | x4:={ //set from record of, with omited field | |
280 | x1:={ '12AB'O, 'CD12'O }, | |
281 | x2:=omit | |
282 | }; | |
283 | if (x1.x1[0]=='12AB'O) {setverdict(pass);} //at declaration | |
284 | else {setverdict(fail);} | |
285 | if (x1.x1[1]=='CD12'O) {setverdict(pass);} | |
286 | else {setverdict(fail);} | |
287 | if (x1.x2==temp2) {setverdict(pass);} | |
288 | else {setverdict(fail);} | |
289 | if (x2.x1[0]=='12AB'O) {setverdict(pass);} //at declaration, omit | |
290 | else {setverdict(fail);} | |
291 | if (x2.x1[1]=='CD12'O) {setverdict(pass);} | |
292 | else {setverdict(fail);} | |
293 | if (not(ispresent(x2.x2))) {setverdict(pass);} | |
294 | else {setverdict(fail);} | |
295 | if (x3.x1[0]=='12AB'O) {setverdict(pass);} //later | |
296 | else {setverdict(fail);} | |
297 | if (x3.x1[1]=='CD12'O) {setverdict(pass);} | |
298 | else {setverdict(fail);} | |
299 | if (x3.x2==temp2) {setverdict(pass);} | |
300 | else {setverdict(fail);} | |
301 | if (x4.x1[0]=='12AB'O) {setverdict(pass);} //later, omit | |
302 | else {setverdict(fail);} | |
303 | if (x4.x1[1]=='CD12'O) {setverdict(pass);} | |
304 | else {setverdict(fail);} | |
305 | if (not(ispresent(x4.x2))) {setverdict(pass);} | |
306 | else {setverdict(fail);} | |
307 | } | |
308 | ||
309 | testcase setAssignSet() runs on setOper_mycomp{ | |
310 | var setOper_tset temp1:={ x1:=2, x2:=omit }; | |
311 | var setOper_myset5 x1:={ //set from set | |
312 | x1:={ x1:=1, x2:=1.2 }, | |
313 | x2:=temp1 | |
314 | }; | |
315 | var setOper_myset5 x2:={ //set from set, with omited field | |
316 | x1:={ x1:=1, x2:=1.2 }, | |
317 | x2:=omit | |
318 | }; | |
319 | var setOper_myset5 x3,x4; | |
320 | x3:={ //set from set | |
321 | x1:={ x1:=1, x2:=1.2 }, | |
322 | x2:=temp1 | |
323 | }; | |
324 | x4:={ //set from set, with omited field | |
325 | x1:={ x1:=1, x2:=1.2 }, | |
326 | x2:=omit | |
327 | }; | |
328 | if (x1.x1.x1==1) {setverdict(pass);} //at declaration | |
329 | else {setverdict(fail);} | |
330 | if (x1.x1.x2==1.2) {setverdict(pass);} | |
331 | else {setverdict(fail);} | |
332 | if (x1.x2==temp1) {setverdict(pass);} | |
333 | else {setverdict(fail);} | |
334 | if (x2.x1.x1==1) {setverdict(pass);} //at declaration, omit | |
335 | else {setverdict(fail);} | |
336 | if (x2.x1.x2==1.2) {setverdict(pass);} | |
337 | else {setverdict(fail);} | |
338 | if (not(ispresent(x2.x2))) {setverdict(pass);} | |
339 | else {setverdict(fail);} | |
340 | if (x3.x1.x1==1) {setverdict(pass);} //later | |
341 | else {setverdict(fail);} | |
342 | if (x3.x1.x2==1.2) {setverdict(pass);} | |
343 | else {setverdict(fail);} | |
344 | if (x3.x2==temp1) {setverdict(pass);} | |
345 | else {setverdict(fail);} | |
346 | if (x4.x1.x1==1) {setverdict(pass);} //later, omit | |
347 | else {setverdict(fail);} | |
348 | if (x4.x1.x2==1.2) {setverdict(pass);} | |
349 | else {setverdict(fail);} | |
350 | if (not(ispresent(x4.x2))) {setverdict(pass);} | |
351 | else {setverdict(fail);} | |
352 | } | |
353 | ||
354 | testcase setAssignSetof() runs on setOper_mycomp{ | |
355 | var setOper_tsetof temp2:={"a","7"}; | |
356 | var setOper_myset6 x1:={ //set from set of | |
357 | x1:={ "1", "a" }, | |
358 | x2:=temp2 | |
359 | }; | |
360 | var setOper_myset6 x2:={ //set from set of, with omited field | |
361 | x1:={ "1", "a" }, | |
362 | x2:=omit | |
363 | }; | |
364 | var setOper_myset6 x3,x4 | |
365 | x3:={ //set from set of | |
366 | x1:={ "1", "a" }, | |
367 | x2:=temp2 | |
368 | }; | |
369 | x4:={ //set from set of, with omited field | |
370 | x1:={ "1","a" }, | |
371 | x2:=omit | |
372 | }; | |
373 | if (x1.x1[0]=="1") {setverdict(pass);} //at declaration | |
374 | else {setverdict(fail);} | |
375 | if (x1.x1[1]=="a") {setverdict(pass);} | |
376 | else {setverdict(fail);} | |
377 | if (x1.x2==temp2) {setverdict(pass);} | |
378 | else {setverdict(fail);} | |
379 | if (x2.x1[0]=="1") {setverdict(pass);} //at declaration, omit | |
380 | else {setverdict(fail);} | |
381 | if (x2.x1[1]=="a") {setverdict(pass);} | |
382 | else {setverdict(fail);} | |
383 | if (not(ispresent(x2.x2))) {setverdict(pass);} | |
384 | else {setverdict(fail);} | |
385 | if (x3.x1[0]=="1") {setverdict(pass);} //later | |
386 | else {setverdict(fail);} | |
387 | if (x3.x1[1]=="a") {setverdict(pass);} | |
388 | else {setverdict(fail);} | |
389 | if (x3.x2==temp2) {setverdict(pass);} | |
390 | else {setverdict(fail);} | |
391 | if (x4.x1[0]=="1") {setverdict(pass);} //later, omit | |
392 | else {setverdict(fail);} | |
393 | if (x4.x1[1]=="a") {setverdict(pass);} | |
394 | else {setverdict(fail);} | |
395 | if (not(ispresent(x4.x2))) {setverdict(pass);} | |
396 | else {setverdict(fail);} | |
397 | } | |
398 | ||
399 | testcase setAssignUnion() runs on setOper_mycomp{ | |
400 | var setOper_tunion temp5 := {x2:=1.3} | |
401 | var setOper_myset7 x1:={ //set from union | |
402 | x1:={ x1 :=3 }, | |
403 | x2:=temp5 //{ x2:=1.3 } | |
404 | }; | |
405 | var setOper_myset7 x2:={ //set from union, with omited field | |
406 | x1:={ x1 :=3 }, | |
407 | x2:=omit | |
408 | }; | |
409 | var setOper_myset7 x3,x4; | |
410 | x3:={ //set from union | |
411 | x1:={ x1 :=3 }, | |
412 | x2:=temp5 //{ x2:=1.3 } | |
413 | }; | |
414 | x4:={ //set from union, with omited field | |
415 | x1:={ x1 :=3 }, | |
416 | x2:=omit | |
417 | }; | |
418 | if (x1.x1.x1==3) {setverdict(pass);} //at declaration | |
419 | else {setverdict(fail);} | |
420 | if (ischosen(x1.x1.x1)) {setverdict(pass);} | |
421 | else {setverdict(fail);} | |
422 | if (not(ischosen(x1.x1.x2))) {setverdict(pass);} | |
423 | else {setverdict(fail);} | |
424 | if (x1.x2==temp5) {setverdict(pass);} | |
425 | else {setverdict(fail);} | |
426 | if (x2.x1.x1==3) {setverdict(pass);} //at declaration, omit | |
427 | else {setverdict(fail);} | |
428 | if (ischosen(x2.x1.x1)) {setverdict(pass);} | |
429 | else {setverdict(fail);} | |
430 | if (not(ischosen(x2.x1.x2))) {setverdict(pass);} | |
431 | else {setverdict(fail);} | |
432 | if (not(ispresent(x2.x2))) {setverdict(pass);} | |
433 | else {setverdict(fail);} | |
434 | if (x3.x1.x1==3) {setverdict(pass);} //later | |
435 | else {setverdict(fail);} | |
436 | if (ischosen(x3.x1.x1)) {setverdict(pass);} | |
437 | else {setverdict(fail);} | |
438 | if (not(ischosen(x3.x1.x2))) {setverdict(pass);} | |
439 | else {setverdict(fail);} | |
440 | if (x3.x2==temp5) {setverdict(pass);} | |
441 | else {setverdict(fail);} | |
442 | if (x4.x1.x1==3) {setverdict(pass);} //later, omit | |
443 | else {setverdict(fail);} | |
444 | if (ischosen(x4.x1.x1)) {setverdict(pass);} | |
445 | else {setverdict(fail);} | |
446 | if (not(ischosen(x4.x1.x2))) {setverdict(pass);} | |
447 | else {setverdict(fail);} | |
448 | if (not(ispresent(x4.x2))) {setverdict(pass);} | |
449 | else {setverdict(fail);} | |
450 | } | |
451 | ||
452 | testcase setAssignElem() runs on setOper_mycomp{ | |
453 | var setOper_myset1 x1:={ //set with basic types | |
454 | x1:=1, | |
455 | x2:=1.2, | |
456 | x3:=xx2 }; | |
457 | x1.x2:=3.4; | |
458 | if (x1.x1==1) {setverdict(pass);} | |
459 | else {setverdict(fail);} | |
460 | if (x1.x2==3.4) {setverdict(pass);} | |
461 | else {setverdict(fail);} | |
462 | if (x1.x3==xx2) {setverdict(pass);} | |
463 | else {setverdict(fail);} | |
464 | } | |
465 | ||
466 | ||
467 | testcase setAssignElemOpt() runs on setOper_mycomp{ | |
468 | var integer inttemp:=2; | |
469 | var setOper_myset2 x1:={ //set with basic types | |
470 | x1:=1, | |
471 | x2:=1.2, | |
472 | x3:=xx2, | |
473 | x4:=omit } ; //2 | |
474 | var setOper_myset2 x2, x3, x4; | |
475 | x2:=x1; | |
476 | x3:={x1:=1, x2:=1.2, x3:=xx2, x4:=inttemp }; | |
477 | x4:=x3; | |
478 | x1.x1:=2; //not optional field | |
479 | x2.x4:=3; //optional field; omited-> value | |
480 | x3.x4:=3; //optional field; value-> value | |
481 | x4.x4:=omit; //optional field; value -> omited | |
482 | //not optional field | |
483 | if (x1.x1==2) {setverdict(pass);} | |
484 | else {setverdict(fail);} | |
485 | if (x1.x2==1.2) {setverdict(pass);} | |
486 | else {setverdict(fail);} | |
487 | if (x1.x3==xx2) {setverdict(pass);} | |
488 | else {setverdict(fail);} | |
489 | if (not(ispresent(x1.x4))) {setverdict(pass);} | |
490 | else {setverdict(fail);} | |
491 | //optional field, omited -> value | |
492 | if (x2.x1==1) {setverdict(pass);} | |
493 | else {setverdict(fail);} | |
494 | if (x2.x2==1.2) {setverdict(pass);} | |
495 | else {setverdict(fail);} | |
496 | if (x2.x3==xx2) {setverdict(pass);} | |
497 | else {setverdict(fail);} | |
498 | if (x2.x4==3) {setverdict(pass);} | |
499 | else {setverdict(fail);} | |
500 | //optional field; value-> value | |
501 | if (x3.x1==1) {setverdict(pass);} | |
502 | else {setverdict(fail);} | |
503 | if (x3.x2==1.2) {setverdict(pass);} | |
504 | else {setverdict(fail);} | |
505 | if (x3.x3==xx2) {setverdict(pass);} | |
506 | else {setverdict(fail);} | |
507 | if (x3.x4==3) {setverdict(pass);} | |
508 | else {setverdict(fail);} | |
509 | //optional field; value -> omited | |
510 | if (x4.x1==1) {setverdict(pass);} | |
511 | else {setverdict(fail);} | |
512 | if (x4.x2==1.2) {setverdict(pass);} | |
513 | else {setverdict(fail);} | |
514 | if (x4.x3==xx2) {setverdict(pass);} | |
515 | else {setverdict(fail);} | |
516 | if (not(ispresent(x4.x4))) {setverdict(pass);} | |
517 | else {setverdict(fail);} | |
518 | } | |
519 | ||
520 | testcase setAssignElemRec() runs on setOper_mycomp{ | |
521 | var setOper_trecord temp1:={ x1:=omit, x2:=3.4 }; | |
522 | var setOper_myset3 x1; | |
523 | x1:={ //set from record | |
524 | x1:={ x1:=1, x2:=1.2 }, | |
525 | x2:=temp1 | |
526 | }; | |
527 | x1.x1.x1:=2; | |
528 | temp1.x1:=3; | |
529 | x1.x2:=temp1; | |
530 | if (x1.x1.x1==2) {setverdict(pass);} | |
531 | else {setverdict(fail);} | |
532 | if (x1.x1.x2==1.2) {setverdict(pass);} | |
533 | else {setverdict(fail);} | |
534 | if (x1.x2==temp1) {setverdict(pass);} | |
535 | else {setverdict(fail);} | |
536 | } | |
537 | ||
538 | ||
539 | testcase setAssignElemRecof() runs on setOper_mycomp{ | |
540 | var setOper_trecof temp2:={'AF12'O}; | |
541 | var setOper_myset4 x1:={ //set from record of | |
542 | x1:={ '12AB'O, 'CD12'O }, | |
543 | x2:=temp2 | |
544 | }; | |
545 | x1.x1[1]:='34AB'O; | |
546 | if (x1.x1[0]=='12AB'O) {setverdict(pass);} | |
547 | else {setverdict(fail);} | |
548 | if (x1.x1[1]=='34AB'O) {setverdict(pass);} | |
549 | else {setverdict(fail);} | |
550 | if (x1.x2==temp2) {setverdict(pass);} | |
551 | else {setverdict(fail);} | |
552 | } | |
553 | ||
554 | testcase setAssignElemSet() runs on setOper_mycomp{ | |
555 | var setOper_tset temp1:={ x1:=2, x2:=omit }; | |
556 | var setOper_myset5 x1:={ //set from set | |
557 | x1:={ x1:=1, x2:=1.2 }, | |
558 | x2:=temp1 | |
559 | }; | |
560 | x1.x1.x2:=3.4; | |
561 | if (x1.x1.x1==1) {setverdict(pass);} | |
562 | else {setverdict(fail);} | |
563 | if (x1.x1.x2==3.4) {setverdict(pass);} | |
564 | else {setverdict(fail);} | |
565 | if (x1.x2==temp1) {setverdict(pass);} | |
566 | else {setverdict(fail);} | |
567 | } | |
568 | ||
569 | testcase setAssignElemSetof() runs on setOper_mycomp{ | |
570 | var setOper_tsetof temp2:={"a","7"}; | |
571 | var setOper_myset6 x1:={ //set from set of | |
572 | x1:={ "1", "a" }, | |
573 | x2:=temp2 | |
574 | }; | |
575 | x1.x1[0]:="h"; | |
576 | if (x1.x1[0]=="h") {setverdict(pass);} | |
577 | else {setverdict(fail);} | |
578 | if (x1.x1[1]=="a") {setverdict(pass);} | |
579 | else {setverdict(fail);} | |
580 | if (x1.x2==temp2) {setverdict(pass);} | |
581 | else {setverdict(fail);} | |
582 | } | |
583 | ||
584 | testcase setAssignElemUnion() runs on setOper_mycomp{ | |
585 | var setOper_tunion temp5 := {x2:=1.3} | |
586 | var setOper_myset7 x1:={ //set from union | |
587 | x1:={ x1 :=3 }, | |
588 | x2:=temp5 //{ x2:=1.3 } | |
589 | }; | |
590 | x1.x1.x2:=3.4; | |
591 | if (x1.x1.x2==3.4) {setverdict(pass);} | |
592 | else {setverdict(fail);} | |
593 | if (ischosen(x1.x1.x2)) {setverdict(pass);} | |
594 | else {setverdict(fail);} | |
595 | if (not(ischosen(x1.x1.x1))) {setverdict(pass);} | |
596 | else {setverdict(fail);} | |
597 | if (x1.x2==temp5) {setverdict(pass);} | |
598 | else {setverdict(fail);} | |
599 | } | |
600 | ||
601 | testcase setSizeof() runs on setOper_mycomp{ | |
602 | var integer inttemp:=2; | |
603 | var setOper_myset2 x1:={ //set with basic types, with optional field | |
604 | x1:=1, | |
605 | x2:=1.2, | |
606 | x3:=xx2, | |
607 | x4:=inttemp}; //2 | |
608 | var setOper_myset2 x2:={ //set with basic types, with omited field | |
609 | x1:=1, | |
610 | x2:=1.2, | |
611 | x3:=xx2, | |
612 | x4:=omit }; | |
613 | var setOper_myset2 x3, x4; | |
614 | x3:={ //set with basic types, with optional field | |
615 | x1:=1, | |
616 | x2:=1.2, | |
617 | x3:=xx2, | |
618 | x4:=inttemp }; //2 | |
619 | x4:={ //set with basic types, with omited field | |
620 | x1:=1, | |
621 | x2:=1.2, | |
622 | x3:=xx2, | |
623 | x4:=omit }; | |
624 | //if (sizeof(x1)==4) {setverdict(pass);} //at declaration, with optional field | |
625 | // else {setverdict(fail);} | |
626 | //if (sizeof(x2)==3) {setverdict(pass);} //at declaration, with omited field | |
627 | // else {setverdict(fail);} | |
628 | //if (sizeof(x3)==4) {setverdict(pass);} //later, with optional field | |
629 | // else {setverdict(fail);} | |
630 | //if (sizeof(x4)==3) {setverdict(pass);} //testcase, with optional field | |
631 | // else {setverdict(fail);} | |
632 | //if (sizeof(setOper_myset2)==4) {setverdict(pass);} // size of type | |
633 | // else {setverdict(fail);} | |
634 | } | |
635 | ||
636 | testcase setConst() runs on setOper_mycomp{ | |
637 | const setOper_myset1 const1:={ //set with basic types | |
638 | x1:=1, | |
639 | x2:=1.2, | |
640 | x3:=xx2 }; | |
641 | if (setOper_const1.x1==1) {setverdict(pass);} //definition part | |
642 | else {setverdict(fail);} | |
643 | if (setOper_const1.x2==1.2) {setverdict(pass);} | |
644 | else {setverdict(fail);} | |
645 | if (setOper_const1.x3==xx2) {setverdict(pass);} | |
646 | else {setverdict(fail);} | |
647 | if (const1.x1==1) {setverdict(pass);} //testcase | |
648 | else {setverdict(fail);} | |
649 | if (const1.x2==1.2) {setverdict(pass);} | |
650 | else {setverdict(fail);} | |
651 | if (const1.x3==xx2) {setverdict(pass);} | |
652 | else {setverdict(fail);} | |
653 | } | |
654 | ||
655 | testcase setConstOpt() runs on setOper_mycomp{ | |
656 | const setOper_myset2 const2:={ //set with basic types, with optional field | |
657 | x1:=1, | |
658 | x2:=1.2, | |
659 | x3:=xx2, | |
660 | x4:=2 }; | |
661 | const setOper_myset2 const3:={ //set with basic types, with omited field | |
662 | x1:=1, | |
663 | x2:=1.2, | |
664 | x3:=xx2, | |
665 | x4:=omit }; | |
666 | //definition part, with optional field | |
667 | if (setOper_const2.x1==1) {setverdict(pass);} | |
668 | else {setverdict(fail);} | |
669 | if (setOper_const2.x2==1.2) {setverdict(pass);} | |
670 | else {setverdict(fail);} | |
671 | if (setOper_const2.x3==xx2) {setverdict(pass);} | |
672 | else {setverdict(fail);} | |
673 | if (setOper_const2.x4==2) {setverdict(pass);} | |
674 | else {setverdict(fail);} | |
675 | //definition part, with omited field | |
676 | if (setOper_const3.x1==1) {setverdict(pass);} | |
677 | else {setverdict(fail);} | |
678 | if (setOper_const3.x2==1.2) {setverdict(pass);} | |
679 | else {setverdict(fail);} | |
680 | if (setOper_const3.x3==xx2) {setverdict(pass);} | |
681 | else {setverdict(fail);} | |
682 | if (not(ispresent(setOper_const3.x4))) {setverdict(pass);} | |
683 | else {setverdict(fail);} | |
684 | //testcase, with optional field | |
685 | if (const2.x1==1) {setverdict(pass);} | |
686 | else {setverdict(fail);} | |
687 | if (const2.x2==1.2) {setverdict(pass);} | |
688 | else {setverdict(fail);} | |
689 | if (const2.x3==xx2) {setverdict(pass);} | |
690 | else {setverdict(fail);} | |
691 | if (const2.x4==2) {setverdict(pass);} | |
692 | else {setverdict(fail);} | |
693 | //testcase, with optional field | |
694 | if (const3.x1==1) {setverdict(pass);} | |
695 | else {setverdict(fail);} | |
696 | if (const3.x2==1.2) {setverdict(pass);} | |
697 | else {setverdict(fail);} | |
698 | if (const3.x3==xx2) {setverdict(pass);} | |
699 | else {setverdict(fail);} | |
700 | if (not(ispresent(const3.x4))) {setverdict(pass);} | |
701 | else {setverdict(fail);} | |
702 | } | |
703 | ||
704 | testcase setConstRec() runs on setOper_mycomp{ | |
705 | const setOper_myset3 const4:={ //set from record | |
706 | x1:={ x1:=1, x2:=1.2 }, | |
707 | x2:=setOper_temp1 | |
708 | }; | |
709 | const setOper_myset3 const5:={ //set from record, with omited field | |
710 | x1:={ x1:=1, x2:=1.2 }, | |
711 | x2:=omit | |
712 | }; | |
713 | if (setOper_const4.x1.x1==1) {setverdict(pass);} //definition part | |
714 | else {setverdict(fail);} | |
715 | if (setOper_const4.x1.x2==1.2) {setverdict(pass);} | |
716 | else {setverdict(fail);} | |
717 | if (setOper_const4.x2==setOper_temp1) {setverdict(pass);} | |
718 | else {setverdict(fail);} | |
719 | if (setOper_const5.x1.x1==1) {setverdict(pass);} //definition part, omit | |
720 | else {setverdict(fail);} | |
721 | if (setOper_const5.x1.x2==1.2) {setverdict(pass);} | |
722 | else {setverdict(fail);} | |
723 | if (not(ispresent(setOper_const5.x2))) {setverdict(pass);} | |
724 | else {setverdict(fail);} | |
725 | if (const4.x1.x1==1) {setverdict(pass);} //testcase | |
726 | else {setverdict(fail);} | |
727 | if (const4.x1.x2==1.2) {setverdict(pass);} | |
728 | else {setverdict(fail);} | |
729 | if (const4.x2==setOper_temp1) {setverdict(pass);} | |
730 | else {setverdict(fail);} | |
731 | if (const5.x1.x1==1) {setverdict(pass);} //testcase part, omit | |
732 | else {setverdict(fail);} | |
733 | if (const5.x1.x2==1.2) {setverdict(pass);} | |
734 | else {setverdict(fail);} | |
735 | if (not(ispresent(const5.x2))) {setverdict(pass);} | |
736 | else {setverdict(fail);} | |
737 | } | |
738 | ||
739 | testcase setConstRecof() runs on setOper_mycomp{ | |
740 | const setOper_myset4 const6:={ //set from record of | |
741 | x1:={ '12AB'O, 'CD12'O }, | |
742 | x2:=setOper_temp2 | |
743 | }; | |
744 | const setOper_myset4 const7:={ //set from record of, with omited field | |
745 | x1:={ '12AB'O, 'CD12'O }, | |
746 | x2:=omit | |
747 | }; | |
748 | if (setOper_const6.x1[0]=='12AB'O) {setverdict(pass);} //definition part | |
749 | else {setverdict(fail);} | |
750 | if (setOper_const6.x1[1]=='CD12'O) {setverdict(pass);} | |
751 | else {setverdict(fail);} | |
752 | if (setOper_const6.x2==setOper_temp2) {setverdict(pass);} | |
753 | else {setverdict(fail);} | |
754 | if (setOper_const7.x1[0]=='12AB'O) {setverdict(pass);} //definition part, omit | |
755 | else {setverdict(fail);} | |
756 | if (setOper_const7.x1[1]=='CD12'O) {setverdict(pass);} | |
757 | else {setverdict(fail);} | |
758 | if (not(ispresent(setOper_const7.x2))) {setverdict(pass);} | |
759 | else {setverdict(fail);} | |
760 | if (const6.x1[0]=='12AB'O) {setverdict(pass);} //testcase | |
761 | else {setverdict(fail);} | |
762 | if (const6.x1[1]=='CD12'O) {setverdict(pass);} | |
763 | else {setverdict(fail);} | |
764 | if (const6.x2==setOper_temp2) {setverdict(pass);} | |
765 | else {setverdict(fail);} | |
766 | if (const7.x1[0]=='12AB'O) {setverdict(pass);} //testcase part, omit | |
767 | else {setverdict(fail);} | |
768 | if (const7.x1[1]=='CD12'O) {setverdict(pass);} | |
769 | else {setverdict(fail);} | |
770 | if (not(ispresent(const7.x2))) {setverdict(pass);} | |
771 | else {setverdict(fail);} | |
772 | } | |
773 | ||
774 | testcase setConstSet() runs on setOper_mycomp{ | |
775 | const setOper_myset5 const8:={ //set from set | |
776 | x1:={ x1:=2, x2:=1.3}, | |
777 | x2:=setOper_temp3 | |
778 | }; | |
779 | const setOper_myset5 const9:={ //set from set, with omited field | |
780 | x1:={ x1:=2, x2:=omit}, | |
781 | x2:=omit | |
782 | }; | |
783 | if (setOper_const8.x1.x1==2) {setverdict(pass);} //definition part | |
784 | else {setverdict(fail);} | |
785 | if (setOper_const8.x1.x2==1.3) {setverdict(pass);} | |
786 | else {setverdict(fail);} | |
787 | if (setOper_const8.x2==setOper_temp3) {setverdict(pass);} | |
788 | else {setverdict(fail);} | |
789 | if (setOper_const9.x1.x1==2) {setverdict(pass);} //definition part, omit | |
790 | else {setverdict(fail);} | |
791 | if (setOper_const9.x1.x2==1.3) {setverdict(pass);} | |
792 | else {setverdict(fail);} | |
793 | if (not(ispresent(setOper_const9.x2))) {setverdict(pass);} | |
794 | else {setverdict(fail);} | |
795 | if (const8.x1.x1==2) {setverdict(pass);} //testcase | |
796 | else {setverdict(fail);} | |
797 | if (const8.x1.x2==1.3) {setverdict(pass);} | |
798 | else {setverdict(fail);} | |
799 | if (const8.x2==setOper_temp3) {setverdict(pass);} | |
800 | else {setverdict(fail);} | |
801 | if (const9.x1.x1==2) {setverdict(pass);} //testcase part, omit | |
802 | else {setverdict(fail);} | |
803 | if (not(ispresent(const9.x1.x2))) {setverdict(pass);} | |
804 | else {setverdict(fail);} | |
805 | if (not(ispresent(const9.x2))) {setverdict(pass);} | |
806 | else {setverdict(fail);} | |
807 | } | |
808 | ||
809 | testcase setConstSetof() runs on setOper_mycomp{ | |
810 | const setOper_myset6 const10:={ //set from set of | |
811 | x1:={"a","b"}, | |
812 | x2:=setOper_temp4 //{"f","8"}, | |
813 | }; | |
814 | const setOper_myset6 const11:={ //set from set of, with omited field | |
815 | x1:={"a","b"}, | |
816 | x2:=omit | |
817 | }; | |
818 | if (setOper_const10.x1[0]=="a") {setverdict(pass);} //definition part | |
819 | else {setverdict(fail);} | |
820 | if (setOper_const10.x1[1]=="b") {setverdict(pass);} | |
821 | else {setverdict(fail);} | |
822 | if (setOper_const10.x2==setOper_temp4) {setverdict(pass);} | |
823 | else {setverdict(fail);} | |
824 | if (setOper_const11.x1[0]=="a") {setverdict(pass);} //definition part, omit | |
825 | else {setverdict(fail);} | |
826 | if (setOper_const11.x1[1]=="b") {setverdict(pass);} | |
827 | else {setverdict(fail);} | |
828 | if (not(ispresent(setOper_const11.x2))) {setverdict(pass);} | |
829 | else {setverdict(fail);} | |
830 | if (const10.x1[0]=="a") {setverdict(pass);} //testcase | |
831 | else {setverdict(fail);} | |
832 | if (const10.x1[1]=="b") {setverdict(pass);} | |
833 | else {setverdict(fail);} | |
834 | if (const10.x2==setOper_temp4) {setverdict(pass);} | |
835 | else {setverdict(fail);} | |
836 | if (const11.x1[0]=="a") {setverdict(pass);} //testcase part, omit | |
837 | else {setverdict(fail);} | |
838 | if (const11.x1[1]=="b") {setverdict(pass);} | |
839 | else {setverdict(fail);} | |
840 | if (not(ispresent(const11.x2))) {setverdict(pass);} | |
841 | else {setverdict(fail);} | |
842 | } | |
843 | ||
844 | testcase setConstUnion() runs on setOper_mycomp{ | |
845 | const setOper_myset7 const12:={ //set from union | |
846 | x1:={ x1 :=3 }, | |
847 | x2:=setOper_temp5 //{ x2:=1.3 } | |
848 | }; | |
849 | const setOper_myset7 const13:={ //set from union, with omited field | |
850 | x1:={ x1 :=3 }, | |
851 | x2:=omit | |
852 | }; | |
853 | if (setOper_const12.x1.x1==3) {setverdict(pass);} //definition part | |
854 | else {setverdict(fail);} | |
855 | if (setOper_const12.x2==setOper_temp5) {setverdict(pass);} | |
856 | else {setverdict(fail);} | |
857 | if (setOper_const13.x1.x1==3) {setverdict(pass);} //definition part, omit | |
858 | else {setverdict(fail);} | |
859 | if (not(ispresent(setOper_const13.x2))) {setverdict(pass);} | |
860 | else {setverdict(fail);} | |
861 | if (const12.x1.x1==3) {setverdict(pass);} //testcase | |
862 | else {setverdict(fail);} | |
863 | if (const12.x2==setOper_temp5) {setverdict(pass);} | |
864 | else {setverdict(fail);} | |
865 | if (const13.x1.x1==3) {setverdict(pass);} //testcase part, omit | |
866 | else {setverdict(fail);} | |
867 | if (not(ispresent(const13.x2))) {setverdict(pass);} | |
868 | else {setverdict(fail);} | |
869 | } | |
870 | ||
871 | ||
872 | testcase setComp() runs on setOper_mycomp{ | |
873 | var setOper_myset1 x1,x2,x3,x4; | |
874 | x1:={ x1:=1, x2:=1.2, x3:=xx2 }; | |
875 | x2:={ x1:=1, x2:=1.2, x3:=xx2 }; | |
876 | x3:={ x1:=1, x2:=1.24, x3:=xx2 }; | |
877 | x4:={ x2:=1.2, x1:=1, x3:=xx2 }; | |
878 | if (x1==x2) {setverdict(pass);} | |
879 | else {setverdict(fail);} | |
880 | if (not(x1==x3)) {setverdict(pass);} | |
881 | else {setverdict(fail);} | |
882 | if (x1!=x3) {setverdict(pass);} | |
883 | else {setverdict(fail);} | |
884 | if (not(x1!=x2)) {setverdict(pass);} | |
885 | else {setverdict(fail);} | |
886 | if (x4==x2) {setverdict(pass);} //out of order | |
887 | else {setverdict(fail);} | |
888 | if (not(x4==x3)) {setverdict(pass);} | |
889 | else {setverdict(fail);} | |
890 | if (x4!=x3) {setverdict(pass);} | |
891 | else {setverdict(fail);} | |
892 | if (not(x4!=x2)) {setverdict(pass);} | |
893 | else {setverdict(fail);} | |
894 | } | |
895 | ||
896 | ||
897 | testcase setCompOpt() runs on setOper_mycomp{ | |
898 | var integer inttemp:=2; // set with basic types with optional field | |
899 | var setOper_myset2 x1,x2,x3; | |
900 | x1 :={ x1:=1, x2:=1.2, x3:=xx2, x4:=inttemp }; //inntemp=2 | |
901 | x2:= { x1:=1, x2:=1.2, x3:=xx2, x4:=omit }; | |
902 | x3:= { x1:=1, x2:=1.2, x3:=xx2, x4:=omit }; | |
903 | if (x2==x3) {setverdict(pass);} | |
904 | else {setverdict(fail);} | |
905 | if (not(x1==x2)) {setverdict(pass);} | |
906 | else {setverdict(fail);} | |
907 | if (x1!=x3) {setverdict(pass);} | |
908 | else {setverdict(fail);} | |
909 | if (not(x2!=x3)) {setverdict(pass);} | |
910 | else {setverdict(fail);} | |
911 | } | |
912 | ||
913 | testcase setCompRec() runs on setOper_mycomp{ | |
914 | var setOper_trecord temp1:={ x1:=omit, x2:=3.4 }; // set with record | |
915 | var setOper_myset3 x1,x2,x3; | |
916 | x1 :={ | |
917 | x1:={ x1:=1, x2:=1.2 }, | |
918 | x2:=temp1 | |
919 | }; | |
920 | x2 :={ | |
921 | x1:={ x1:=1, x2:=1.2 }, | |
922 | x2:=temp1 | |
923 | }; | |
924 | x3 :={ | |
925 | x1:={ x1:=2, x2:=1.2 }, | |
926 | x2:=temp1 | |
927 | }; | |
928 | if (x1==x2) {setverdict(pass);} | |
929 | else {setverdict(fail);} | |
930 | if (not(x1==x3)) {setverdict(pass);} | |
931 | else {setverdict(fail);} | |
932 | if (x1!=x3) {setverdict(pass);} | |
933 | else {setverdict(fail);} | |
934 | if (not(x1!=x2)) {setverdict(pass);} | |
935 | else {setverdict(fail);} | |
936 | } | |
937 | ||
938 | ||
939 | testcase setCompRecof() runs on setOper_mycomp{ | |
940 | var setOper_trecof temp2:={'AF12'O}; | |
941 | var setOper_myset4 x1,x2,x3; | |
942 | x1:={ //set from record of | |
943 | x1:={ '12AB'O, 'CD12'O }, | |
944 | x2:=temp2 | |
945 | }; | |
946 | x2:={ | |
947 | x1:={ '12AB'O, 'CD12'O }, | |
948 | x2:=temp2 | |
949 | }; | |
950 | x3:={ | |
951 | x1:={ '12AB'O }, | |
952 | x2:=temp2 | |
953 | }; | |
954 | if (x1==x2) {setverdict(pass);} | |
955 | else {setverdict(fail);} | |
956 | if (not(x1==x3)) {setverdict(pass);} | |
957 | else {setverdict(fail);} | |
958 | if (x2!=x3) {setverdict(pass);} | |
959 | else {setverdict(fail);} | |
960 | if (not(x1!=x2)) {setverdict(pass);} | |
961 | else {setverdict(fail);} | |
962 | } | |
963 | ||
964 | testcase setCompSet() runs on setOper_mycomp{ | |
965 | var setOper_tset temp1:={ x1:=2, x2:=omit }; | |
966 | var setOper_myset5 x1,x2,x3 | |
967 | x1:={ //set from set | |
968 | x1:={ x1:=1, x2:=1.2 }, | |
969 | x2:=temp1 | |
970 | }; | |
971 | x2:={ | |
972 | x1:={ x1:=1, x2:=1.2 }, | |
973 | x2:=temp1 | |
974 | }; | |
975 | x3:={ | |
976 | x1:={ x1:=4, x2:=1.2 }, | |
977 | x2:=temp1 | |
978 | }; | |
979 | if (x1==x2) {setverdict(pass);} | |
980 | else {setverdict(fail);} | |
981 | if (not(x2==x3)) {setverdict(pass);} | |
982 | else {setverdict(fail);} | |
983 | if (x1!=x3) {setverdict(pass);} | |
984 | else {setverdict(fail);} | |
985 | if (not(x1!=x2)) {setverdict(pass);} | |
986 | else {setverdict(fail);} | |
987 | } | |
988 | ||
989 | testcase setCompSetof() runs on setOper_mycomp{ | |
990 | var setOper_tsetof temp2:={"a","7"}; | |
991 | var setOper_myset6 x1,x2,x3; | |
992 | x1:={ //set from set of | |
993 | x1:={ "1", "a" }, | |
994 | x2:=temp2 | |
995 | }; | |
996 | x2:={ | |
997 | x1:={ "1", "a" }, | |
998 | x2:=temp2 | |
999 | }; | |
1000 | x3:={ | |
1001 | x1:={ "1", "a", "k" }, | |
1002 | x2:=temp2 | |
1003 | }; | |
1004 | if (x1==x2) {setverdict(pass);} | |
1005 | else {setverdict(fail);} | |
1006 | if (not(x2==x3)) {setverdict(pass);} | |
1007 | else {setverdict(fail);} | |
1008 | if (x1!=x3) {setverdict(pass);} | |
1009 | else {setverdict(fail);} | |
1010 | if (not(x1!=x2)) {setverdict(pass);} | |
1011 | else {setverdict(fail);} | |
1012 | } | |
1013 | ||
1014 | testcase setCompUnion() runs on setOper_mycomp{ | |
1015 | var setOper_tunion temp5 := {x2:=1.3} | |
1016 | var setOper_myset7 x1,x2,x3; | |
1017 | x1:={ //set from union | |
1018 | x1:={ x1 :=3 }, | |
1019 | x2:=temp5 //{ x2:=1.3 } | |
1020 | }; | |
1021 | x2:={ | |
1022 | x1:={ x1 :=3 }, | |
1023 | x2:=temp5 //{ x2:=1.3 } | |
1024 | }; | |
1025 | x3:={ | |
1026 | x1:={ x2 :=3.9 }, | |
1027 | x2:=temp5 //{ x2:=1.3 } | |
1028 | }; | |
1029 | if (x1==x2) {setverdict(pass);} | |
1030 | else {setverdict(fail);} | |
1031 | if (not(x1==x3)) {setverdict(pass);} | |
1032 | else {setverdict(fail);} | |
1033 | if (x2!=x3) {setverdict(pass);} | |
1034 | else {setverdict(fail);} | |
1035 | if (not(x1!=x2)) {setverdict(pass);} | |
1036 | else {setverdict(fail);} | |
1037 | } | |
1038 | ||
1039 | type set myset1 { | |
1040 | integer f1 (0..255), | |
1041 | charstring f2 length(0..255) | |
1042 | } | |
1043 | type myset1 myset2 ({f1 := 0, f2 := ""}) | |
1044 | type myset1 myset3 | |
1045 | type myset1 myset4 ({f1 := c_mysetlen1, f2 := "hello"}, {f1 := c_mysetlen2, f2 := "world"}) | |
1046 | ||
1047 | const integer c_mysetlen1 := 255 | |
1048 | const integer c_mysetlen2 := c_mysetlen1 | |
1049 | const myset4 c_myset1 := {f1 := 255, f2 := "world"} | |
1050 | ||
1051 | template myset4 t_myset1 := {f1 := 255, f2 := "hello"} | |
1052 | // The following line shouldn't work. Delete it later. | |
1053 | template myset4 t_myset2 modifies t_myset1 := {f1 := 1, f2 := ""} | |
1054 | ||
1055 | function f_set1() return myset2 { return {f1 := 0, f2 := ""} } | |
1056 | ||
1057 | function f_set2() return boolean { | |
1058 | var integer v_i1 := 100 | |
1059 | var charstring v_s1 := "abc" | |
1060 | var myset4 v_myset1 := valueof(t_myset1) | |
1061 | // It doesn't work yet: `var myset4 v_myset2 := {f1 := v_i1, f2 := v_s1}'. Replace | |
1062 | // the test later. | |
1063 | var myset4 v_myset2 := valueof(modifies t_myset1 := {f2 := ""}) | |
1064 | var myset4 v_myarr1[3] := {c_myset1, {f1 := 255, f2 := "he" & "llo"}, valueof(t_myset1)} | |
1065 | if (v_myset1 != v_myarr1[2]) { return false } | |
1066 | else { | |
1067 | log(v_myset1) | |
1068 | log(v_myarr1) | |
1069 | if (v_myset1.f1 == v_myarr1[0].f1 and v_myset2.f1 == v_myarr1[1].f1 and 255 == v_myarr1[2].f1 and | |
1070 | v_myset1.f2 != v_myarr1[0].f2 and v_myset2.f2 != v_myarr1[1].f2 and "hello" == v_myarr1[2].f2) { | |
1071 | return true | |
1072 | } | |
1073 | return false | |
1074 | } | |
1075 | } | |
1076 | ||
1077 | testcase setSubtypes() runs on setOper_mycomp { | |
1078 | var template myset1 vt_myset1 := { f1 := 0, f2 := "" } | |
1079 | var myset1 v_myset1 := { f1 := valueof(vt_myset1.f1), f2 := valueof(vt_myset1.f2) } | |
1080 | ||
1081 | if (f_set1() == v_myset1 and valueof(vt_myset1) == f_set1()) { setverdict(pass) } | |
1082 | else { setverdict(fail) } | |
1083 | if (f_set2()) { setverdict(pass) } | |
1084 | else { setverdict(fail) } | |
1085 | } | |
1086 | ||
1087 | testcase setIsvalue() runs on setOper_mycomp{ | |
1088 | var typedefset_empty v1; | |
1089 | var setOper_trecord vs2_def; | |
1090 | var setOper_trecord v2; | |
1091 | v2.x1 := 42; | |
1092 | ||
1093 | if ( isvalue(v1) ) { setverdict(fail); } else { setverdict(pass); }; | |
1094 | if ( isvalue(vs2_def) ) { setverdict(fail); } else { setverdict(pass); }; | |
1095 | if ( isvalue(v2) ) { setverdict(fail); } else { setverdict(pass); }; | |
1096 | ||
1097 | var setOper_trecord vs2_part := { -, 1.0 }; | |
1098 | if ( isvalue(vs2_part) ) { setverdict(fail); } else { setverdict(pass); }; | |
1099 | vs2_part.x1 := omit; | |
1100 | if ( isvalue(vs2_part) ) { setverdict(pass); } else { setverdict(fail); }; | |
1101 | ||
1102 | var setOper_trecord vs2_om := { omit, - }; | |
1103 | if ( isvalue(vs2_om) ) { setverdict(fail); } else { setverdict(pass); }; | |
1104 | vs2_om.x2 := 33.0; | |
1105 | if ( isvalue(vs2_om) ) { setverdict(pass); } else { setverdict(fail); }; | |
1106 | } | |
1107 | ||
1108 | testcase setIsbound() runs on setOper_mycomp{ | |
1109 | var typedefset_empty v1; | |
1110 | var setOper_trecord vs2_def; | |
1111 | var setOper_trecord v2; | |
1112 | v2.x1 := 42; | |
1113 | ||
1114 | if ( isbound(v1) ) { setverdict(fail); } else { setverdict(pass); }; | |
1115 | if ( isbound(vs2_def) ) { setverdict(fail); } else { setverdict(pass); }; | |
1116 | if ( isbound(vs2_def.x1) ) { setverdict(fail); } else { setverdict(pass); }; | |
1117 | if ( isbound(vs2_def.x2) ) { setverdict(fail); } else { setverdict(pass); }; | |
1118 | if ( isbound(v2) ) { setverdict(pass); } else { setverdict(fail); }; | |
1119 | ||
1120 | var setOper_trecord vs2_part := { -, 1.0 }; | |
1121 | if ( isbound(vs2_part) ) { setverdict(pass); } else { setverdict(fail); }; | |
1122 | vs2_part.x1 := omit; | |
1123 | if ( isbound(vs2_part) ) { setverdict(pass); } else { setverdict(fail); }; | |
1124 | ||
1125 | var setOper_trecord vs2_om := { omit, - }; | |
1126 | if ( isbound(vs2_om) ) { setverdict(pass); } else { setverdict(fail); }; | |
1127 | vs2_om.x2 := 33.0; | |
1128 | if ( isbound(vs2_om) ) { setverdict(pass); } else { setverdict(fail); }; | |
1129 | } | |
1130 | ||
1131 | control { | |
1132 | const setOper_trecord cl_temp1:={ x1:=omit, x2:=3.4 }; //constant in control part | |
1133 | const setOper_trecof cl_temp2:={ 'AF12'O }; | |
1134 | const setOper_tset cl_temp3:={ x1:=234, x2:=1.9}; | |
1135 | const setOper_tsetof cl_temp4:={"f","8"}; | |
1136 | const setOper_tunion cl_temp5:={ x2:=1.3 }; | |
1137 | const typedefsetComp_myset cl_const14 := { | |
1138 | x1 := { x1:=omit, x2:=3.4 }, | |
1139 | x2 := { 'AF12'O }, | |
1140 | x3 := { x1:=234, x2:=1.9}, | |
1141 | x4 := {"f","8"}, | |
1142 | x5 := { x2:=1.3 }, | |
1143 | x6 := {1,2,3} | |
1144 | } | |
1145 | var setOper_trecord vl_temp1; //variable in control part | |
1146 | var setOper_trecof vl_temp2; | |
1147 | var setOper_tset vl_temp3; | |
1148 | var setOper_tsetof vl_temp4; | |
1149 | var setOper_tunion vl_temp5; | |
1150 | var typedefsetComp_myset vl_const14; | |
1151 | ||
1152 | execute(setAssign()); | |
1153 | execute(setAssignOpt()); | |
1154 | execute(setAssignRec()); | |
1155 | execute(setAssignRecof()); | |
1156 | execute(setAssignSet()); | |
1157 | execute(setAssignSetof()); | |
1158 | execute(setAssignUnion()); | |
1159 | execute(setAssignElem()); | |
1160 | execute(setAssignElemOpt()); | |
1161 | execute(setAssignElemRec()); | |
1162 | execute(setAssignElemRecof()); | |
1163 | execute(setAssignElemSet()); | |
1164 | execute(setAssignElemSetof()); | |
1165 | execute(setAssignElemUnion()); | |
1166 | // execute(setSizeof()); | |
1167 | execute(setConst()); | |
1168 | execute(setConstOpt()); | |
1169 | execute(setConstRec()); | |
1170 | execute(setConstRecof()); | |
1171 | execute(setConstSet()); | |
1172 | execute(setConstSetof()); | |
1173 | execute(setConstUnion()); | |
1174 | execute(setComp()); | |
1175 | execute(setCompOpt()); | |
1176 | execute(setCompRec()); | |
1177 | execute(setCompRecof()); | |
1178 | execute(setCompSet()); | |
1179 | execute(setCompSetof()); | |
1180 | execute(setCompUnion()); | |
1181 | execute(setSubtypes()); | |
1182 | execute(setIsvalue()); | |
1183 | execute(setIsbound()); | |
1184 | } | |
1185 | } |