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 Testcases { | |
9 | ||
10 | import from Functions all; | |
11 | import from Types all; | |
12 | import from JsonData language "ASN.1" all; | |
13 | ||
14 | modulepar R tsp_r := { | |
15 | i:= 1, | |
16 | cs:="two", | |
17 | b:=true, | |
18 | d:=Monday | |
19 | }; | |
20 | ||
21 | modulepar charstring tsp_cs_long := "123456789123456789123456789 abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz ;""'\\/\n\r\t\f\b.,<>?|:][{}=-+!@#$%^&*()"; | |
22 | ||
23 | ||
24 | ||
25 | ||
26 | const octetstring c_BOM_UTF8 :='EFBBBF'O; | |
27 | ||
28 | const integer c_i :=18 | |
29 | ||
30 | const R c_r := { | |
31 | i:= 1, | |
32 | cs:="two", | |
33 | b:=true, | |
34 | d:= Monday | |
35 | }; | |
36 | ||
37 | const charstring qm := "\""; //quotation mark | |
38 | const octetstring qmo :='22'O; | |
39 | const octetstring commao := '2C'O; | |
40 | const universal charstring c_arvizturo := char(0,0,0,193)&"rv"&char(0,0,0,237)&"zt"&char(0,0,1,113)&"r"&char(0,0,1,81) & "t" & char(0,0,0,252)&"k"&char(0,0,0,246)&"rfr"&char(0,0,0,243)&"g"&char(0,0,0,233)&"p"; | |
41 | const charstring c_cs_long := "123456789123456789123456789 abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz ;" | |
42 | const charstring c_cs_escapes := "'\\/\n\r\t\f\b.,<>?|:][{}=-+!@#$%^&*()"; | |
43 | ||
44 | ||
45 | //========================================================================= | |
46 | // Testcases | |
47 | //========================================================================= | |
48 | ||
49 | testcase tc_integer_pos() runs on MTC{ | |
50 | var integer x1 := 18; | |
51 | f_check_encoding(encoded:= f_enc_int(x1), expected := '3138'O) | |
52 | f_bool2verdict(x1==f_dec_int(f_enc_int(x1))); | |
53 | } | |
54 | ||
55 | testcase tc_integer_0() runs on MTC{ | |
56 | var integer x1 := 0; | |
57 | f_check_encoding(encoded:= f_enc_int(x1), expected := '30'O) | |
58 | f_bool2verdict(x1==f_dec_int(f_enc_int(x1))); | |
59 | } | |
60 | ||
61 | testcase tc_integer_neg() runs on MTC{ | |
62 | var integer x := -917805; | |
63 | ||
64 | f_check_encoding(encoded:= f_enc_int(x), expected := char2oct(int2str(x))) ; | |
65 | f_bool2verdict(x==f_dec_int(f_enc_int(x))); | |
66 | } | |
67 | ||
68 | testcase tc_integer_bigpos() runs on MTC{ | |
69 | var integer x1 := 123456789123456789123456789; | |
70 | f_check_encoding(encoded:= f_enc_int(x1), expected := '313233343536373839313233343536373839313233343536373839'O) | |
71 | f_bool2verdict(x1==f_dec_int(f_enc_int(x1))); | |
72 | } | |
73 | ||
74 | testcase tc_integer_expression1() runs on MTC{ | |
75 | var integer x := 2; | |
76 | var octetstring os:= f_enc_int( 6*x ) | |
77 | f_check_encoding(encoded:= os, expected := '3132'O) | |
78 | f_bool2verdict(12==f_dec_int(os)); | |
79 | } | |
80 | ||
81 | testcase tc_integer_const() runs on MTC{ | |
82 | ||
83 | var octetstring os:= f_enc_int( c_i ) | |
84 | f_check_encoding(encoded:= os, expected := '3138'O) | |
85 | f_bool2verdict(c_i==f_dec_int(os)); | |
86 | } | |
87 | ||
88 | testcase tc_integer_imported() runs on MTC{ | |
89 | var octetstring os:= f_enc_int( c_imported_i ) | |
90 | f_check_encoding(encoded:= os, expected := '3131'O) | |
91 | f_bool2verdict(c_imported_i==f_dec_int(os)); | |
92 | } | |
93 | ||
94 | testcase tc_boolean_true() runs on MTC{ | |
95 | var boolean x := true; | |
96 | var octetstring os:= f_enc_bool( x ) | |
97 | f_check_encoding(encoded:= os, expected := char2oct("true")); | |
98 | f_bool2verdict(x==f_dec_bool(os)); | |
99 | } | |
100 | ||
101 | testcase tc_boolean_false() runs on MTC{ | |
102 | var boolean x := false; | |
103 | var octetstring os:= f_enc_bool( x ) | |
104 | f_check_encoding(encoded:= os, expected := char2oct("false")); | |
105 | f_bool2verdict(x==f_dec_bool(os)); | |
106 | } | |
107 | ||
108 | testcase tc_charstring_ascii_basic() runs on MTC{ | |
109 | var charstring cs := "everything or nothing" | |
110 | var octetstring os:= f_enc_cs( cs ) | |
111 | f_check_encoding(encoded:= os, expected := char2oct(qm & cs & qm)); | |
112 | f_bool2verdict(cs==f_dec_cs(os)); | |
113 | } | |
114 | ||
115 | testcase tc_charstring_ascii_basic_long() runs on MTC{ | |
116 | var charstring cs := c_cs_long; | |
117 | var octetstring os:= f_enc_cs( cs ) | |
118 | f_check_encoding(encoded:= os, expected := char2oct(qm & cs & qm)); | |
119 | f_bool2verdict(cs==f_dec_cs(os)); | |
120 | } | |
121 | ||
122 | testcase tc_charstring_ascii_basic_long_const() runs on MTC{ | |
123 | var charstring cs := c_cs_long; | |
124 | var octetstring os:= f_enc_cs( c_cs_long ) | |
125 | f_check_encoding(encoded:= os, expected := char2oct(qm & cs & qm)); | |
126 | f_bool2verdict( cs ==f_dec_cs(os)); | |
127 | } | |
128 | ||
129 | testcase tc_charstring_ascii_basic_punctuation() runs on MTC{ | |
130 | var charstring cs := ".,<>?|:][{}=-+!@#$%^&*()"; | |
131 | var octetstring os:= f_enc_cs( cs ) | |
132 | f_check_encoding(encoded:= os, expected := char2oct(qm & cs & qm)); | |
133 | f_bool2verdict(cs ==f_dec_cs(os)); | |
134 | } | |
135 | ||
136 | ||
137 | testcase tc_charstring_ascii_basic_escapes() runs on MTC{ | |
138 | var RoCS cs := { | |
139 | "\\","/","\n", | |
140 | "\r","\t","\f","\b" | |
141 | }; | |
142 | var RoOS os_expected := { | |
143 | '225C5C22'O, '222F22'O,'225C6E22'O, | |
144 | '225C7222'O,'225C7422'O,'225C6622'O, '225C6222'O | |
145 | }; | |
146 | var integer len:=lengthof(cs); | |
147 | ||
148 | for(var integer i:=0;i<len;i:=i+1) { | |
149 | var octetstring os:= f_enc_cs( cs[i] ) | |
150 | f_check_encoding(encoded:= os, expected := os_expected[i]); | |
151 | f_bool2verdict(cs[i] ==f_dec_cs(os_expected[i])); | |
152 | } | |
153 | } | |
154 | ||
155 | testcase tc_charstring_ascii_extended1() runs on MTC{ | |
156 | var charstring cs := "Vire au Vert l"&char(0,0,0,224)&"!"; | |
157 | var octetstring os:= f_enc_cs( cs ) | |
158 | f_check_encoding(encoded:= os, expected := char2oct(qm & cs & qm)); | |
159 | @try{ | |
160 | f_bool2verdict(cs==f_dec_cs(os)); | |
161 | setverdict(fail,"error expected") | |
162 | } | |
163 | @catch(err_msg) { | |
164 | setverdict(pass,"expected error, ok") | |
165 | } | |
166 | ||
167 | } | |
168 | ||
169 | testcase tc_ucharstring_ascii_extended1_xer() runs on MTC{ | |
170 | var universal charstring ucs := "Vire au Vert l" & char(0,0,0,224)&"!"; | |
171 | var octetstring os:= f_enc_ucs_x( ucs ) | |
172 | log( "Octetstring:" , os); | |
173 | ||
174 | @try{ | |
175 | f_bool2verdict(ucs==f_dec_ucs_x(os)); | |
176 | setverdict(pass,ucs," == ", f_dec_ucs_x(os) ); | |
177 | } | |
178 | @catch(err_msg) { | |
179 | setverdict(fail,"unexpected error, nok") | |
180 | } | |
181 | } | |
182 | ||
183 | ||
184 | ||
185 | //========== Universal Charstring ================= | |
186 | ||
187 | ||
188 | ||
189 | testcase tc_ucharstring_ascii_basic_long() runs on MTC{ | |
190 | var universal charstring ucs := c_cs_long; | |
191 | var octetstring os:= f_enc_ucs( ucs ) | |
192 | f_check_encoding(encoded:= os, expected := remove_bom(unichar2oct( qm & ucs & qm, "UTF-8"))); | |
193 | f_bool2verdict(ucs==f_dec_ucs(os)); | |
194 | } | |
195 | ||
196 | testcase tc_ucharstring_ascii_basic_escapes() runs on MTC{ | |
197 | var RoUCS cs := { | |
198 | "\\","/","\n", | |
199 | "\r","\t","\f","\b" | |
200 | }; | |
201 | var RoOS os_expected := { | |
202 | '225C5C22'O, '222F22'O,'225C6E22'O, | |
203 | '225C7222'O,'225C7422'O,'225C6622'O, '225C6222'O | |
204 | }; | |
205 | var integer len:=lengthof(cs); | |
206 | ||
207 | for(var integer i:=0;i<len;i:=i+1) { | |
208 | var octetstring os:= f_enc_ucs( cs[i] ) | |
209 | f_check_encoding(encoded:= os, expected := os_expected[i]); | |
210 | f_bool2verdict(cs[i] ==f_dec_ucs(os_expected[i])); | |
211 | } | |
212 | } | |
213 | ||
214 | testcase tc_ucharstring_ascii_extended1() runs on MTC{ | |
215 | var universal charstring ucs := "Vire au Vert l" & char(0,0,0,224)&"!"; | |
216 | var octetstring os:= f_enc_ucs( ucs ) | |
217 | f_check_encoding(encoded:= os, expected := remove_bom(unichar2oct( qm & ucs & qm, "UTF-8"))); | |
218 | f_bool2verdict(ucs==f_dec_ucs(os)); | |
219 | } | |
220 | ||
221 | testcase tc_ucharstring_ascii_extended2() runs on MTC{ | |
222 | //var universal charstring ucs := "Árvíztűrő tükörfúrógép";' | |
223 | var universal charstring ucs :="Ár"; | |
224 | var octetstring os:= f_enc_ucs( ucs ) | |
225 | f_check_encoding(encoded:= os, expected := remove_bom(unichar2oct( qm & ucs & qm, "UTF-8"))); | |
226 | f_bool2verdict(ucs==f_dec_ucs(os)); | |
227 | } | |
228 | ||
229 | testcase tc_ucharstring_ascii_extended3() runs on MTC{ | |
230 | var universal charstring ucs := c_arvizturo; | |
231 | log("ucs:",ucs); | |
232 | var octetstring os:= f_enc_ucs( ucs ) | |
233 | f_check_encoding(encoded:= os, expected := remove_bom(unichar2oct( qm & ucs & qm, "UTF-8"))); | |
234 | f_bool2verdict(ucs==f_dec_ucs(os)); | |
235 | } | |
236 | ||
237 | testcase tc_ucharstring_higherplanes() runs on MTC{ | |
238 | var RoUCS us := { | |
239 | char(0,1,0,0) & char(0,1,0,175) & char(0,1,255,255), | |
240 | char(0,2,0,0) & char(0,2,0,175) & char(0,2,255,255), | |
241 | char(0,3,0,0) & char(0,3,0,175) & char(0,3,255,255), | |
242 | char(0,15,0,0)& char(0,15,0,175)& char(0,15,255,255), | |
243 | char(0,16,0,0)& char(0,16,0,175)& char(0,16,255,255), | |
244 | char(0,16,0,0) & char(0,0,0,1) & " " | |
245 | }; | |
246 | var octetstring os; | |
247 | var integer len:=lengthof(us); | |
248 | ||
249 | for(var integer i:=0;i<len;i:=i+1) { | |
250 | os:= f_enc_ucs( us[i] ); | |
251 | f_check_encoding(encoded:= os, expected := remove_bom(unichar2oct( qm & us[i] & qm, "UTF-8"))); | |
252 | f_bool2verdict(us[i]==f_dec_ucs(os)); | |
253 | } | |
254 | } | |
255 | ||
256 | //========= Octetstring =================== | |
257 | ||
258 | testcase tc_octetstring() runs on MTC{ | |
259 | var octetstring o := '51AD7F32112CC89D'O; | |
260 | var octetstring os:= f_enc_os( o ) | |
261 | f_check_encoding(encoded:= os, expected := '223531414437463332313132434338394422'O); | |
262 | f_check_encoding(encoded:= os, expected := qmo & char2oct(oct2str(o)) & qmo); | |
263 | f_bool2verdict(o == f_dec_os(os)); | |
264 | } | |
265 | ||
266 | ||
267 | //========= Hexstring =================== | |
268 | ||
269 | testcase tc_hexstring() runs on MTC{ | |
270 | var hexstring h := '51AD7F32112CC89D1778DE213A345BA'H; | |
271 | log(hex2str(h)); | |
272 | var octetstring os:= f_enc_hex( h ); | |
273 | ||
274 | f_check_encoding(encoded:= os, expected := '223531414437463332313132434338394431373738444532313341333435424122'O); | |
275 | f_check_encoding(encoded:= os, expected := qmo & char2oct(hex2str(h)) & qmo); | |
276 | f_bool2verdict(h == f_dec_hex(os)); | |
277 | } | |
278 | ||
279 | ||
280 | //========= Bitstring =================== | |
281 | testcase tc_bitstring() runs on MTC{ | |
282 | var bitstring bs := '1101001101111011'B; | |
283 | var octetstring os:= f_enc_bit(bs); | |
284 | f_check_encoding(encoded:= os, expected := qmo & char2oct(bit2str(bs)) & qmo); | |
285 | f_bool2verdict(bs == f_dec_bit(os)); | |
286 | } | |
287 | ||
288 | //========= Verdicttype =================== | |
289 | testcase tc_verdicttype() runs on MTC{ | |
290 | var RoV vt := { none, inconc, pass, fail, error}; | |
291 | var RoCS cs :={"none","inconc","pass", "fail", "error"} | |
292 | //var verdicttype vt := inconc; | |
293 | var octetstring os; | |
294 | var integer len :=lengthof(vt) | |
295 | for(var integer i:=0;i<len;i:=i+1) { | |
296 | os:= f_enc_vt(vt[i]); | |
297 | f_check_encoding(encoded:= os, expected := qmo & char2oct(cs[i]) & qmo); | |
298 | f_bool2verdict(vt[i] == f_dec_vt(f_enc_vt(vt[i]))); | |
299 | } | |
300 | ||
301 | } | |
302 | ||
303 | //========= Float =================== | |
304 | testcase tc_float() runs on MTC{ | |
305 | var RoF f := { 58.1165, 19.6695e16, not_a_number, infinity, -infinity }; | |
306 | var RoCS cs := {"58.116500","1.966950e+17","\"not_a_number\"", "\"infinity\"", "\"-infinity\""} | |
307 | var octetstring os; | |
308 | var integer len :=lengthof(f) | |
309 | ||
310 | for(var integer i:=0;i<len;i:=i+1) { | |
311 | os:= f_enc_f(f[i]); | |
312 | f_check_encoding(encoded:= os, expected := char2oct(cs[i]) ); | |
313 | log(f_dec_f(f_enc_f(f[i]))) | |
314 | f_bool2verdict( f[i] == f_dec_f(f_enc_f(f[i])) ) ; | |
315 | } | |
316 | ||
317 | } | |
318 | ||
319 | ||
320 | //============ enum ====================== | |
321 | ||
322 | testcase tc_enum() runs on MTC{ | |
323 | var Days day := Monday; | |
324 | var octetstring os:= char2oct("Monday"); | |
325 | f_check_encoding(encoded:= os, expected := char2oct("Monday") ); | |
326 | f_bool2verdict(day ==f_dec_days(f_enc_days(day)) ) | |
327 | } | |
328 | ||
329 | //===== Record ======= | |
330 | ||
331 | testcase tc_record() runs on MTC{ | |
332 | var R r := { | |
333 | i:= 1, | |
334 | cs:="two", | |
335 | b:=true, | |
336 | d:=Monday | |
337 | }; | |
338 | var octetstring os := char2oct("{\"i\":1,\"cs\":\"two\",\"b\":true,\"d\":\"Monday\"}"); | |
339 | f_check_encoding(encoded:= f_enc_R(r), expected := os) | |
340 | f_bool2verdict(match(f_dec_R(f_enc_R(r)), r)); | |
341 | } | |
342 | ||
343 | testcase tc_record_const() runs on MTC{ | |
344 | var octetstring os := char2oct("{\"i\":1,\"cs\":\"two\",\"b\":true,\"d\":\"Monday\"}"); | |
345 | f_check_encoding(encoded:= f_enc_R(c_r), expected := os) | |
346 | f_bool2verdict(match(f_dec_R(f_enc_R(c_r)), c_r)); | |
347 | } | |
348 | ||
349 | testcase tc_record_modulepar() runs on MTC{ | |
350 | var octetstring os := char2oct("{\"i\":1,\"cs\":\"two\",\"b\":true,\"d\":\"Monday\"}"); | |
351 | f_check_encoding(encoded:= f_enc_R(tsp_r), expected := os) | |
352 | f_bool2verdict(match(f_dec_R(f_enc_R(tsp_r)), tsp_r)); | |
353 | } | |
354 | ||
355 | testcase tc_record_empty() runs on MTC{ | |
356 | var EmptyRec r := { }; | |
357 | var octetstring os := char2oct("{}"); | |
358 | f_check_encoding(encoded:= f_enc_ER(r), expected := os) | |
359 | f_bool2verdict(match(f_dec_ER(f_enc_ER(r)), r)); | |
360 | } | |
361 | ||
362 | ||
363 | //====== Record of=============== | |
364 | ||
365 | //ROI | |
366 | testcase tc_recordofinteger_empty() runs on MTC{ | |
367 | var RoI r:={} | |
368 | var octetstring os := char2oct("[]"); | |
369 | f_check_encoding(encoded:= f_enc_roi(r), expected := os) | |
370 | f_bool2verdict(match(f_dec_roi(f_enc_roi(r)), r)); | |
371 | } | |
372 | ||
373 | testcase tc_recordofinteger_short() runs on MTC{ | |
374 | var RoI r:= { 1, 4, 5, 7, 6, 6, 4, 0 , -1 }; | |
375 | var octetstring os := char2oct("[1,4,5,7,6,6,4,0,-1]"); | |
376 | f_check_encoding(encoded:= f_enc_roi(r), expected := os) | |
377 | f_bool2verdict(match(f_dec_roi(f_enc_roi(r)), r)); | |
378 | } | |
379 | ||
380 | testcase tc_recordofinteger_long() runs on MTC{ | |
381 | var RoI r:= {0}; | |
382 | var octetstring os := char2oct("[0"); | |
383 | //init: | |
384 | ||
385 | for(var integer i:=1; i<50; i:=i+1) { | |
386 | r[i]:=i; | |
387 | os := os & commao & char2oct(int2str(i)); | |
388 | } | |
389 | os := os & char2oct("]") | |
390 | log(r); | |
391 | log(os) | |
392 | //test: | |
393 | f_check_encoding(encoded:= f_enc_roi(r), expected := os) | |
394 | f_bool2verdict(match(f_dec_roi(f_enc_roi(r)), r)); | |
395 | } | |
396 | ||
397 | //RoF | |
398 | testcase tc_recordoffloat_empty() runs on MTC{ | |
399 | var RoF r:={} | |
400 | var octetstring os := char2oct("[]"); | |
401 | f_check_encoding(encoded:= f_enc_rof(r), expected := os) | |
402 | f_bool2verdict(match(f_dec_rof(f_enc_rof(r)), r)); | |
403 | } | |
404 | ||
405 | testcase tc_recordoffloat_short() runs on MTC{ | |
406 | var RoF r:={1.0, 1.234, 12.345e12, 12.345e-3, infinity} | |
407 | var octetstring os := char2oct("[1.000000,1.234000,1.234500e+13,0.012345,\"infinity\"]"); | |
408 | f_check_encoding(encoded:= f_enc_rof(r), expected := os) | |
409 | f_bool2verdict( match(r,f_dec_rof(f_enc_rof(r)))); | |
410 | log(match(r,f_dec_rof(f_enc_rof(r)))); | |
411 | } | |
412 | ||
413 | //RoCS | |
414 | testcase tc_recordofCS_empty() runs on MTC{ | |
415 | var RoCS r:={} | |
416 | var octetstring os := char2oct("[]"); | |
417 | f_check_encoding(encoded:= f_enc_rocs(r), expected := os) | |
418 | f_bool2verdict(match(f_dec_rocs(f_enc_rocs(r)), r)); | |
419 | } | |
420 | ||
421 | testcase tc_recordofCS_short() runs on MTC{ | |
422 | var RoCS r:={ "alMa", "","korte","joe@gmail.com"} | |
423 | var octetstring os := char2oct("[\"alMa\",\"\",\"korte\",\"joe@gmail.com\"]"); | |
424 | f_check_encoding(encoded:= f_enc_rocs(r), expected := os) | |
425 | f_bool2verdict( match(r,f_dec_rocs(f_enc_rocs(r)))); | |
426 | log(match(r,f_dec_rocs(f_enc_rocs(r)))); | |
427 | } | |
428 | ||
429 | //====== Array ================== | |
430 | ||
431 | testcase tc_array_int() runs on MTC { | |
432 | var IntArr r:= { 1, 4, 7 }; | |
433 | var octetstring os := char2oct("[1,4,7]"); | |
434 | f_check_encoding(encoded:= f_enc_ints(r), expected := os) | |
435 | f_bool2verdict(match(r,f_dec_ints(f_enc_ints(r)))); | |
436 | log(match(r,f_dec_ints(f_enc_ints(r)))); | |
437 | } | |
438 | ||
439 | testcase tc_array_float() runs on MTC { | |
440 | var FloatArr r:= { 3.14, 2.73, 0.66666 }; | |
441 | var octetstring os := char2oct("[3.140000,2.730000,0.666660]"); | |
442 | f_check_encoding(encoded:= f_enc_floats(r), expected := os) | |
443 | f_bool2verdict(match(r,f_dec_floats(f_enc_floats(r)))); | |
444 | log(match(r,f_dec_floats(f_enc_floats(r)))); | |
445 | } | |
446 | ||
447 | testcase tc_array_str() runs on MTC { | |
448 | var StrArr r:= { "red", "blue", "green", "white" }; | |
449 | var octetstring os := char2oct("[\"red\",\"blue\",\"green\",\"white\"]"); | |
450 | f_check_encoding(encoded:= f_enc_strs(r), expected := os) | |
451 | f_bool2verdict(match(r,f_dec_strs(f_enc_strs(r)))); | |
452 | log(match(r,f_dec_strs(f_enc_strs(r)))); | |
453 | } | |
454 | ||
455 | //====== Union ================== | |
456 | testcase tc_union() runs on MTC{ | |
457 | var A myunion := { b:= true } | |
458 | var octetstring os := char2oct("{\"b\":true}"); | |
459 | f_check_encoding(encoded:= f_enc_A(myunion), expected := os) | |
460 | f_bool2verdict(match(f_dec_A(f_enc_A(myunion)), myunion)); | |
461 | } | |
462 | ||
463 | testcase tc_union2() runs on MTC{ | |
464 | var A myunion := { f:= infinity } | |
465 | var octetstring os := char2oct("{\"f\":\"infinity\"}"); | |
466 | f_check_encoding(encoded:= f_enc_A(myunion), expected := os) | |
467 | f_bool2verdict(match(f_dec_A(f_enc_A(myunion)), myunion)); | |
468 | } | |
469 | ||
470 | testcase tc_union_false() runs on MTC{ | |
471 | var A myunion := { b:= true } | |
472 | var octetstring os := char2oct("{\"b\":true}"); | |
473 | f_check_encoding(encoded:= f_enc_A(myunion), expected := os) | |
474 | @try{ | |
475 | var A retval := f_dec_A('ABBA'O); | |
476 | setverdict(fail,"error expected, not received"); | |
477 | } | |
478 | @catch( err_msg){ | |
479 | log(err_msg); | |
480 | setverdict(pass,"expected error received") | |
481 | } | |
482 | } | |
483 | ||
484 | //====== ASN.1 types ================== | |
485 | // SEQUENCE OF INTEGER | |
486 | testcase tc_asn_seqof() runs on MTC { | |
487 | var octetstring os := char2oct(c_ints_str); | |
488 | f_check_encoding(encoded:= f_enc_seqofint(c_ints), expected := os) | |
489 | f_bool2verdict(match(f_dec_seqofint(os), c_ints)); | |
490 | } | |
491 | ||
492 | // SEQUENCE | |
493 | testcase tc_asn_seq() runs on MTC { | |
494 | var octetstring os := char2oct(c_product_str); | |
495 | f_check_encoding(encoded:= f_enc_seqprod(c_product), expected := os) | |
496 | f_bool2verdict(match(f_dec_seqprod(os), c_product)); | |
497 | } | |
498 | ||
499 | // CHOICE | |
500 | testcase tc_asn_choice() runs on MTC { | |
501 | var octetstring os := char2oct(c_number_str); | |
502 | f_check_encoding(encoded:= f_enc_number(c_number), expected := os) | |
503 | f_bool2verdict(match(f_dec_number(os), c_number)); | |
504 | } | |
505 | ||
506 | // SEQUENCE OF CHOICE | |
507 | testcase tc_asn_strings() runs on MTC { | |
508 | var octetstring os := char2oct(c_strings_str); | |
509 | f_check_encoding(encoded:= f_enc_strings(c_strings), expected := os) | |
510 | f_bool2verdict(match(f_dec_strings(os), c_strings)); | |
511 | } | |
512 | ||
513 | // SET containing a SEQUENCE, a SET OF CHOICE and a SEQUENCE OF CHOICE | |
514 | testcase tc_asn_complex() runs on MTC { | |
515 | var octetstring os := char2oct(c_set_val_str); | |
516 | f_check_encoding(encoded:= f_enc_complex(c_set_val), expected := os) | |
517 | f_bool2verdict(match(f_dec_complex(os), c_set_val)); | |
518 | } | |
519 | ||
af710487 | 520 | // ====== Special ASN.1 types ====== |
521 | // record containing an open type and a possible NULL value | |
522 | testcase tc_asn_open_type_and_null() runs on MTC { | |
523 | var HasPardType x := { | |
524 | pard := { | |
525 | id := 0, | |
526 | priority := low, | |
527 | val := { iNTEGER := 19 } | |
528 | }, | |
529 | buul := true, | |
530 | price := { invaluable := NULL } | |
531 | }; | |
532 | var octetstring os := char2oct("{\"pard\":{\"id\":0,\"priority\":\"low\",\"val\":{\"iNTEGER\":19}},\"buul\":true,\"price\":{\"invaluable\":null}}"); | |
533 | f_check_encoding(encoded := f_enc_hpt(x), expected := os); | |
534 | f_bool2verdict(match(f_dec_hpt(os), x)); | |
535 | } | |
536 | ||
537 | // SEQUENCE containing an object identifier and an ANY type | |
538 | testcase tc_asn_objid_and_any() runs on MTC { | |
539 | var octetstring os := char2oct(c_obj_str); | |
540 | f_check_encoding(encoded:= f_enc_obj(c_obj), expected := os); | |
541 | f_bool2verdict(match(f_dec_obj(os), c_obj)); | |
542 | } | |
543 | ||
544 | testcase tc_asn_optional_null() runs on MTC { | |
545 | var octetstring os := char2oct(c_null_str); | |
546 | f_check_encoding(encoded:= f_enc_null(c_null), expected := os); | |
547 | f_bool2verdict(match(f_dec_null(os), c_null)); | |
548 | os := char2oct(c_not_null_str); | |
549 | f_check_encoding(encoded:= f_enc_null(c_not_null), expected := os); | |
550 | f_bool2verdict(match(f_dec_null(os), c_not_null)); | |
551 | } | |
970ed795 EL |
552 | |
553 | //========================================================================= | |
554 | // Control | |
555 | //========================================================================= | |
556 | control { | |
557 | ||
558 | execute(tc_integer_pos()); | |
559 | execute(tc_integer_0()); | |
560 | execute(tc_integer_neg()); | |
561 | execute(tc_integer_bigpos()); | |
562 | execute(tc_integer_expression1()); | |
563 | execute(tc_integer_const()); | |
564 | execute(tc_integer_imported()); | |
565 | execute(tc_boolean_true()); | |
566 | execute(tc_boolean_false()); | |
567 | execute(tc_charstring_ascii_basic()); | |
568 | execute(tc_charstring_ascii_basic_long()); | |
569 | execute(tc_charstring_ascii_basic_long_const()); | |
570 | execute(tc_charstring_ascii_basic_punctuation()); | |
571 | execute(tc_charstring_ascii_basic_escapes()); | |
572 | execute(tc_charstring_ascii_extended1()); | |
573 | execute(tc_charstring_ascii_basic_escapes()); | |
574 | ||
575 | execute(tc_ucharstring_ascii_extended1_xer()); | |
576 | execute(tc_ucharstring_ascii_extended1()); | |
577 | execute(tc_ucharstring_ascii_extended2()); | |
578 | execute(tc_ucharstring_ascii_extended3()); | |
579 | execute(tc_ucharstring_higherplanes()); | |
580 | execute(tc_octetstring()); | |
581 | execute(tc_hexstring()); | |
582 | execute(tc_bitstring()); | |
583 | execute(tc_verdicttype()); | |
584 | execute(tc_float()); | |
585 | execute(tc_record()); | |
586 | execute(tc_record_const()); | |
587 | execute(tc_record_modulepar()); | |
588 | execute(tc_record_empty()); | |
589 | execute(tc_recordofinteger_empty()); | |
590 | execute(tc_recordofinteger_short()); | |
591 | execute(tc_recordoffloat_empty()); | |
592 | execute(tc_recordoffloat_short()); | |
593 | execute(tc_recordofCS_empty()); | |
594 | execute(tc_recordofCS_short()); | |
595 | execute(tc_array_int()); | |
596 | execute(tc_array_float()); | |
597 | execute(tc_array_str()); | |
598 | execute(tc_union()); | |
599 | execute(tc_union2()); | |
600 | execute(tc_union_false()); | |
601 | ||
602 | execute(tc_asn_seqof()); | |
603 | execute(tc_asn_seq()); | |
604 | execute(tc_asn_choice()); | |
605 | execute(tc_asn_strings()); | |
606 | execute(tc_asn_complex()); | |
af710487 | 607 | |
608 | execute(tc_asn_open_type_and_null()); | |
609 | execute(tc_asn_objid_and_any()); | |
610 | execute(tc_asn_optional_null()); | |
970ed795 EL |
611 | } |
612 | ||
613 | ||
614 | } |