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 TrecordOper { | |
9 | // ********** Type definitions ********************* | |
10 | type component recordOper_mycomp {}; | |
11 | type enumerated recordOper_myenum {xx1,xx2,xx3}; | |
12 | type record recordOper_empty {}; | |
13 | type record recordOper_trecord { | |
14 | integer x1 optional, | |
15 | float x2 }; | |
16 | type record of octetstring recordOper_trecof; | |
17 | type set recordOper_tset { | |
18 | integer x1, | |
19 | float x2 optional }; | |
20 | type set of charstring recordOper_tsetof; | |
21 | type union recordOper_tunion { | |
22 | integer x1, | |
23 | float x2 }; | |
24 | type record recordOper_myrec1 { // record from basic types | |
25 | integer x1, | |
26 | float x2, | |
27 | recordOper_myenum x3 }; | |
28 | type record recordOper_myrec2 { // record from basic types, with optional field | |
29 | integer x1, | |
30 | float x2, | |
31 | recordOper_myenum x3, | |
32 | integer x4 optional }; | |
33 | type record recordOper_myrec3 { // record from record, with optional field | |
34 | recordOper_trecord x1, | |
35 | recordOper_trecord x2 optional | |
36 | }; | |
37 | type record recordOper_myrec4 { // record from record of, with optional field | |
38 | recordOper_trecof x1, | |
39 | recordOper_trecof x2 optional | |
40 | }; | |
41 | type record recordOper_myrec5 { // record from set, with optional field | |
42 | recordOper_tset x1, | |
43 | recordOper_tset x2 optional | |
44 | }; | |
45 | type record recordOper_myrec6 { // record from set of, with optional field | |
46 | recordOper_tsetof x1, | |
47 | recordOper_tsetof x2 optional | |
48 | }; | |
49 | type record recordOper_myrec7 { // record from union, with optional field | |
50 | recordOper_tunion x1, | |
51 | recordOper_tunion x2 optional | |
52 | }; | |
53 | type record typedefrecordComp_myrec { // testing complex content | |
54 | recordOper_trecord x1, | |
55 | recordOper_trecof x2, | |
56 | recordOper_tset x3, | |
57 | recordOper_tsetof x4 optional, | |
58 | recordOper_tunion x5, | |
59 | integer x6[3] | |
60 | }; | |
61 | type record recordOper_myrec8{ | |
62 | integer f1 optional, | |
63 | charstring f2 optional | |
64 | }; | |
65 | type record recordOper_myrec9 { // test for the assignment of optional fields | |
66 | integer f1 optional, | |
67 | integer f2 optional | |
68 | }; | |
69 | // *************** Constanst *********************** | |
70 | const recordOper_trecord recordOper_temp1:={ x1:=omit, x2:=3.4 }; | |
71 | const recordOper_trecof recordOper_temp2:={ 'AF12'O }; | |
72 | const recordOper_tset recordOper_temp3:={ x1:=234, x2:=1.9}; | |
73 | const recordOper_tsetof recordOper_temp4:={"f","8"}; | |
74 | const recordOper_tunion recordOper_temp5:={ x2:=1.3 }; | |
75 | const recordOper_myrec1 recordOper_const1:={ //record with basic types | |
76 | x1:=1, | |
77 | x2:=1.2, | |
78 | x3:=xx2 }; | |
79 | const recordOper_myrec2 recordOper_const2:={ //record with basic types, with optional field | |
80 | x1:=1, | |
81 | x2:=1.2, | |
82 | x3:=xx2, | |
83 | x4:=2 }; | |
84 | const recordOper_myrec2 recordOper_const3:={ //record with basic types, with omited field | |
85 | x1:=1, | |
86 | x2:=1.2, | |
87 | x3:=xx2, | |
88 | x4:=omit }; | |
89 | const recordOper_myrec3 recordOper_const4:={ //record from record | |
90 | x1:={ x1:=1, x2:=1.2 }, | |
91 | x2:=recordOper_temp1 | |
92 | }; | |
93 | const recordOper_myrec3 recordOper_const5:={ //record from record, with omited field | |
94 | x1:={ x1:=1, x2:=1.2 }, | |
95 | x2:=omit | |
96 | }; | |
97 | const recordOper_myrec4 recordOper_const6:={ //record from record of | |
98 | x1:={ '12AB'O, 'CD12'O }, | |
99 | x2:=recordOper_temp2 | |
100 | }; | |
101 | const recordOper_myrec4 recordOper_const7:={ //record from record of, with omited field | |
102 | x1:={ '12AB'O, 'CD12'O }, | |
103 | x2:=omit | |
104 | }; | |
105 | const recordOper_myrec5 recordOper_const8:={ //record from set | |
106 | x1:={ x1:=2, x2:=1.3}, | |
107 | x2:=recordOper_temp3 | |
108 | }; | |
109 | const recordOper_myrec5 recordOper_const9:={ //record from set, with omited field | |
110 | x1:={ x1:=2, x2:=1.3}, | |
111 | x2:=omit | |
112 | }; | |
113 | const recordOper_myrec6 recordOper_const10:={ //record from set of | |
114 | x1:={"a","b"}, | |
115 | x2:=recordOper_temp4 //{"f","8"}, | |
116 | }; | |
117 | const recordOper_myrec6 recordOper_const11:={ //record from set of, with omited field | |
118 | x1:={"a","b"}, | |
119 | x2:=omit | |
120 | }; | |
121 | const recordOper_myrec7 recordOper_const12:={ //record from union | |
122 | x1:={ x1 :=3 }, | |
123 | x2:=recordOper_temp5 //{ x2:=1.3 } | |
124 | }; | |
125 | const recordOper_myrec7 recordOper_const13:={ //record from union, with omited field | |
126 | x1:={ x1 :=3 }, | |
127 | x2:=omit | |
128 | }; | |
129 | const typedefrecordComp_myrec recordOper_const14 := { // complex record | |
130 | x1 := { x1:=omit, x2:=3.4 }, | |
131 | x2 := { 'AF12'O }, | |
132 | x3 := { x1:=234, x2:=1.9}, | |
133 | x4 := {"f","8"}, | |
134 | x5 := { x2:=1.3 }, | |
135 | x6 := {1,2,3} | |
136 | } | |
137 | ||
138 | testcase recordAssign() runs on recordOper_mycomp{ | |
139 | var recordOper_myrec1 x1:={ //record with basic types | |
140 | x1:=1, | |
141 | x2:=1.2, | |
142 | x3:=xx2 }; | |
143 | var recordOper_myrec1 x2; | |
144 | x2:={ x1:=1, x2:=1.2, x3:=xx2 }; | |
145 | var recordOper_myrec1 x3 := {}; | |
146 | if (x1.x1==1) {setverdict(pass);} //at declaration | |
147 | else {setverdict(fail);} | |
148 | if (x1.x2==1.2) {setverdict(pass);} | |
149 | else {setverdict(fail);} | |
150 | if (x1.x3==xx2) {setverdict(pass);} | |
151 | else {setverdict(fail);} | |
152 | if (x2.x1==1) {setverdict(pass);} //later | |
153 | else {setverdict(fail);} | |
154 | if (x2.x2==1.2) {setverdict(pass);} | |
155 | else {setverdict(fail);} | |
156 | if (x2.x3==xx2) {setverdict(pass);} | |
157 | else {setverdict(fail);} | |
158 | } | |
159 | ||
160 | // test some incomplete assignment cases. | |
161 | testcase recordAssignIncomplete() runs on recordOper_mycomp{ | |
162 | var recordOper_myrec1 x1:={ x1:=1, x2:=1.2}; | |
163 | if(x1.x1==1) {setverdict(pass);} | |
164 | else {setverdict(fail);} | |
165 | if(x1.x2==1.2) {setverdict(pass);} | |
166 | else {setverdict(fail);} | |
167 | if(not(isbound(x1.x3))) {setverdict(pass);} | |
168 | else {setverdict(fail);} | |
169 | ||
170 | x1 := {2, -, -}; | |
171 | if(x1.x1==2) {setverdict(pass);} | |
172 | else {setverdict(fail);} | |
173 | if(x1.x2==1.2) {setverdict(pass);} | |
174 | else {setverdict(fail);} | |
175 | if(not(isbound(x1.x3))) {setverdict(pass);} | |
176 | else {setverdict(fail);} | |
177 | ||
178 | x1:= { x1 := -, x2:=2.2, x3 := -}; | |
179 | if(x1.x1==2) {setverdict(pass);} | |
180 | else {setverdict(fail);} | |
181 | if(x1.x2==2.2) {setverdict(pass);} | |
182 | else {setverdict(fail);} | |
183 | if(not(isbound(x1.x3))) {setverdict(pass);} | |
184 | else {setverdict(fail);} | |
185 | ||
186 | x1:= { x2:=3.2}; | |
187 | if(x1.x1==2) {setverdict(pass);} | |
188 | else {setverdict(fail);} | |
189 | if(x1.x2==3.2) {setverdict(pass);} | |
190 | else {setverdict(fail);} | |
191 | if(not(isbound(x1.x3))) {setverdict(pass);} | |
192 | else {setverdict(fail);} | |
193 | } | |
194 | ||
195 | testcase recordAssignOpt() runs on recordOper_mycomp{ | |
196 | var integer inttemp:=2; | |
197 | var recordOper_myrec2 x1:={ //record with basic types, with optional field | |
198 | x1:=1, | |
199 | x2:=1.2, | |
200 | x3:=xx2, | |
201 | x4:=inttemp}; //2 | |
202 | var recordOper_myrec2 x2:={ //record with basic types, with omited field | |
203 | x1:=1, | |
204 | x2:=1.2, | |
205 | x3:=xx2, | |
206 | x4:=omit }; | |
207 | var recordOper_myrec2 x3, x4; | |
208 | x3:={ //record with basic types, with optional field | |
209 | x1:=1, | |
210 | x2:=1.2, | |
211 | x3:=xx2, | |
212 | x4:=inttemp }; //2 | |
213 | x4:={ //record with basic types, with omited field | |
214 | x1:=1, | |
215 | x2:=1.2, | |
216 | x3:=xx2, | |
217 | x4:=omit }; | |
218 | //at declaration, with optional field | |
219 | if (x1.x1==1) {setverdict(pass);} | |
220 | else {setverdict(fail);} | |
221 | if (x1.x2==1.2) {setverdict(pass);} | |
222 | else {setverdict(fail);} | |
223 | if (x1.x3==xx2) {setverdict(pass);} | |
224 | else {setverdict(fail);} | |
225 | if (x1.x4==2) {setverdict(pass);} | |
226 | else {setverdict(fail);} | |
227 | //at declaration, with omited field | |
228 | if (x2.x1==1) {setverdict(pass);} | |
229 | else {setverdict(fail);} | |
230 | if (x2.x2==1.2) {setverdict(pass);} | |
231 | else {setverdict(fail);} | |
232 | if (x2.x3==xx2) {setverdict(pass);} | |
233 | else {setverdict(fail);} | |
234 | if (not(ispresent(x2.x4))) {setverdict(pass);} | |
235 | else {setverdict(fail);} | |
236 | //later, with optional field | |
237 | if (x3.x1==1) {setverdict(pass);} | |
238 | else {setverdict(fail);} | |
239 | if (x3.x2==1.2) {setverdict(pass);} | |
240 | else {setverdict(fail);} | |
241 | if (x3.x3==xx2) {setverdict(pass);} | |
242 | else {setverdict(fail);} | |
243 | if (x3.x4==2) {setverdict(pass);} | |
244 | else {setverdict(fail);} | |
245 | //later, with optional field | |
246 | if (x4.x1==1) {setverdict(pass);} | |
247 | else {setverdict(fail);} | |
248 | if (x4.x2==1.2) {setverdict(pass);} | |
249 | else {setverdict(fail);} | |
250 | if (x4.x3==xx2) {setverdict(pass);} | |
251 | else {setverdict(fail);} | |
252 | if (not(ispresent(x4.x4))) {setverdict(pass);} | |
253 | else {setverdict(fail);} | |
254 | } | |
255 | ||
256 | testcase recordAssignRec() runs on recordOper_mycomp{ | |
257 | var recordOper_trecord temp1:={ x1:=omit, x2:=3.4 }; | |
258 | var recordOper_myrec3 x1:={ //record from record | |
259 | x1:={ x1:=1, x2:=1.2 }, | |
260 | x2:=temp1 | |
261 | }; | |
262 | var recordOper_myrec3 x2:={ //record from record, with omited field | |
263 | x1:={ x1:=1, x2:=1.2 }, | |
264 | x2:=omit | |
265 | }; | |
266 | var recordOper_myrec3 x3,x4; | |
267 | x3:={ //record from record | |
268 | x1:={ x1:=1, x2:=1.2 }, | |
269 | x2:=temp1 | |
270 | }; | |
271 | x4:={ //record from record, with omited field | |
272 | x1:={ x1:=1, x2:=1.2 }, | |
273 | x2:=omit | |
274 | }; | |
275 | if (x1.x1.x1==1) {setverdict(pass);} //at declaration | |
276 | else {setverdict(fail);} | |
277 | if (x1.x1.x2==1.2) {setverdict(pass);} | |
278 | else {setverdict(fail);} | |
279 | if (x1.x2==temp1) {setverdict(pass);} | |
280 | else {setverdict(fail);} | |
281 | if (x2.x1.x1==1) {setverdict(pass);} //at declaration, omit | |
282 | else {setverdict(fail);} | |
283 | if (x2.x1.x2==1.2) {setverdict(pass);} | |
284 | else {setverdict(fail);} | |
285 | if (not(ispresent(x2.x2))) {setverdict(pass);} | |
286 | else {setverdict(fail);} | |
287 | if (x3.x1.x1==1) {setverdict(pass);} //later | |
288 | else {setverdict(fail);} | |
289 | if (x3.x1.x2==1.2) {setverdict(pass);} | |
290 | else {setverdict(fail);} | |
291 | if (x3.x2==temp1) {setverdict(pass);} | |
292 | else {setverdict(fail);} | |
293 | if (x4.x1.x1==1) {setverdict(pass);} //later, omit | |
294 | else {setverdict(fail);} | |
295 | if (x4.x1.x2==1.2) {setverdict(pass);} | |
296 | else {setverdict(fail);} | |
297 | if (not(ispresent(x4.x2))) {setverdict(pass);} | |
298 | else {setverdict(fail);} | |
299 | } | |
300 | ||
301 | testcase recordAssignRecof() runs on recordOper_mycomp{ | |
302 | var recordOper_trecof temp2:={'AF12'O}; | |
303 | var recordOper_myrec4 x1:={ //record from record of | |
304 | x1:={ '12AB'O, 'CD12'O }, | |
305 | x2:=temp2 | |
306 | }; | |
307 | var recordOper_myrec4 x2:={ //record from record of, with omited field | |
308 | x1:={ '12AB'O, 'CD12'O }, | |
309 | x2:=omit | |
310 | }; | |
311 | var recordOper_myrec4 x3,x4 | |
312 | x3:={ //record from record of | |
313 | x1:={ '12AB'O, 'CD12'O }, | |
314 | x2:=temp2 | |
315 | }; | |
316 | x4:={ //record from record of, with omited field | |
317 | x1:={ '12AB'O, 'CD12'O }, | |
318 | x2:=omit | |
319 | }; | |
320 | if (x1.x1[0]=='12AB'O) {setverdict(pass);} //at declaration | |
321 | else {setverdict(fail);} | |
322 | if (x1.x1[1]=='CD12'O) {setverdict(pass);} | |
323 | else {setverdict(fail);} | |
324 | if (x1.x2==temp2) {setverdict(pass);} | |
325 | else {setverdict(fail);} | |
326 | if (x2.x1[0]=='12AB'O) {setverdict(pass);} //at declaration, omit | |
327 | else {setverdict(fail);} | |
328 | if (x2.x1[1]=='CD12'O) {setverdict(pass);} | |
329 | else {setverdict(fail);} | |
330 | if (not(ispresent(x2.x2))) {setverdict(pass);} | |
331 | else {setverdict(fail);} | |
332 | if (x3.x1[0]=='12AB'O) {setverdict(pass);} //later | |
333 | else {setverdict(fail);} | |
334 | if (x3.x1[1]=='CD12'O) {setverdict(pass);} | |
335 | else {setverdict(fail);} | |
336 | if (x3.x2==temp2) {setverdict(pass);} | |
337 | else {setverdict(fail);} | |
338 | if (x4.x1[0]=='12AB'O) {setverdict(pass);} //later, omit | |
339 | else {setverdict(fail);} | |
340 | if (x4.x1[1]=='CD12'O) {setverdict(pass);} | |
341 | else {setverdict(fail);} | |
342 | if (not(ispresent(x4.x2))) {setverdict(pass);} | |
343 | else {setverdict(fail);} | |
344 | } | |
345 | ||
346 | testcase recordAssignSet() runs on recordOper_mycomp{ | |
347 | var recordOper_tset temp1:={ x1:=2, x2:=omit }; | |
348 | var recordOper_myrec5 x1:={ //record from set | |
349 | x1:={ x1:=1, x2:=1.2 }, | |
350 | x2:=temp1 | |
351 | }; | |
352 | var recordOper_myrec5 x2:={ //record from set, with omited field | |
353 | x1:={ x1:=1, x2:=1.2 }, | |
354 | x2:=omit | |
355 | }; | |
356 | var recordOper_myrec5 x3,x4; | |
357 | x3:={ //record from set | |
358 | x1:={ x1:=1, x2:=1.2 }, | |
359 | x2:=temp1 | |
360 | }; | |
361 | x4:={ //record from set, with omited field | |
362 | x1:={ x1:=1, x2:=1.2 }, | |
363 | x2:=omit | |
364 | }; | |
365 | if (x1.x1.x1==1) {setverdict(pass);} //at declaration | |
366 | else {setverdict(fail);} | |
367 | if (x1.x1.x2==1.2) {setverdict(pass);} | |
368 | else {setverdict(fail);} | |
369 | if (x1.x2==temp1) {setverdict(pass);} | |
370 | else {setverdict(fail);} | |
371 | if (x2.x1.x1==1) {setverdict(pass);} //at declaration, omit | |
372 | else {setverdict(fail);} | |
373 | if (x2.x1.x2==1.2) {setverdict(pass);} | |
374 | else {setverdict(fail);} | |
375 | if (not(ispresent(x2.x2))) {setverdict(pass);} | |
376 | else {setverdict(fail);} | |
377 | if (x3.x1.x1==1) {setverdict(pass);} //later | |
378 | else {setverdict(fail);} | |
379 | if (x3.x1.x2==1.2) {setverdict(pass);} | |
380 | else {setverdict(fail);} | |
381 | if (x3.x2==temp1) {setverdict(pass);} | |
382 | else {setverdict(fail);} | |
383 | if (x4.x1.x1==1) {setverdict(pass);} //later, omit | |
384 | else {setverdict(fail);} | |
385 | if (x4.x1.x2==1.2) {setverdict(pass);} | |
386 | else {setverdict(fail);} | |
387 | if (not(ispresent(x4.x2))) {setverdict(pass);} | |
388 | else {setverdict(fail);} | |
389 | } | |
390 | ||
391 | testcase recordAssignSetof() runs on recordOper_mycomp{ | |
392 | var recordOper_tsetof temp2:={"a","7"}; | |
393 | var recordOper_myrec6 x1:={ //record from set of | |
394 | x1:={ "1", "a" }, | |
395 | x2:=temp2 | |
396 | }; | |
397 | var recordOper_myrec6 x2:={ //record from set of, with omited field | |
398 | x1:={ "1", "a" }, | |
399 | x2:=omit | |
400 | }; | |
401 | var recordOper_myrec6 x3,x4 | |
402 | x3:={ //record from set of | |
403 | x1:={ "1", "a" }, | |
404 | x2:=temp2 | |
405 | }; | |
406 | x4:={ //record from set of, with omited field | |
407 | x1:={ "1","a" }, | |
408 | x2:=omit | |
409 | }; | |
410 | if (x1.x1[0]=="1") {setverdict(pass);} //at declaration | |
411 | else {setverdict(fail);} | |
412 | if (x1.x1[1]=="a") {setverdict(pass);} | |
413 | else {setverdict(fail);} | |
414 | if (x1.x2==temp2) {setverdict(pass);} | |
415 | else {setverdict(fail);} | |
416 | if (x2.x1[0]=="1") {setverdict(pass);} //at declaration, omit | |
417 | else {setverdict(fail);} | |
418 | if (x2.x1[1]=="a") {setverdict(pass);} | |
419 | else {setverdict(fail);} | |
420 | if (not(ispresent(x2.x2))) {setverdict(pass);} | |
421 | else {setverdict(fail);} | |
422 | if (x3.x1[0]=="1") {setverdict(pass);} //later | |
423 | else {setverdict(fail);} | |
424 | if (x3.x1[1]=="a") {setverdict(pass);} | |
425 | else {setverdict(fail);} | |
426 | if (x3.x2==temp2) {setverdict(pass);} | |
427 | else {setverdict(fail);} | |
428 | if (x4.x1[0]=="1") {setverdict(pass);} //later, omit | |
429 | else {setverdict(fail);} | |
430 | if (x4.x1[1]=="a") {setverdict(pass);} | |
431 | else {setverdict(fail);} | |
432 | if (not(ispresent(x4.x2))) {setverdict(pass);} | |
433 | else {setverdict(fail);} | |
434 | } | |
435 | ||
436 | testcase recordAssignUnion() runs on recordOper_mycomp{ | |
437 | var recordOper_tunion temp5 := {x2:=1.3} | |
438 | var recordOper_myrec7 x1:={ //record from union | |
439 | x1:={ x1 :=3 }, | |
440 | x2:=temp5 //{ x2:=1.3 } | |
441 | }; | |
442 | var recordOper_myrec7 x2:={ //record from union, with omited field | |
443 | x1:={ x1 :=3 }, | |
444 | x2:=omit | |
445 | }; | |
446 | var recordOper_myrec7 x3,x4; | |
447 | x3:={ //record from union | |
448 | x1:={ x1 :=3 }, | |
449 | x2:=temp5 //{ x2:=1.3 } | |
450 | }; | |
451 | x4:={ //record from union, with omited field | |
452 | x1:={ x1 :=3 }, | |
453 | x2:=omit | |
454 | }; | |
455 | if (x1.x1.x1==3) {setverdict(pass);} //at declaration | |
456 | else {setverdict(fail);} | |
457 | if (ischosen(x1.x1.x1)) {setverdict(pass);} | |
458 | else {setverdict(fail);} | |
459 | if (not(ischosen(x1.x1.x2))) {setverdict(pass);} | |
460 | else {setverdict(fail);} | |
461 | if (x1.x2==temp5) {setverdict(pass);} | |
462 | else {setverdict(fail);} | |
463 | if (x2.x1.x1==3) {setverdict(pass);} //at declaration, omit | |
464 | else {setverdict(fail);} | |
465 | if (ischosen(x2.x1.x1)) {setverdict(pass);} | |
466 | else {setverdict(fail);} | |
467 | if (not(ischosen(x2.x1.x2))) {setverdict(pass);} | |
468 | else {setverdict(fail);} | |
469 | if (not(ispresent(x2.x2))) {setverdict(pass);} | |
470 | else {setverdict(fail);} | |
471 | if (x3.x1.x1==3) {setverdict(pass);} //later | |
472 | else {setverdict(fail);} | |
473 | if (ischosen(x3.x1.x1)) {setverdict(pass);} | |
474 | else {setverdict(fail);} | |
475 | if (not(ischosen(x3.x1.x2))) {setverdict(pass);} | |
476 | else {setverdict(fail);} | |
477 | if (x3.x2==temp5) {setverdict(pass);} | |
478 | else {setverdict(fail);} | |
479 | if (x4.x1.x1==3) {setverdict(pass);} //later, omit | |
480 | else {setverdict(fail);} | |
481 | if (ischosen(x4.x1.x1)) {setverdict(pass);} | |
482 | else {setverdict(fail);} | |
483 | if (not(ischosen(x4.x1.x2))) {setverdict(pass);} | |
484 | else {setverdict(fail);} | |
485 | if (not(ispresent(x4.x2))) {setverdict(pass);} | |
486 | else {setverdict(fail);} | |
487 | } | |
488 | ||
489 | testcase recordAssignElem() runs on recordOper_mycomp{ | |
490 | var recordOper_myrec1 x1:={ //record with basic types | |
491 | x1:=1, | |
492 | x2:=1.2, | |
493 | x3:=xx2 }; | |
494 | x1.x2:=3.4; | |
495 | if (x1.x1==1) {setverdict(pass);} | |
496 | else {setverdict(fail);} | |
497 | if (x1.x2==3.4) {setverdict(pass);} | |
498 | else {setverdict(fail);} | |
499 | if (x1.x3==xx2) {setverdict(pass);} | |
500 | else {setverdict(fail);} | |
501 | } | |
502 | ||
503 | ||
504 | testcase recordAssignElemOpt() runs on recordOper_mycomp{ | |
505 | var integer inttemp:=2; | |
506 | var recordOper_myrec2 x1:={ //record with basic types | |
507 | x1:=1, | |
508 | x2:=1.2, | |
509 | x3:=xx2, | |
510 | x4:=omit } ; //2 | |
511 | var recordOper_myrec2 x2, x3, x4; | |
512 | x2:=x1; | |
513 | x3:={x1:=1, x2:=1.2, x3:=xx2, x4:=inttemp }; | |
514 | x4:=x2; | |
515 | x1.x1:=2; //not optional field | |
516 | x2.x4:=3; //optional field; omited-> value | |
517 | x3.x4:=3; //optional field; value-> value | |
518 | x4.x4:=omit; //optional field; value -> omited | |
519 | //change not optional field | |
520 | if (x1.x1==2) {setverdict(pass);} | |
521 | else {setverdict(fail);} | |
522 | if (x1.x2==1.2) {setverdict(pass);} | |
523 | else {setverdict(fail);} | |
524 | if (x1.x3==xx2) {setverdict(pass);} | |
525 | else {setverdict(fail);} | |
526 | if (not(ispresent(x1.x4))) {setverdict(pass);} | |
527 | else {setverdict(fail);} | |
528 | //omited -> value | |
529 | if (x2.x1==1) {setverdict(pass);} | |
530 | else {setverdict(fail);} | |
531 | if (x2.x2==1.2) {setverdict(pass);} | |
532 | else {setverdict(fail);} | |
533 | if (x2.x3==xx2) {setverdict(pass);} | |
534 | else {setverdict(fail);} | |
535 | if (x2.x4==3) {setverdict(pass);} | |
536 | else {setverdict(fail);} | |
537 | //optional field; value-> value | |
538 | if (x3.x1==1) {setverdict(pass);} | |
539 | else {setverdict(fail);} | |
540 | if (x3.x2==1.2) {setverdict(pass);} | |
541 | else {setverdict(fail);} | |
542 | if (x3.x3==xx2) {setverdict(pass);} | |
543 | else {setverdict(fail);} | |
544 | if (x3.x4==3) {setverdict(pass);} | |
545 | else {setverdict(fail);} | |
546 | //optional field; value -> omited | |
547 | if (x4.x1==1) {setverdict(pass);} | |
548 | else {setverdict(fail);} | |
549 | if (x4.x2==1.2) {setverdict(pass);} | |
550 | else {setverdict(fail);} | |
551 | if (x4.x3==xx2) {setverdict(pass);} | |
552 | else {setverdict(fail);} | |
553 | if (not(ispresent(x4.x4))) {setverdict(pass);} | |
554 | else {setverdict(fail);} | |
555 | } | |
556 | ||
557 | testcase recordAssignElemRec() runs on recordOper_mycomp{ | |
558 | var recordOper_trecord temp1:={ x1:=omit, x2:=3.4 }; | |
559 | var recordOper_myrec3 x1; | |
560 | x1:={ //record from record | |
561 | x1:={ x1:=1, x2:=1.2 }, | |
562 | x2:=temp1 | |
563 | }; | |
564 | x1.x1.x1:=2; | |
565 | //temp1.x1:=3; | |
566 | //x1.x2:=temp1; | |
567 | if (x1.x1.x1==2) {setverdict(pass);} | |
568 | else {setverdict(fail);} | |
569 | if (x1.x1.x2==1.2) {setverdict(pass);} | |
570 | else {setverdict(fail);} | |
571 | if (x1.x2==temp1) {setverdict(pass);} | |
572 | else {setverdict(fail);} | |
573 | } | |
574 | ||
575 | ||
576 | testcase recordAssignElemRecof() runs on recordOper_mycomp{ | |
577 | var recordOper_trecof temp2:={'AF12'O}; | |
578 | var recordOper_myrec4 x1:={ //record from record of | |
579 | x1:={ '12AB'O, 'CD12'O }, | |
580 | x2:=temp2 | |
581 | }; | |
582 | x1.x1[1]:='34AB'O; | |
583 | if (x1.x1[0]=='12AB'O) {setverdict(pass);} | |
584 | else {setverdict(fail);} | |
585 | if (x1.x1[1]=='34AB'O) {setverdict(pass);} | |
586 | else {setverdict(fail);} | |
587 | if (x1.x2==temp2) {setverdict(pass);} | |
588 | else {setverdict(fail);} | |
589 | } | |
590 | ||
591 | testcase recordAssignElemSet() runs on recordOper_mycomp{ | |
592 | var recordOper_tset temp1:={ x1:=2, x2:=omit }; | |
593 | var recordOper_myrec5 x1:={ //record from set | |
594 | x1:={ x1:=1, x2:=1.2 }, | |
595 | x2:=temp1 | |
596 | }; | |
597 | x1.x1.x2:=3.4; | |
598 | if (x1.x1.x1==1) {setverdict(pass);} | |
599 | else {setverdict(fail);} | |
600 | if (x1.x1.x2==3.4) {setverdict(pass);} | |
601 | else {setverdict(fail);} | |
602 | if (x1.x2==temp1) {setverdict(pass);} | |
603 | else {setverdict(fail);} | |
604 | } | |
605 | ||
606 | testcase recordAssignElemSetof() runs on recordOper_mycomp{ | |
607 | var recordOper_tsetof temp2:={"a","7"}; | |
608 | var recordOper_myrec6 x1:={ //record from set of | |
609 | x1:={ "1", "a" }, | |
610 | x2:=temp2 | |
611 | }; | |
612 | x1.x1[0]:="h"; | |
613 | if (x1.x1[0]=="h") {setverdict(pass);} | |
614 | else {setverdict(fail);} | |
615 | if (x1.x1[1]=="a") {setverdict(pass);} | |
616 | else {setverdict(fail);} | |
617 | if (x1.x2==temp2) {setverdict(pass);} | |
618 | else {setverdict(fail);} | |
619 | } | |
620 | ||
621 | testcase recordAssignElemUnion() runs on recordOper_mycomp{ | |
622 | var recordOper_tunion temp5 := {x2:=1.3} | |
623 | var recordOper_myrec7 x1:={ //record from union | |
624 | x1:={ x1 :=3 }, | |
625 | x2:=temp5 //{ x2:=1.3 } | |
626 | }; | |
627 | x1.x1.x2:=3.4; | |
628 | if (x1.x1.x2==3.4) {setverdict(pass);} | |
629 | else {setverdict(fail);} | |
630 | if (ischosen(x1.x1.x2)) {setverdict(pass);} | |
631 | else {setverdict(fail);} | |
632 | if (not(ischosen(x1.x1.x1))) {setverdict(pass);} | |
633 | else {setverdict(fail);} | |
634 | if (x1.x2==temp5) {setverdict(pass);} | |
635 | else {setverdict(fail);} | |
636 | } | |
637 | ||
638 | testcase recordSizeof() runs on recordOper_mycomp{ | |
639 | var integer inttemp:=2; | |
640 | var recordOper_myrec2 x1:={ //record with basic types, with optional field | |
641 | x1:=1, | |
642 | x2:=1.2, | |
643 | x3:=xx2, | |
644 | x4:=inttemp}; //2 | |
645 | var recordOper_myrec2 x2:={ //record with basic types, with omited field | |
646 | x1:=1, | |
647 | x2:=1.2, | |
648 | x3:=xx2, | |
649 | x4:=omit }; | |
650 | var recordOper_myrec2 x3, x4; | |
651 | x3:={ //record with basic types, with optional field | |
652 | x1:=1, | |
653 | x2:=1.2, | |
654 | x3:=xx2, | |
655 | x4:=inttemp }; //2 | |
656 | x4:={ //record with basic types, with omited field | |
657 | x1:=1, | |
658 | x2:=1.2, | |
659 | x3:=xx2, | |
660 | x4:=omit }; | |
661 | var recordOper_myrec4 x5; | |
662 | x5.x1 := { '12AB'O, '12AB'O}; | |
663 | x5.x2 := { '12AB'O, '12AB'O, '12AB'O}; | |
664 | if (sizeof(x1)==4) {setverdict(pass);} //at declaration, with optional field | |
665 | else {setverdict(fail);} | |
666 | if (sizeof(x2)==3) {setverdict(pass);} //at declaration, with omited field | |
667 | else {setverdict(fail);} | |
668 | if (sizeof(x3)==4) {setverdict(pass);} //later, with optional field | |
669 | else {setverdict(fail);} | |
670 | if (sizeof(x4)==3) {setverdict(pass);} //testcase, with optional field | |
671 | else {setverdict(fail);} | |
672 | if (sizeof(x5.x1)==2 and sizeof(x5.x2) == 3) {setverdict(pass);} //testcase, with optional field | |
673 | else {setverdict(fail);} | |
674 | } | |
675 | ||
676 | testcase recordConst() runs on recordOper_mycomp{ | |
677 | const recordOper_myrec1 const1:={ //record with basic types | |
678 | x1:=1, | |
679 | x2:=1.2, | |
680 | x3:=xx2 }; | |
681 | if (recordOper_const1.x1==1) {setverdict(pass);} //definition part | |
682 | else {setverdict(fail);} | |
683 | if (recordOper_const1.x2==1.2) {setverdict(pass);} | |
684 | else {setverdict(fail);} | |
685 | if (recordOper_const1.x3==xx2) {setverdict(pass);} | |
686 | else {setverdict(fail);} | |
687 | if (const1.x1==1) {setverdict(pass);} //testcase | |
688 | else {setverdict(fail);} | |
689 | if (const1.x2==1.2) {setverdict(pass);} | |
690 | else {setverdict(fail);} | |
691 | if (const1.x3==xx2) {setverdict(pass);} | |
692 | else {setverdict(fail);} | |
693 | } | |
694 | ||
695 | testcase recordConstOpt() runs on recordOper_mycomp{ | |
696 | const recordOper_myrec2 const2:={ //record with basic types, with optional field | |
697 | x1:=1, | |
698 | x2:=1.2, | |
699 | x3:=xx2, | |
700 | x4:=2 }; | |
701 | const recordOper_myrec2 const3:={ //record with basic types, with omited field | |
702 | x1:=1, | |
703 | x2:=1.2, | |
704 | x3:=xx2, | |
705 | x4:=omit }; | |
706 | //definition part, with optional field | |
707 | if (recordOper_const2.x1==1) {setverdict(pass);} | |
708 | else {setverdict(fail);} | |
709 | if (recordOper_const2.x2==1.2) {setverdict(pass);} | |
710 | else {setverdict(fail);} | |
711 | if (recordOper_const2.x3==xx2) {setverdict(pass);} | |
712 | else {setverdict(fail);} | |
713 | if (recordOper_const2.x4==2) {setverdict(pass);} | |
714 | else {setverdict(fail);} | |
715 | //definition part, with omited field | |
716 | if (recordOper_const3.x1==1) {setverdict(pass);} | |
717 | else {setverdict(fail);} | |
718 | if (recordOper_const3.x2==1.2) {setverdict(pass);} | |
719 | else {setverdict(fail);} | |
720 | if (recordOper_const3.x3==xx2) {setverdict(pass);} | |
721 | else {setverdict(fail);} | |
722 | if (not(ispresent(recordOper_const3.x4))) {setverdict(pass);} | |
723 | else {setverdict(fail);} | |
724 | //testcase, with optional field | |
725 | if (const2.x1==1) {setverdict(pass);} | |
726 | else {setverdict(fail);} | |
727 | if (const2.x2==1.2) {setverdict(pass);} | |
728 | else {setverdict(fail);} | |
729 | if (const2.x3==xx2) {setverdict(pass);} | |
730 | else {setverdict(fail);} | |
731 | if (const2.x4==2) {setverdict(pass);} | |
732 | else {setverdict(fail);} | |
733 | //testcase, with omited field | |
734 | if (const3.x1==1) {setverdict(pass);} | |
735 | else {setverdict(fail);} | |
736 | if (const3.x2==1.2) {setverdict(pass);} | |
737 | else {setverdict(fail);} | |
738 | if (const3.x3==xx2) {setverdict(pass);} | |
739 | else {setverdict(fail);} | |
740 | if (not(ispresent(const3.x4))) {setverdict(pass);} | |
741 | else {setverdict(fail);} | |
742 | } | |
743 | ||
744 | testcase recordConstRec() runs on recordOper_mycomp{ | |
745 | const recordOper_myrec3 const4:={ //record from record | |
746 | x1:={ x1:=1, x2:=1.2 }, | |
747 | x2:=recordOper_temp1 | |
748 | }; | |
749 | const recordOper_myrec3 const5:={ //record from record, with omited field | |
750 | x1:={ x1:=1, x2:=1.2 }, | |
751 | x2:=omit | |
752 | }; | |
753 | if (recordOper_const4.x1.x1==1) {setverdict(pass);} //definition part | |
754 | else {setverdict(fail);} | |
755 | if (recordOper_const4.x1.x2==1.2) {setverdict(pass);} | |
756 | else {setverdict(fail);} | |
757 | if (recordOper_const4.x2==recordOper_temp1) {setverdict(pass);} | |
758 | else {setverdict(fail);} | |
759 | if (recordOper_const5.x1.x1==1) {setverdict(pass);} //definition part, omit | |
760 | else {setverdict(fail);} | |
761 | if (recordOper_const5.x1.x2==1.2) {setverdict(pass);} | |
762 | else {setverdict(fail);} | |
763 | if (not(ispresent(recordOper_const5.x2))) {setverdict(pass);} | |
764 | else {setverdict(fail);} | |
765 | if (const4.x1.x1==1) {setverdict(pass);} //testcase | |
766 | else {setverdict(fail);} | |
767 | if (const4.x1.x2==1.2) {setverdict(pass);} | |
768 | else {setverdict(fail);} | |
769 | if (const4.x2==recordOper_temp1) {setverdict(pass);} | |
770 | else {setverdict(fail);} | |
771 | if (const5.x1.x1==1) {setverdict(pass);} //testcase, omit | |
772 | else {setverdict(fail);} | |
773 | if (const5.x1.x2==1.2) {setverdict(pass);} | |
774 | else {setverdict(fail);} | |
775 | if (not(ispresent(const5.x2))) {setverdict(pass);} | |
776 | else {setverdict(fail);} | |
777 | } | |
778 | ||
779 | testcase recordConstRecof() runs on recordOper_mycomp{ | |
780 | const recordOper_myrec4 const6:={ //record from record of | |
781 | x1:={ '12AB'O, 'CD12'O }, | |
782 | x2:=recordOper_temp2 | |
783 | }; | |
784 | const recordOper_myrec4 const7:={ //record from record of, with omited field | |
785 | x1:={ '12AB'O, 'CD12'O }, | |
786 | x2:=omit | |
787 | }; | |
788 | if (recordOper_const6.x1[0]=='12AB'O) {setverdict(pass);} //definition part | |
789 | else {setverdict(fail);} | |
790 | if (recordOper_const6.x1[1]=='CD12'O) {setverdict(pass);} | |
791 | else {setverdict(fail);} | |
792 | if (recordOper_const6.x2==recordOper_temp2) {setverdict(pass);} | |
793 | else {setverdict(fail);} | |
794 | if (recordOper_const7.x1[0]=='12AB'O) {setverdict(pass);} //definition part, omit | |
795 | else {setverdict(fail);} | |
796 | if (recordOper_const7.x1[1]=='CD12'O) {setverdict(pass);} | |
797 | else {setverdict(fail);} | |
798 | if (not(ispresent(recordOper_const7.x2))) {setverdict(pass);} | |
799 | else {setverdict(fail);} | |
800 | if (const6.x1[0]=='12AB'O) {setverdict(pass);} //testcase | |
801 | else {setverdict(fail);} | |
802 | if (const6.x1[1]=='CD12'O) {setverdict(pass);} | |
803 | else {setverdict(fail);} | |
804 | if (const6.x2==recordOper_temp2) {setverdict(pass);} | |
805 | else {setverdict(fail);} | |
806 | if (const7.x1[0]=='12AB'O) {setverdict(pass);} //testcase, omit | |
807 | else {setverdict(fail);} | |
808 | if (const7.x1[1]=='CD12'O) {setverdict(pass);} | |
809 | else {setverdict(fail);} | |
810 | if (not(ispresent(const7.x2))) {setverdict(pass);} | |
811 | else {setverdict(fail);} | |
812 | } | |
813 | ||
814 | testcase recordConstSet() runs on recordOper_mycomp{ | |
815 | const recordOper_myrec5 const8:={ //record from set | |
816 | x1:={ x1:=2, x2:=1.3}, | |
817 | x2:=recordOper_temp3 | |
818 | }; | |
819 | const recordOper_myrec5 const9:={ //record from set, with omited field | |
820 | x1:={ x1:=2, x2:=omit}, | |
821 | x2:=omit | |
822 | }; | |
823 | if (recordOper_const8.x1.x1==2) {setverdict(pass);} //definition part | |
824 | else {setverdict(fail);} | |
825 | if (recordOper_const8.x1.x2==1.3) {setverdict(pass);} | |
826 | else {setverdict(fail);} | |
827 | if (recordOper_const8.x2==recordOper_temp3) {setverdict(pass);} | |
828 | else {setverdict(fail);} | |
829 | if (recordOper_const9.x1.x1==2) {setverdict(pass);} //definition part, omit | |
830 | else {setverdict(fail);} | |
831 | if (recordOper_const9.x1.x2==1.3) {setverdict(pass);} | |
832 | else {setverdict(fail);} | |
833 | if (not(ispresent(recordOper_const9.x2))) {setverdict(pass);} | |
834 | else {setverdict(fail);} | |
835 | if (const8.x1.x1==2) {setverdict(pass);} //testcase | |
836 | else {setverdict(fail);} | |
837 | if (const8.x1.x2==1.3) {setverdict(pass);} | |
838 | else {setverdict(fail);} | |
839 | if (const8.x2==recordOper_temp3) {setverdict(pass);} | |
840 | else {setverdict(fail);} | |
841 | if (const9.x1.x1==2) {setverdict(pass);} //testcase, omit | |
842 | else {setverdict(fail);} | |
843 | if (not(ispresent(const9.x1.x2))) {setverdict(pass);} | |
844 | else {setverdict(fail);} | |
845 | if (not(ispresent(const9.x2))) {setverdict(pass);} | |
846 | else {setverdict(fail);} | |
847 | } | |
848 | ||
849 | testcase recordConstSetof() runs on recordOper_mycomp{ | |
850 | const recordOper_myrec6 const10:={ //record from set of | |
851 | x1:={"a","b"}, | |
852 | x2:=recordOper_temp4 //{"f","8"}, | |
853 | }; | |
854 | const recordOper_myrec6 const11:={ //record from set of, with omited field | |
855 | x1:={"a","b"}, | |
856 | x2:=omit | |
857 | }; | |
858 | if (recordOper_const10.x1[0]=="a") {setverdict(pass);} //definition part | |
859 | else {setverdict(fail);} | |
860 | if (recordOper_const10.x1[1]=="b") {setverdict(pass);} | |
861 | else {setverdict(fail);} | |
862 | if (recordOper_const10.x2==recordOper_temp4) {setverdict(pass);} | |
863 | else {setverdict(fail);} | |
864 | if (recordOper_const11.x1[0]=="a") {setverdict(pass);} //definition part, omit | |
865 | else {setverdict(fail);} | |
866 | if (recordOper_const11.x1[1]=="b") {setverdict(pass);} | |
867 | else {setverdict(fail);} | |
868 | if (not(ispresent(recordOper_const11.x2))) {setverdict(pass);} | |
869 | else {setverdict(fail);} | |
870 | if (const10.x1[0]=="a") {setverdict(pass);} //testcase | |
871 | else {setverdict(fail);} | |
872 | if (const10.x1[1]=="b") {setverdict(pass);} | |
873 | else {setverdict(fail);} | |
874 | if (const10.x2==recordOper_temp4) {setverdict(pass);} | |
875 | else {setverdict(fail);} | |
876 | if (const11.x1[0]=="a") {setverdict(pass);} //testcase, omit | |
877 | else {setverdict(fail);} | |
878 | if (const11.x1[1]=="b") {setverdict(pass);} | |
879 | else {setverdict(fail);} | |
880 | if (not(ispresent(const11.x2))) {setverdict(pass);} | |
881 | else {setverdict(fail);} | |
882 | } | |
883 | ||
884 | testcase recordConstUnion() runs on recordOper_mycomp{ | |
885 | const recordOper_myrec7 const12:={ //record from union | |
886 | x1:={ x1 :=3 }, | |
887 | x2:=recordOper_temp5 //{ x2:=1.3 } | |
888 | }; | |
889 | const recordOper_myrec7 const13:={ //record from union, with omited field | |
890 | x1:={ x1 :=3 }, | |
891 | x2:=omit | |
892 | }; | |
893 | if (recordOper_const12.x1.x1==3) {setverdict(pass);} //definition part | |
894 | else {setverdict(fail);} | |
895 | if (ischosen(recordOper_const12.x1.x1)) {setverdict(pass);} | |
896 | else {setverdict(fail);} | |
897 | if (not(ischosen(recordOper_const12.x1.x2))) {setverdict(pass);} | |
898 | else {setverdict(fail);} | |
899 | if (recordOper_const12.x2==recordOper_temp5) {setverdict(pass);} | |
900 | else {setverdict(fail);} | |
901 | if (recordOper_const13.x1.x1==3) {setverdict(pass);} //definition part, omit | |
902 | else {setverdict(fail);} | |
903 | if (ischosen(recordOper_const13.x1.x1)) {setverdict(pass);} | |
904 | else {setverdict(fail);} | |
905 | if (not(ischosen(recordOper_const13.x1.x2))) {setverdict(pass);} | |
906 | else {setverdict(fail);} | |
907 | if (not(ispresent(recordOper_const13.x2))) {setverdict(pass);} | |
908 | else {setverdict(fail);} | |
909 | if (const12.x1.x1==3) {setverdict(pass);} //testcase | |
910 | else {setverdict(fail);} | |
911 | if (ischosen(const12.x1.x1)) {setverdict(pass);} | |
912 | else {setverdict(fail);} | |
913 | if (not(ischosen(const12.x1.x2))) {setverdict(pass);} | |
914 | else {setverdict(fail);} | |
915 | if (const12.x2==recordOper_temp5) {setverdict(pass);} | |
916 | else {setverdict(fail);} | |
917 | if (const13.x1.x1==3) {setverdict(pass);} //testcase, omit | |
918 | else {setverdict(fail);} | |
919 | if (ischosen(const13.x1.x1)) {setverdict(pass);} | |
920 | else {setverdict(fail);} | |
921 | if (not(ischosen(const13.x1.x2))) {setverdict(pass);} | |
922 | else {setverdict(fail);} | |
923 | if (not(ispresent(const13.x2))) {setverdict(pass);} | |
924 | else {setverdict(fail);} | |
925 | } | |
926 | ||
927 | testcase recordComp() runs on recordOper_mycomp{ | |
928 | var recordOper_myrec1 x1,x2,x3; // record with basic types | |
929 | x1:={ x1:=1, x2:=1.2, x3:=xx2 }; | |
930 | x2:={ x1:=1, x2:=1.2, x3:=xx2 }; | |
931 | x3:={ x1:=1, x2:=1.24, x3:=xx2 } | |
932 | if (x1==x2) {setverdict(pass);} | |
933 | else {setverdict(fail);} | |
934 | if (not(x1==x3)) {setverdict(pass);} | |
935 | else {setverdict(fail);} | |
936 | if (x1!=x3) {setverdict(pass);} | |
937 | else {setverdict(fail);} | |
938 | if (not(x1!=x2)) {setverdict(pass);} | |
939 | else {setverdict(fail);} | |
940 | } | |
941 | ||
942 | ||
943 | testcase recordCompOpt() runs on recordOper_mycomp{ | |
944 | var integer inttemp:=2; // record with basic types and optional field | |
945 | var recordOper_myrec2 x1,x2,x3; | |
946 | x1 :={ x1:=1, x2:=1.2, x3:=xx2, x4:=inttemp }; //inntemp=2 | |
947 | x2:= { x1:=1, x2:=1.2, x3:=xx2, x4:=omit }; | |
948 | x3:= { x1:=1, x2:=1.2, x3:=xx2, x4:=omit }; | |
949 | if (x2==x3) {setverdict(pass);} | |
950 | else {setverdict(fail);} | |
951 | if (not(x1==x2)) {setverdict(pass);} | |
952 | else {setverdict(fail);} | |
953 | if (x1!=x3) {setverdict(pass);} | |
954 | else {setverdict(fail);} | |
955 | if (not(x2!=x3)) {setverdict(pass);} | |
956 | else {setverdict(fail);} | |
957 | } | |
958 | ||
959 | testcase recordCompOptField() runs on recordOper_mycomp | |
960 | { | |
961 | const recordOper_trecord c1 := { x1 := omit, x2 := 0.0 }; | |
962 | const recordOper_trecord c2 := { x1 := 1, x2 := 0.0 }; | |
963 | const integer ci := 1; | |
964 | var recordOper_trecord v := { x1 := omit }; | |
965 | var integer i := 1; | |
966 | if (c1.x1 == omit and c1.x1 != 1 and /*c1.x1 != i and*/ c1.x1 != ci and c1.x1 == c1.x1 and | |
967 | omit == c1.x1 and 1 != c1.x1 and /*i != c1.x1 and*/ ci != c1.x1 and not c1.x1 != c1.x1) | |
968 | { setverdict(pass); } | |
969 | else { setverdict(fail); } | |
970 | if (c2.x1 != omit and c2.x1 == 1 and c2.x1 == i and c2.x1 == ci and c2.x1 == c2.x1 and | |
971 | omit != c2.x1 and 1 == c2.x1 and i == c2.x1 and ci == c2.x1 and not c2.x1 != c2.x1) | |
972 | { setverdict(pass); } | |
973 | else { setverdict(fail); } | |
974 | if (v.x1 == omit and v.x1 != 1 and v.x1 != i and v.x1 == v.x1 and | |
975 | omit == v.x1 and 1 != v.x1 and i != v.x1 and not v.x1 != v.x1) | |
976 | { setverdict(pass); } | |
977 | else { setverdict(fail); } | |
978 | v.x1 := 1; | |
979 | if (v.x1 != omit and v.x1 == 1 and v.x1 == i and v.x1 == v.x1 and | |
980 | omit != v.x1 and 1 == v.x1 and i == v.x1 and not v.x1 != v.x1) | |
981 | { setverdict(pass); } | |
982 | else { setverdict(fail); } | |
983 | } | |
984 | ||
985 | testcase recordCompRec() runs on recordOper_mycomp{ | |
986 | var recordOper_trecord temp1:={ x1:=omit, x2:=3.4 }; // record with record | |
987 | var recordOper_myrec3 x1,x2,x3; | |
988 | x1 :={ | |
989 | x1:={ x1:=1, x2:=1.2 }, | |
990 | x2:=temp1 | |
991 | }; | |
992 | x2 :={ | |
993 | x1:={ x1:=1, x2:=1.2 }, | |
994 | x2:=temp1 | |
995 | }; | |
996 | x3 :={ | |
997 | x1:={ x1:=2, x2:=1.2 }, | |
998 | x2:=temp1 | |
999 | }; | |
1000 | if (x1==x2) {setverdict(pass);} | |
1001 | else {setverdict(fail);} | |
1002 | if (not(x1==x3)) {setverdict(pass);} | |
1003 | else {setverdict(fail);} | |
1004 | if (x1!=x3) {setverdict(pass);} | |
1005 | else {setverdict(fail);} | |
1006 | if (not(x1!=x2)) {setverdict(pass);} | |
1007 | else {setverdict(fail);} | |
1008 | } | |
1009 | ||
1010 | ||
1011 | testcase recordCompRecof() runs on recordOper_mycomp{ | |
1012 | var recordOper_trecof temp2:={'AF12'O}; | |
1013 | var recordOper_myrec4 x1,x2,x3; | |
1014 | x1:={ //record from record of | |
1015 | x1:={ '12AB'O, 'CD12'O }, | |
1016 | x2:=temp2 | |
1017 | }; | |
1018 | x2:={ //record from record of | |
1019 | x1:={ '12AB'O, 'CD12'O }, | |
1020 | x2:=temp2 | |
1021 | }; | |
1022 | x3:={ //record from record of | |
1023 | x1:={ '12AB'O }, | |
1024 | x2:=temp2 | |
1025 | }; | |
1026 | if (x1==x2) {setverdict(pass);} | |
1027 | else {setverdict(fail);} | |
1028 | if (not(x1==x3)) {setverdict(pass);} | |
1029 | else {setverdict(fail);} | |
1030 | if (x2!=x3) {setverdict(pass);} | |
1031 | else {setverdict(fail);} | |
1032 | if (not(x1!=x2)) {setverdict(pass);} | |
1033 | else {setverdict(fail);} | |
1034 | } | |
1035 | ||
1036 | testcase recordCompSet() runs on recordOper_mycomp{ | |
1037 | var recordOper_tset temp1:={ x1:=2, x2:=omit }; | |
1038 | var recordOper_myrec5 x1,x2,x3; //record from set | |
1039 | x1:={ | |
1040 | x1:={ x1:=1, x2:=1.2 }, | |
1041 | x2:=temp1 | |
1042 | }; | |
1043 | x2:={ | |
1044 | x1:={ x1:=1, x2:=1.2 }, | |
1045 | x2:=temp1 | |
1046 | }; | |
1047 | x3:={ | |
1048 | x1:={ x1:=4, x2:=1.2 }, | |
1049 | x2:=temp1 | |
1050 | }; | |
1051 | if (x1==x2) {setverdict(pass);} | |
1052 | else {setverdict(fail);} | |
1053 | if (not(x2==x3)) {setverdict(pass);} | |
1054 | else {setverdict(fail);} | |
1055 | if (x1!=x3) {setverdict(pass);} | |
1056 | else {setverdict(fail);} | |
1057 | if (not(x1!=x2)) {setverdict(pass);} | |
1058 | else {setverdict(fail);} | |
1059 | } | |
1060 | ||
1061 | testcase recordCompSetof() runs on recordOper_mycomp{ | |
1062 | var recordOper_tsetof temp2:={"a","7"}; | |
1063 | var recordOper_myrec6 x1,x2,x3; //record from set of | |
1064 | x1:={ | |
1065 | x1:={ "1", "a" }, | |
1066 | x2:=temp2 | |
1067 | }; | |
1068 | x2:={ | |
1069 | x1:={ "1", "a" }, | |
1070 | x2:=temp2 | |
1071 | }; | |
1072 | x3:={ | |
1073 | x1:={ "1", "a", "k" }, | |
1074 | x2:=temp2 | |
1075 | }; | |
1076 | if (x1==x2) {setverdict(pass);} | |
1077 | else {setverdict(fail);} | |
1078 | if (not(x2==x3)) {setverdict(pass);} | |
1079 | else {setverdict(fail);} | |
1080 | if (x1!=x3) {setverdict(pass);} | |
1081 | else {setverdict(fail);} | |
1082 | if (not(x1!=x2)) {setverdict(pass);} | |
1083 | else {setverdict(fail);} | |
1084 | } | |
1085 | ||
1086 | testcase recordCompUnion() runs on recordOper_mycomp{ | |
1087 | var recordOper_tunion temp5 := {x2:=1.3}; //record from union | |
1088 | var recordOper_myrec7 x1,x2,x3; | |
1089 | x1:={ | |
1090 | x1:={ x1 :=3 }, | |
1091 | x2:=temp5 //{ x2:=1.3 } | |
1092 | }; | |
1093 | x2:={ | |
1094 | x1:={ x1 :=3 }, | |
1095 | x2:=temp5 //{ x2:=1.3 } | |
1096 | }; | |
1097 | x3:={ | |
1098 | x1:={ x2 :=3.9 }, | |
1099 | x2:=temp5 //{ x2:=1.3 } | |
1100 | }; | |
1101 | if (x1==x2) {setverdict(pass);} | |
1102 | else {setverdict(fail);} | |
1103 | if (not(x1==x3)) {setverdict(pass);} | |
1104 | else {setverdict(fail);} | |
1105 | if (x2!=x3) {setverdict(pass);} | |
1106 | else {setverdict(fail);} | |
1107 | if (not(x1!=x2)) {setverdict(pass);} | |
1108 | else {setverdict(fail);} | |
1109 | } | |
1110 | ||
1111 | // Example from CR 5262. No need to list all fields explicitly in the further | |
1112 | // restricted type: `type myrecr1 myrecr2 ({ "", "" }, { "", "" })'. | |
1113 | type record myrec1 { | |
1114 | integer f1 (0..255), | |
1115 | charstring f2, | |
1116 | charstring f3 optional | |
1117 | } | |
1118 | type myrec1 myrec2 ({1, "", ""}, {2, "", ""}, {f1 := 3, f2 := "", f3 := omit}) | |
1119 | type record MyRecordTypeWithSubtypedFields { | |
1120 | integer field1 (1..100), | |
1121 | charstring field2 length(2..255) | |
1122 | } | |
1123 | type myrec1 myrec3 (myrec2, {1, "", ""}) | |
1124 | ||
1125 | const myrec2 c_myrec1 := {1, "", ""} | |
1126 | ||
1127 | template myrec2 t_myrec1 := c_myrec1 | |
1128 | ||
1129 | function f_rec1() return MyRecordTypeWithSubtypedFields { | |
1130 | return { 2, "aaa" } | |
1131 | } | |
1132 | ||
1133 | testcase recordSubtypes() runs on recordOper_mycomp { | |
1134 | var template MyRecordTypeWithSubtypedFields vt_myrec1 := {100, "hello"} | |
1135 | var MyRecordTypeWithSubtypedFields v_myrec1 := {field1 := 100, field2 := "hello"} | |
1136 | var myrec2 v_myrec2 := valueof(modifies t_myrec1 := {f1 := 2}) | |
1137 | if (match(valueof(v_myrec1), vt_myrec1)) { setverdict(pass) } | |
1138 | else { setverdict(fail) } | |
1139 | if ({ 2, "aaa" } == f_rec1() and f_rec1() == { 2, "aaa" }) { setverdict(pass) } | |
1140 | else { setverdict(fail) } | |
1141 | // FATAL_ERROR() with R8B: `if (valueof(MyRecordTypeWithSubtypedFields:{ 1, "hello" }) == valueof(v_myrec1)) { setverdict(pass) }'. | |
1142 | } | |
1143 | ||
1144 | testcase recordIsvalue() runs on recordOper_mycomp{ | |
1145 | var recordOper_empty v1; | |
1146 | var recordOper_trecord vs2_def; | |
1147 | var recordOper_trecord v2; | |
1148 | v2.x1 := 42; | |
1149 | ||
1150 | if ( isvalue(v1) ) { setverdict(fail); } else { setverdict(pass); }; | |
1151 | if ( isvalue(vs2_def) ) { setverdict(fail); } else { setverdict(pass); }; | |
1152 | if ( isvalue(v2) ) { setverdict(fail); } else { setverdict(pass); }; | |
1153 | ||
1154 | var recordOper_trecord vs2_part := { -, 1.0 }; | |
1155 | if ( isvalue(vs2_part) ) { setverdict(fail); } else { setverdict(pass); }; | |
1156 | vs2_part.x1 := omit; | |
1157 | if ( isvalue(vs2_part) ) { setverdict(pass); } else { setverdict(fail); }; | |
1158 | ||
1159 | var recordOper_trecord vs2_om := { omit, - }; | |
1160 | if ( isvalue(vs2_om) ) { setverdict(fail); } else { setverdict(pass); }; | |
1161 | vs2_om.x2 := 33.0; | |
1162 | if ( isvalue(vs2_om) ) { setverdict(pass); } else { setverdict(fail); }; | |
1163 | } | |
1164 | ||
1165 | testcase recordIsbound() runs on recordOper_mycomp{ | |
1166 | var recordOper_empty v1; | |
1167 | var recordOper_trecord vs2_def; | |
1168 | var recordOper_trecord v2; | |
1169 | v2.x1 := 42; | |
1170 | ||
1171 | if ( isbound(v1) ) { setverdict(fail); } else { setverdict(pass); }; | |
1172 | if ( isbound(vs2_def) ) { setverdict(fail); } else { setverdict(pass); }; | |
1173 | if ( isbound(vs2_def.x1) ) { setverdict(fail); } else { setverdict(pass); }; | |
1174 | if ( isbound(vs2_def.x2) ) { setverdict(fail); } else { setverdict(pass); }; | |
1175 | if ( isbound(v2) ) { setverdict(pass); } else { setverdict(fail); }; | |
1176 | ||
1177 | var recordOper_trecord vs2_part := { -, 1.0 }; | |
1178 | if ( isbound(vs2_part) ) { setverdict(pass); } else { setverdict(fail); }; | |
1179 | vs2_part.x1 := omit; | |
1180 | if ( isbound(vs2_part) ) { setverdict(pass); } else { setverdict(fail); }; | |
1181 | ||
1182 | var recordOper_trecord vs2_om := { omit, - }; | |
1183 | if ( isbound(vs2_om) ) { setverdict(pass); } else { setverdict(fail); }; | |
1184 | vs2_om.x2 := 33.0; | |
1185 | if ( isbound(vs2_om) ) { setverdict(pass); } else { setverdict(fail); }; | |
1186 | } | |
1187 | ||
1188 | type set AllRec { | |
1189 | recordOper_myrec8 r1, | |
1190 | recordOper_myrec8 r2 optional | |
1191 | } | |
1192 | template recordOper_myrec8 t_MyRec := { f1 := *, f2 := * }; | |
1193 | const recordOper_myrec8 c1_MyRec := { f1 := 5, f2 := omit }; | |
1194 | const recordOper_myrec8 c2_MyRec := { f1 := omit, f2 := "omit" }; | |
1195 | const AllRec c_AllRec := { r1 := c1_MyRec, r2 := c2_MyRec } | |
1196 | // This function is called from testcase recordIsvalue2 | |
1197 | function f_isvalue_record(in recordOper_myrec8 p1_MyRec, in recordOper_myrec8 p2_MyRec, in AllRec p_AllRec, in template recordOper_myrec8 pt_MyRec) runs on recordOper_mycomp | |
1198 | { | |
1199 | var recordOper_myrec8 v1_MyRec; | |
1200 | var recordOper_myrec8 v2_MyRec; | |
1201 | var template recordOper_myrec8 vt_MyRec; | |
1202 | var AllRec v_AllRec; | |
1203 | template integer ti := 5 ifpresent; | |
1204 | template recordOper_myrec8 rrr1 := { 11, "true" } | |
1205 | template recordOper_myrec8 rrr2 := { 11, "true" } ifpresent; | |
1206 | template recordOper_myrec8 rrr3 := { 11, "true" ifpresent} | |
1207 | ||
1208 | if ( isvalue(v1_MyRec) ) { setverdict(fail); } else { setverdict(pass); }; | |
1209 | if ( isvalue(vt_MyRec) ) { setverdict(fail); } else { setverdict(pass); }; | |
1210 | if ( isvalue(v_AllRec) ) { setverdict(fail); } else { setverdict(pass); }; | |
1211 | if ( isvalue(v_AllRec.r1) ) { setverdict(fail); } else { setverdict(pass); }; | |
1212 | if ( isvalue(v_AllRec.r2) ) { setverdict(fail); } else { setverdict(pass); }; | |
1213 | ||
1214 | v1_MyRec := c1_MyRec; | |
1215 | v_AllRec := { r1 := c1_MyRec, r2 := c2_MyRec }; | |
1216 | ||
1217 | if ( isvalue(v1_MyRec) ) {setverdict(pass); } else { setverdict(fail); }; | |
1218 | if ( isvalue(v_AllRec.r1) ) { setverdict(pass); } else { setverdict(fail); }; | |
1219 | if ( isvalue(c1_MyRec) ) { setverdict(pass); } else { setverdict(fail); }; | |
1220 | if ( isvalue(c_AllRec.r1) ) { setverdict(pass); } else { setverdict(fail); }; | |
1221 | if ( isvalue(p1_MyRec) ) { setverdict(pass); } else { setverdict(fail); }; | |
1222 | if ( isvalue(p_AllRec.r1) ) { setverdict(pass); } else { setverdict(fail); }; | |
1223 | ||
1224 | if ( isvalue(v1_MyRec .f1) ) { setverdict(pass); } else { setverdict(fail); }; | |
1225 | if ( isvalue(v_AllRec.r1.f1) ) { setverdict(pass); } else { setverdict(fail); }; | |
1226 | if ( isvalue(c1_MyRec .f1) ) { setverdict(pass); } else { setverdict(fail); }; | |
1227 | if ( isvalue(c_AllRec.r1.f1) ) { setverdict(pass); } else { setverdict(fail); }; | |
1228 | if ( isvalue(p1_MyRec .f1) ) { setverdict(pass); } else { setverdict(fail); }; | |
1229 | if ( isvalue(p_AllRec.r1.f1) ) { setverdict(pass); } else { setverdict(fail); }; | |
1230 | ||
1231 | if ( isvalue(v1_MyRec .f2) ) { setverdict(fail); } else { setverdict(pass); }; | |
1232 | if ( isvalue(v_AllRec.r1.f2) ) { setverdict(fail); } else { setverdict(pass); }; | |
1233 | if ( isvalue(c1_MyRec .f2) ) { setverdict(fail); } else { setverdict(pass); }; | |
1234 | if ( isvalue(c_AllRec.r1.f2) ) { setverdict(fail); } else { setverdict(pass); }; | |
1235 | if ( isvalue(p1_MyRec .f2) ) { setverdict(fail); } else { setverdict(pass); }; | |
1236 | if ( isvalue(p_AllRec.r1.f2) ) { setverdict(fail); } else { setverdict(pass); }; | |
1237 | ||
1238 | v2_MyRec := c2_MyRec; //{ f1 := omit, f2 := "omit" }; | |
1239 | ||
1240 | if ( isvalue(v2_MyRec) ) { setverdict(pass); } else { setverdict(fail); }; | |
1241 | if ( isvalue(v_AllRec.r2) ) { setverdict(pass); } else { setverdict(fail); }; | |
1242 | if ( isvalue(c2_MyRec) ) { setverdict(pass); } else { setverdict(fail); }; | |
1243 | if ( isvalue(c_AllRec.r2) ) { setverdict(pass); } else { setverdict(fail); }; | |
1244 | if ( isvalue(p2_MyRec) ) { setverdict(pass); } else { setverdict(fail); }; | |
1245 | if ( isvalue(p_AllRec.r2) ) { setverdict(pass); } else { setverdict(fail); }; | |
1246 | ||
1247 | if ( isvalue(v2_MyRec .f1) ) { setverdict(fail); } else { setverdict(pass); }; | |
1248 | if ( isvalue(v_AllRec.r2.f1) ) { setverdict(fail); } else { setverdict(pass); }; | |
1249 | if ( isvalue(p2_MyRec .f1) ) { setverdict(fail); } else { setverdict(pass); }; | |
1250 | if ( isvalue(p_AllRec.r2.f1) ) { setverdict(fail); } else { setverdict(pass); }; | |
1251 | if ( isvalue(c2_MyRec .f1) ) { setverdict(fail); } else { setverdict(pass); }; | |
1252 | if ( isvalue(c_AllRec.r2.f1) ) { setverdict(fail); } else { setverdict(pass); }; | |
1253 | if ( isvalue(v2_MyRec .f2) ) { setverdict(pass); } else { setverdict(fail); }; | |
1254 | if ( isvalue(v_AllRec.r2.f2) ) { setverdict(pass); } else { setverdict(fail); }; | |
1255 | if ( isvalue(p2_MyRec .f2) ) { setverdict(pass); } else { setverdict(fail); }; | |
1256 | if ( isvalue(p_AllRec.r2.f2) ) { setverdict(pass); } else { setverdict(fail); }; | |
1257 | if ( isvalue(c2_MyRec .f2) ) { setverdict(pass); } else { setverdict(fail); }; | |
1258 | if ( isvalue(c_AllRec.r2.f2) ) { setverdict(pass); } else { setverdict(fail); }; | |
1259 | ||
1260 | v1_MyRec := { f1 := omit, f2 := omit }; | |
1261 | ||
1262 | if ( isvalue(v1_MyRec) ) { setverdict(pass); } else { setverdict(fail); }; | |
1263 | if ( isvalue(v1_MyRec.f1) ) { setverdict(fail); } else { setverdict(pass); }; | |
1264 | if ( isvalue(v1_MyRec.f2) ) { setverdict(fail); } else { setverdict(pass); }; | |
1265 | // can't modify c1_MyRec or p1_MyRec | |
1266 | ||
1267 | /************** templates ***************/ | |
1268 | ||
1269 | vt_MyRec := { f1 := 5, f2 := omit }; | |
1270 | ||
1271 | if ( isvalue(vt_MyRec) ) { setverdict(pass); } else { setverdict(fail); }; | |
1272 | if ( isvalue(vt_MyRec.f1) ) { setverdict(pass); } else { setverdict(fail); }; | |
1273 | if ( isvalue(vt_MyRec.f2) ) { setverdict(fail); } else { setverdict(pass); }; | |
1274 | ||
1275 | vt_MyRec := { f1 := omit, f2 := "five" }; | |
1276 | ||
1277 | if ( isvalue(vt_MyRec) ) { setverdict(pass); } else { setverdict(fail); }; | |
1278 | if ( isvalue(vt_MyRec.f1) ) { setverdict(fail); } else { setverdict(pass); }; | |
1279 | if ( isvalue(vt_MyRec.f2) ) { setverdict(pass); } else { setverdict(fail); }; | |
1280 | ||
1281 | vt_MyRec := { f1 := ?, f2 := "5" }; | |
1282 | ||
1283 | if ( isvalue(vt_MyRec) ) { setverdict(fail); } else { setverdict(pass); }; | |
1284 | if ( isvalue(vt_MyRec.f1) ) { setverdict(fail); } else { setverdict(pass); }; | |
1285 | if ( isvalue(vt_MyRec.f2) ) { setverdict(pass); } else { setverdict(fail); }; | |
1286 | ||
1287 | vt_MyRec := { f1 := 5, f2 := * }; | |
1288 | ||
1289 | if ( isvalue(vt_MyRec) ) { setverdict(fail); } else { setverdict(pass); }; | |
1290 | if ( isvalue(vt_MyRec.f1) ) { setverdict(pass); } else { setverdict(fail); }; | |
1291 | if ( isvalue(vt_MyRec.f2) ) { setverdict(fail); } else { setverdict(pass); }; | |
1292 | ||
1293 | vt_MyRec := { f1 := ?, f2 := * }; | |
1294 | ||
1295 | if ( isvalue(vt_MyRec) ) { setverdict(fail); } else { setverdict(pass); }; | |
1296 | if ( isvalue(vt_MyRec.f1) ) { setverdict(fail); } else { setverdict(pass); }; | |
1297 | if ( isvalue(vt_MyRec.f2) ) { setverdict(fail); } else { setverdict(pass); }; | |
1298 | ||
1299 | if ( isvalue(pt_MyRec) ) { setverdict(pass); } else { setverdict(fail); }; // the fields are omit, but the record is bound | |
1300 | if ( isvalue(pt_MyRec.f1) ) { setverdict(fail); } else { setverdict(pass); }; | |
1301 | if ( isvalue(pt_MyRec.f2) ) { setverdict(fail); } else { setverdict(pass); }; | |
1302 | ||
1303 | //so here it is expanded instead | |
1304 | if ( isvalue(modifies vt_MyRec := { f1:=1, f2:="2" }) ) { setverdict(pass); } else {setverdict(fail, modifies vt_MyRec := { f1:=1, f2:="2" }, " should be bound"); }; | |
1305 | ||
1306 | if ( isvalue(t_MyRec) ) { setverdict(fail); } else { setverdict(pass); }; | |
1307 | ||
1308 | //testing ifpresent | |
1309 | if ( isvalue(ti) ) { setverdict(fail); } else { setverdict(pass); }; | |
1310 | if ( isvalue(rrr1) ) { setverdict(pass); } else { setverdict(fail); }; | |
1311 | if ( isvalue(rrr2) ) { setverdict(fail); } else { setverdict(pass); }; | |
1312 | if ( isvalue(rrr3) ) { setverdict(fail); } else { setverdict(pass); }; | |
1313 | } | |
1314 | ||
1315 | testcase recordIsvalue2() runs on recordOper_mycomp | |
1316 | { | |
1317 | var recordOper_myrec8 x1_MyRec := { f1 := 5, f2 := omit }; | |
1318 | var recordOper_myrec8 x2_MyRec := { f1 := omit, f2 := "omit" }; | |
1319 | var template recordOper_myrec8 xt_MyRec := { f1 := omit, f2 := omit }; | |
1320 | var AllRec x_AllRec := { r1 := x1_MyRec, r2 := x2_MyRec } | |
1321 | f_isvalue_record(x1_MyRec, x2_MyRec, x_AllRec, xt_MyRec) ; | |
1322 | } | |
1323 | ||
1324 | type record of integer IntegerList | |
1325 | type record Ctx{ | |
1326 | IntegerList appData | |
1327 | } | |
1328 | ||
1329 | testcase CR_TR00016681() runs on recordOper_mycomp | |
1330 | { | |
1331 | var Ctx vu; | |
1332 | // appData field: Unbound record of | |
1333 | // isvalue:false, isbound:false | |
1334 | if (isvalue(vu.appData)) { setverdict(fail); } else { setverdict(pass); } | |
1335 | if (isbound(vu.appData)) { setverdict(fail); } else { setverdict(pass); } | |
1336 | //lengthof(v1.appData) -> Dynamic Testcase Error | |
1337 | ||
1338 | // The enclosing record: isbound === isvalue | |
1339 | if (isvalue(vu)) { setverdict (fail); } else { setverdict(pass); } | |
1340 | if (isbound(vu)) { setverdict (fail); } else { setverdict(pass); } | |
1341 | ||
1342 | var Ctx v0 := {{}} | |
1343 | // appData field: 0-length record of | |
1344 | // isvalue: true, isbound:true | |
1345 | if (not isvalue(v0.appData)) { setverdict (fail); } | |
1346 | if (isbound(v0.appData)) { setverdict (pass); } | |
1347 | else { setverdict(fail); } | |
1348 | ||
1349 | // The enclosing record: isbound === isvalue | |
1350 | if (isvalue(v0)) { setverdict (pass); } else { setverdict(fail); } | |
1351 | if (isbound(v0)) { setverdict (pass); } else { setverdict(fail); } | |
1352 | ||
1353 | if (lengthof(v0.appData) == 0) { setverdict(pass); } | |
1354 | else { setverdict(fail); } | |
1355 | ||
1356 | // appData field: 3-length with gaps | |
1357 | // isvalue: false, isbound:true | |
1358 | var Ctx v3 := { appData := { 1, -, 2 } } | |
1359 | if (isvalue(v3.appData)) { setverdict (fail); } | |
1360 | if (isbound(v3.appData)) { setverdict (pass); } | |
1361 | else { setverdict(fail); } | |
1362 | ||
1363 | if (lengthof(v3.appData) == 3) { setverdict(pass); } | |
1364 | else { setverdict(fail); } | |
1365 | ||
1366 | var integer i; | |
1367 | if (isbound(i)) { setverdict (fail); } else { setverdict(pass); } | |
1368 | if (isvalue(i)) { setverdict (fail); } else { setverdict(pass); } | |
1369 | i := 42; | |
1370 | if (isvalue(i)) { setverdict (pass); } else { setverdict(fail); } | |
1371 | if (isbound(i)) { setverdict (pass); } else { setverdict(fail); } | |
1372 | } | |
1373 | ||
1374 | const MyRec2 c_myrec2_part:={ | |
1375 | roc:={}, | |
1376 | roi:={10,9,8}, | |
1377 | u:={ r:={ /*i:=1,*/ x:=1.0, c:="one"}}, | |
1378 | r:={ i:=1, x:=1.0, c:="one"} | |
1379 | } | |
1380 | ||
1381 | const MyRec2 c_myrec2_1:={ | |
1382 | roc:=omit, | |
1383 | roi:={}, | |
1384 | u:={r:={ i:=1, x:=1.0, c:="one"}}, | |
1385 | r:={ i:=1, x:=1.0, c:="one"} | |
1386 | } | |
1387 | ||
1388 | type record MyRec2{ | |
1389 | ROC roc optional, | |
1390 | ROI roi optional, | |
1391 | MyUnion1 u optional, | |
1392 | MyRecord1 r optional | |
1393 | } | |
1394 | ||
1395 | type record of charstring ROC; | |
1396 | type record of integer ROI; | |
1397 | type record MyRecord1 { | |
1398 | integer i optional, | |
1399 | float x optional, | |
1400 | charstring c | |
1401 | } | |
1402 | ||
1403 | type union MyUnion1 { | |
1404 | ROC roc, | |
1405 | integer i, | |
1406 | ROI roi, | |
1407 | MyRecord1 r | |
1408 | } | |
1409 | ||
1410 | testcase tc_record_completlyInit() runs on recordOper_mycomp { | |
1411 | var MyRec2 vl_r1:=c_myrec2_1; | |
1412 | if(isbound(vl_r1)){setverdict(pass)}else {setverdict(fail)}; | |
1413 | var MyRec2 vl_r2:=c_myrec2_part; | |
1414 | if(isbound(vl_r2)){setverdict(pass)}else {setverdict(fail)}; | |
1415 | var MyRec2 vl_r3:=c_myrec2_part; | |
1416 | if(isbound(vl_r3)){setverdict(pass)}else {setverdict(fail)}; | |
1417 | var MyRec2 vl_r4:=c_myrec2_part; | |
1418 | if(isbound(vl_r4.roc)){setverdict(pass)}else {setverdict(fail)}; | |
1419 | var MyRec2 vl_r5:=c_myrec2_part; | |
1420 | if(isbound(vl_r5.roi)){setverdict(pass)}else {setverdict(fail)}; | |
1421 | var MyRec2 vl_r6:=c_myrec2_part; | |
1422 | if(isbound(vl_r6.u)){setverdict(pass)}else {setverdict(fail)}; | |
1423 | var MyRec2 vl_r7:=c_myrec2_part; | |
1424 | if(isbound(vl_r7.u.r)){setverdict(pass)}else {setverdict(fail)}; | |
1425 | var MyRec2 vl_r8:=c_myrec2_part; | |
1426 | if(isbound(vl_r8.u.r.i)){setverdict(fail)}else {setverdict(pass)}; | |
1427 | var MyRec2 vl_r9:=c_myrec2_part; | |
1428 | if(isbound(vl_r9.u.r.x)){setverdict(pass)}else {setverdict(fail)}; | |
1429 | var MyRec2 vl_r10:=c_myrec2_part; | |
1430 | if(isbound(vl_r10.u.r.c)){setverdict(pass)}else {setverdict(fail)}; | |
1431 | var MyRec2 vl_r11:=c_myrec2_part; | |
1432 | if(isbound(vl_r11.u.i)){setverdict(fail)}else {setverdict(pass)}; | |
1433 | } | |
1434 | ||
1435 | testcase tc_record_partiallyInit12() runs on recordOper_mycomp { | |
1436 | var MyRec2 vl_r:={ r:={i:=5}} | |
1437 | if(isbound(vl_r.r)){setverdict(pass)}else {setverdict(fail)}; | |
1438 | if(isbound(vl_r.r.i)){setverdict(pass)}else {setverdict(fail)}; | |
1439 | } | |
1440 | ||
1441 | testcase tc_record_partiallyInit13() runs on recordOper_mycomp { | |
1442 | var MyRec2 vl_r:={ r:={i:=5,x:=-,c:= -}} | |
1443 | if(isbound(vl_r)){setverdict(pass)}else {setverdict(fail)}; | |
1444 | if(isbound(vl_r.r)){setverdict(pass)}else {setverdict(fail)}; | |
1445 | if(isbound(vl_r.r.i)){setverdict(pass)}else {setverdict(fail)}; | |
1446 | } | |
1447 | ||
1448 | testcase tc_record_unbound() runs on recordOper_mycomp { | |
1449 | var template MyRec2 vtl_rec2; | |
1450 | if(ispresent(vtl_rec2)) {setverdict(fail)}else {setverdict(pass)}; | |
1451 | } | |
1452 | ||
1453 | testcase tc_record_completlyInit_ispresent() runs on recordOper_mycomp { | |
1454 | var MyRec2 vl_r1:=c_myrec2_1; | |
1455 | if(ispresent(vl_r1)){setverdict(pass)}else {setverdict(fail)}; | |
1456 | var MyRec2 vl_r2:=c_myrec2_part; | |
1457 | if(ispresent(vl_r2)){setverdict(pass)}else {setverdict(fail)}; | |
1458 | var MyRec2 vl_r3:=c_myrec2_part; | |
1459 | if(ispresent(vl_r3.roc)){setverdict(pass)}else {setverdict(fail)}; | |
1460 | var MyRec2 vl_r4:=c_myrec2_part; | |
1461 | if(ispresent(vl_r4.roi)){setverdict(pass)}else {setverdict(fail)}; | |
1462 | var MyRec2 vl_r5:=c_myrec2_part; | |
1463 | if(ispresent(vl_r5.u)){setverdict(pass)}else {setverdict(fail)}; | |
1464 | var MyRec2 vl_r6:=c_myrec2_part; | |
1465 | if(ispresent(vl_r6.u.r)){setverdict(pass)}else {setverdict(fail)}; | |
1466 | var MyRec2 vl_r7:=c_myrec2_part; | |
1467 | if(ispresent(vl_r7.u.r.i)){setverdict(fail)}else {setverdict(pass)}; | |
1468 | var MyRec2 vl_r8:=c_myrec2_part; | |
1469 | if(ispresent(vl_r8.u.r.x)){setverdict(pass)}else {setverdict(fail)}; | |
1470 | var MyRec2 vl_r9:=c_myrec2_part; | |
1471 | if(ispresent(vl_r9.u.r.c)){setverdict(pass)}else {setverdict(fail)}; | |
1472 | var MyRec2 vl_r10:=c_myrec2_part; | |
1473 | if(ispresent(vl_r10.u.i)){setverdict(fail)}else {setverdict(pass)}; | |
1474 | } | |
1475 | ||
1476 | testcase tc_record_partiallyInit12_ispresent() runs on recordOper_mycomp { | |
1477 | var MyRec2 vl_r:={ r:={i:=5}} | |
1478 | if(ispresent(vl_r.r)){setverdict(pass)}else {setverdict(fail)}; | |
1479 | if(ispresent(vl_r.r.i)){setverdict(pass)}else {setverdict(fail)}; | |
1480 | } | |
1481 | ||
1482 | testcase tc_record_partiallyInit13_ispresent() runs on recordOper_mycomp { | |
1483 | var MyRec2 vl_r:={ r:={i:=5,x:=-,c:= -}} | |
1484 | if(ispresent(vl_r)){setverdict(pass)}else {setverdict(fail)}; | |
1485 | if(ispresent(vl_r.r)){setverdict(pass)}else {setverdict(fail)}; | |
1486 | if(ispresent(vl_r.r.i)){setverdict(pass)}else {setverdict(fail)}; | |
1487 | } | |
1488 | ||
1489 | testcase tc_record_omit() runs on recordOper_mycomp { | |
1490 | var MyRec2 vl_r:={omit, omit, omit, omit} | |
1491 | if(ispresent(vl_r)){setverdict(pass)}else {setverdict(fail)}; | |
1492 | if(ispresent(vl_r.roc)){setverdict(fail)}else {setverdict(pass)}; | |
1493 | if(ispresent(vl_r.roi)){setverdict(fail)}else {setverdict(pass)}; | |
1494 | if(ispresent(vl_r.u)){setverdict(fail)}else {setverdict(pass)}; | |
1495 | if(ispresent(vl_r.u.r)){setverdict(fail)}else {setverdict(pass)}; | |
1496 | if(ispresent(vl_r.u.r.i)){setverdict(fail)}else {setverdict(pass)}; | |
1497 | if(ispresent(vl_r.u.r.x)){setverdict(fail)}else {setverdict(pass)}; | |
1498 | if(ispresent(vl_r.u.r.c)){setverdict(fail)}else {setverdict(pass)}; | |
1499 | if(ispresent(vl_r.r)){setverdict(fail)}else {setverdict(pass)}; | |
1500 | if(ispresent(vl_r.r.i)){setverdict(fail)}else {setverdict(pass)}; | |
1501 | if(ispresent(vl_r.r.x)){setverdict(fail)}else {setverdict(pass)}; | |
1502 | if(ispresent(vl_r.r.c)){setverdict(fail)}else {setverdict(pass)}; | |
1503 | } | |
1504 | ||
1505 | testcase tc_record_omit2() runs on recordOper_mycomp { | |
1506 | var MyRec2 vl_r:={roc:=omit, roi:=omit,u:= omit,r:= omit} | |
1507 | if(ispresent(vl_r)){setverdict(pass)}else {setverdict(fail)}; | |
1508 | if(ispresent(vl_r.roc)){setverdict(fail)}else {setverdict(pass)}; | |
1509 | if(ispresent(vl_r.roi)){setverdict(fail)}else {setverdict(pass)}; | |
1510 | if(ispresent(vl_r.u)){setverdict(fail)}else {setverdict(pass)}; | |
1511 | if(ispresent(vl_r.u.r)){setverdict(fail)}else {setverdict(pass)}; | |
1512 | if(ispresent(vl_r.u.r.i)){setverdict(fail)}else {setverdict(pass)}; | |
1513 | if(ispresent(vl_r.u.r.x)){setverdict(fail)}else {setverdict(pass)}; | |
1514 | if(ispresent(vl_r.u.r.c)){setverdict(fail)}else {setverdict(pass)}; | |
1515 | if(ispresent(vl_r.r)){setverdict(fail)}else {setverdict(pass)}; | |
1516 | if(ispresent(vl_r.r.i)){setverdict(fail)}else {setverdict(pass)}; | |
1517 | if(ispresent(vl_r.r.x)){setverdict(fail)}else {setverdict(pass)}; | |
1518 | if(ispresent(vl_r.r.c)){setverdict(fail)}else {setverdict(pass)}; | |
1519 | } | |
1520 | ||
1521 | testcase tc_record_omit_HQ51693() runs on recordOper_mycomp { | |
1522 | var recordOper_myrec9 r1 := {omit, omit}; | |
1523 | r1.f1 := r1.f2; | |
1524 | if(ispresent(r1.f1) or ispresent(r1.f2)){setverdict(fail)}else {setverdict(pass)}; | |
1525 | } | |
1526 | ||
1527 | testcase tc_recordOf_omit() runs on recordOper_mycomp { | |
1528 | var MyRec2 vl_r:=c_myrec2_1; | |
1529 | if(ispresent(vl_r.roc)){setverdict(fail)}else {setverdict(pass)}; | |
1530 | if(ispresent(vl_r.roc[0])){setverdict(fail)}else {setverdict(pass)}; | |
1531 | if(ispresent(vl_r.roi)){setverdict(pass)}else {setverdict(fail)}; | |
1532 | if(ispresent(vl_r.roi[0])){setverdict(fail)}else {setverdict(pass)}; | |
1533 | if(ispresent(vl_r.roi[90])){setverdict(fail)}else {setverdict(pass)}; | |
1534 | } | |
970ed795 EL |
1535 | |
1536 | control { | |
1537 | const recordOper_trecord cl_temp1:={ x1:=omit, x2:=3.4 }; // can constants be declared in the control part | |
1538 | const recordOper_trecof cl_temp2:={ 'AF12'O }; | |
1539 | const recordOper_tset cl_temp3:={ x1:=234, x2:=1.9}; | |
1540 | const recordOper_tsetof cl_temp4:={"f","8"}; | |
1541 | const recordOper_tunion cl_temp5:={ x2:=1.3 }; | |
1542 | const typedefrecordComp_myrec cl_const14 := { // complex record | |
1543 | x1 := { x1:=omit, x2:=3.4 }, | |
1544 | x2 := { 'AF12'O }, | |
1545 | x3 := { x1:=234, x2:=1.9}, | |
1546 | x4 := {"f","8"}, | |
1547 | x5 := { x2:=1.3 }, | |
1548 | x6 := {1,2,3} | |
1549 | } | |
1550 | var recordOper_trecord vl_temp1; // can variables be declared in the control part | |
1551 | var recordOper_trecof vl_temp2; | |
1552 | var recordOper_tset vl_temp3; | |
1553 | var recordOper_tsetof vl_temp4; | |
1554 | var recordOper_tunion vl_temp5; | |
1555 | var typedefrecordComp_myrec vl_const14; | |
1556 | ||
1557 | execute(recordAssign()); | |
1558 | execute(recordAssignIncomplete()); | |
1559 | execute(recordAssignOpt()); | |
1560 | execute(recordAssignRec()); | |
1561 | execute(recordAssignRecof()); | |
1562 | execute(recordAssignSet()); | |
1563 | execute(recordAssignSetof()); | |
1564 | execute(recordAssignUnion()); | |
1565 | execute(recordAssignElem()); | |
1566 | execute(recordAssignElemOpt()); | |
1567 | execute(recordAssignElemRec()); | |
1568 | execute(recordAssignElemRecof()); | |
1569 | execute(recordAssignElemSet()); | |
1570 | execute(recordAssignElemSetof()); | |
1571 | execute(recordAssignElemUnion()); | |
1572 | execute(recordSizeof()); | |
1573 | execute(recordConst()); | |
1574 | execute(recordConstOpt()); | |
1575 | execute(recordConstRec()); | |
1576 | execute(recordConstRecof()); | |
1577 | execute(recordConstSet()); | |
1578 | execute(recordConstSetof()); | |
1579 | execute(recordConstUnion()); | |
1580 | execute(recordComp()); | |
1581 | execute(recordCompOpt()); | |
1582 | execute(recordCompOptField()); | |
1583 | execute(recordCompRec()); | |
1584 | execute(recordCompRecof()); | |
1585 | execute(recordCompSet()); | |
1586 | execute(recordCompSetof()); | |
1587 | execute(recordCompUnion()); | |
1588 | execute(recordSubtypes()); | |
1589 | execute(recordIsvalue()); | |
1590 | execute(recordIsbound()); | |
1591 | execute(recordIsvalue2()); | |
1592 | ||
1593 | execute(CR_TR00016681()); | |
1594 | ||
1595 | execute(tc_record_completlyInit()); | |
1596 | execute(tc_record_partiallyInit12()); | |
1597 | execute(tc_record_partiallyInit13()); | |
1598 | execute(tc_record_unbound()); | |
1599 | execute(tc_record_completlyInit_ispresent()); | |
1600 | execute(tc_record_partiallyInit12_ispresent()); | |
1601 | execute(tc_record_partiallyInit13_ispresent()); | |
1602 | execute(tc_record_omit()); | |
1603 | execute(tc_record_omit2()); | |
1604 | execute(tc_record_omit_HQ51693()); | |
1605 | execute(tc_recordOf_omit()); | |
970ed795 EL |
1606 | } |
1607 | } |