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 | // This module tests the following functions for UTF-16: | |
9 | // oct2unichar | |
10 | // unichar2oct | |
11 | // get_stringencoding | |
12 | module UTF16Testcases { | |
13 | ||
14 | import from Common all; | |
15 | ||
16 | ||
17 | //============== Testcases =========================== | |
18 | ||
19 | // === get_stringencoding test ====== | |
20 | testcase tc_get_stringencoding_UTF16() runs on MTC { | |
21 | f_check_string_encoding('FEFF01'O, "UTF-16BE" ); | |
22 | //f_check_string_encoding('FFFE0000'O, "UTF-16LE" ); | |
23 | f_check_string_encoding('FEFF0000'O, "UTF-16BE" ); | |
24 | } | |
25 | ||
26 | //testcase tc_get_stringencoding_UTF16_buggy() runs on MTC { | |
27 | // f_check_string_encoding('FFFE0000'O, "UTF-16LE" ); | |
28 | //} | |
29 | ||
30 | // === tc_oct2unichar ===== | |
31 | ||
32 | testcase tc_oct2unichar_UTF16_negative_01() runs on MTC { | |
33 | ||
34 | f_oct2unichar_negativetest( | |
35 | inputOs := 'FEFF01'O, | |
36 | encType := "UTF-16BE", | |
37 | expectedErrorMsg := "Wrong UTF-16 string. The number of bytes \(3\) in octetstring shall be non negative and divisible by 2" | |
38 | ); | |
39 | } | |
40 | ||
41 | ||
42 | //too large 2 | |
43 | testcase tc_oct2unichar_UTF16_negative_D800() runs on MTC { | |
44 | f_oct2unichar_negativetest( | |
45 | inputOs := 'FEFFD800'O, | |
46 | encType := "UTF-16BE", | |
47 | expectedErrorMsg := "Wrong UTF-16 string. The decoding algorythm does not expect 0x00 or EOL" | |
48 | ); | |
49 | } | |
50 | ||
51 | testcase tc_oct2unichar_UTF16_negative_D80000() runs on MTC { | |
52 | f_oct2unichar_negativetest( | |
53 | inputOs := 'FEFFD80000'O, | |
54 | encType := "UTF-16BE", | |
55 | expectedErrorMsg := "Wrong UTF-16 string. The number of bytes \(5\) in octetstring shall be non negative and divisible by 2" | |
56 | ); | |
57 | } | |
58 | ||
59 | testcase tc_oct2unichar_UTF16_negative_D8000000() runs on MTC { | |
60 | f_oct2unichar_negativetest( | |
61 | inputOs := 'FEFFD8000000'O, | |
62 | encType := "UTF-16BE", | |
63 | expectedErrorMsg := "Wrong UTF-16 string. The decoding algorythm does not expect 0x00 or EOL" | |
64 | ); | |
65 | } | |
66 | ||
67 | testcase tc_oct2unichar_UTF16_negative_toobig() runs on MTC { | |
68 | f_oct2unichar_negativetest( | |
69 | inputOs := 'FEFFD800FFFF'O, | |
70 | encType := "UTF-16BE", | |
71 | expectedErrorMsg := "Wrong UTF-16 string. The word \(0xFFFF\) shall be between 0xDC00 and 0xDFFF" | |
72 | ); | |
73 | } | |
74 | //0000..D7FF UTF-16BE converting octetstring to unicode and converting back | |
75 | testcase tc_oct2unichar_UTF16_BMP() runs on MTC { | |
76 | ||
77 | var integer L := 0; | |
78 | var integer N := oct2int('D7FF'O) | |
79 | for(var integer i:=L;i<=N;i:=i+55) { | |
80 | ||
81 | f_oct2unichar_positivetest( | |
82 | inputOs := c_BOM_UTF16BE & int2oct(i,2), | |
83 | encType := "UTF-16", | |
84 | expectedUCS := int2unichar(i), | |
85 | expectedEncType := "UTF-16BE" | |
86 | ) | |
87 | ||
88 | } | |
89 | } | |
90 | //0000..D7FF UTF-16BE converting octetstring to unicode and converting back | |
91 | testcase tc_oct2unichar_UTF16BE_BMP() runs on MTC { | |
92 | ||
93 | var integer L := 0; | |
94 | var integer N := oct2int('D7FF'O) | |
95 | for(var integer i:=L;i<=N;i:=i+129) { | |
96 | ||
97 | f_oct2unichar_positivetest( | |
98 | inputOs := c_BOM_UTF16BE & int2oct(i,2), | |
99 | encType := "UTF-16BE", | |
100 | expectedUCS := int2unichar(i), | |
101 | expectedEncType := "UTF-16BE" | |
102 | ) | |
103 | ||
104 | } | |
105 | } | |
106 | ||
107 | ||
108 | //0000..D7FF UTF-16BE converting octetstring to unicode and converting back | |
109 | testcase tc_oct2unichar_UTF16LE_BMP() runs on MTC { | |
110 | var integer L := 0; | |
111 | var integer N := oct2int('D7FF'O) | |
112 | var octetstring o := ''O; | |
113 | ||
114 | for(var integer i:=L;i<=N;i:=i+129) { | |
115 | o:=int2oct(i,2); | |
116 | if(f_changeOrder(o)==false) {setverdict(fail); break} | |
117 | ||
118 | f_oct2unichar_positivetest( | |
119 | inputOs := c_BOM_UTF16LE & o, | |
120 | encType := "UTF-16LE", | |
121 | expectedUCS := int2unichar(i), | |
122 | expectedEncType := "UTF-16LE" | |
123 | ) | |
124 | ||
125 | } | |
126 | ||
127 | } | |
128 | ||
129 | testcase tc_oct2unichar_UTF16_Z() runs on MTC { | |
130 | var octetstring o := '007A'O; | |
131 | var universal charstring u:= char(0,0,0,122); | |
132 | f_oct2unichar_positivetest( | |
133 | inputOs := o, | |
134 | encType := "UTF-16", | |
135 | expectedUCS := u, | |
136 | expectedEncType := "UTF-16BE", | |
137 | expectedOs :=c_BOM_UTF16BE & o | |
138 | ); | |
139 | ||
140 | } | |
141 | ||
142 | testcase tc_oct2unichar_UTF16BE_Z() runs on MTC { | |
143 | var octetstring o := c_BOM_UTF16BE & '007A'O; | |
144 | var universal charstring u:= char(0,0,0,122); | |
145 | f_oct2unichar_positivetest( | |
146 | inputOs := o, | |
147 | encType := "UTF-16", | |
148 | expectedUCS := u, | |
149 | expectedEncType := "UTF-16BE", | |
150 | expectedOs :=o | |
151 | ); | |
152 | ||
153 | } | |
154 | ||
155 | testcase tc_oct2unichar_UTF16LE_Z() runs on MTC { | |
156 | var octetstring o := c_BOM_UTF16LE & '7A00'O; | |
157 | var universal charstring u:= char(0,0,0,122); | |
158 | f_oct2unichar_positivetest( | |
159 | inputOs := o, | |
160 | encType := "UTF-16LE", | |
161 | expectedUCS := u, | |
162 | expectedEncType := "UTF-16LE", | |
163 | expectedOs :=o | |
164 | ); | |
165 | ||
166 | } | |
167 | ||
168 | testcase tc_oct2unichar_UTF16_water() runs on MTC { | |
169 | var octetstring o := '6C34'O; | |
170 | var universal charstring u:= char(0,0,108,52); | |
171 | f_oct2unichar_positivetest( | |
172 | inputOs := o, | |
173 | encType := "UTF-16", | |
174 | expectedUCS := u, | |
175 | expectedEncType := "UTF-16BE", | |
176 | expectedOs :=c_BOM_UTF16BE & o | |
177 | ); | |
178 | ||
179 | } | |
180 | ||
181 | testcase tc_oct2unichar_UTF16_linearb() runs on MTC { | |
182 | var octetstring o := 'D800DC00'O; | |
183 | var universal charstring u:= char(0,1,0,0); | |
184 | f_oct2unichar_positivetest( | |
185 | inputOs := o, | |
186 | encType := "UTF-16", | |
187 | expectedUCS := u, | |
188 | expectedEncType := "UTF-16BE", | |
189 | expectedOs :=c_BOM_UTF16BE & o | |
190 | ); | |
191 | } | |
192 | ||
193 | // unichar2oct test | |
194 | ||
195 | testcase tc_unichar2oct_positive1() runs on MTC { | |
196 | var integer i:= 1; | |
197 | var universal charstring u :=int2unichar(i); | |
198 | f_unichar2oct_positivetest(u,"UTF-16", c_BOM_UTF16BE & int2oct(i,2)) | |
199 | f_unichar2oct_positivetest(u,"UTF-16BE", c_BOM_UTF16BE & int2oct(i,2)); | |
200 | var octetstring o:= int2oct(i,2); | |
201 | f_changeOrder(o); | |
202 | f_unichar2oct_positivetest(u,"UTF-16LE", c_BOM_UTF16LE & o); | |
203 | } | |
204 | ||
205 | testcase tc_unichar2oct_positive2() runs on MTC { | |
206 | var integer i:= 1; | |
207 | var universal charstring u :=int2unichar(i); | |
208 | f_unichar2oct_positivetest(u,"UTF-16", c_BOM_UTF16BE & int2oct(i,2)) | |
209 | f_unichar2oct_positivetest(u,"UTF-16BE", c_BOM_UTF16BE & int2oct(i,2)); | |
210 | var octetstring o:= int2oct(i,2); | |
211 | f_changeOrder(o); | |
212 | f_unichar2oct_positivetest(u,"UTF-16LE", c_BOM_UTF16LE & o); | |
213 | } | |
214 | ||
215 | // check if an expression can be passed | |
216 | testcase tc_unichar2oct_0to80() runs on MTC { | |
217 | var universal charstring u; | |
218 | var integer L := oct2int('0000'O); | |
219 | var integer N := oct2int('0080'O); | |
220 | for( var integer i:=L;i<=N; i:=i+8) { | |
221 | u:=int2unichar(i); | |
222 | log("i:",i,"\tu:",u); | |
223 | log("UTF-8 : ",unichar2oct(int2unichar(i),"UTF-8")); | |
224 | log("UTF-16 : ",unichar2oct(int2unichar(i),"UTF-16")); | |
225 | log("UTF-16BE: ",unichar2oct(int2unichar(i),"UTF-16BE")); | |
226 | log("UTF-16LE: ",unichar2oct(int2unichar(i),"UTF-16LE")); | |
227 | log("UTF-32 : ",unichar2oct(int2unichar(i),"UTF-32")); | |
228 | log("UTF-32BE: ",unichar2oct(int2unichar(i),"UTF-32BE")); | |
229 | log("UTF-32LE: ",unichar2oct(int2unichar(i),"UTF-32LE")); | |
230 | } | |
231 | setverdict(pass); | |
232 | } | |
233 | ||
234 | //check if the conversion failed or not | |
235 | testcase tc_unichar2octAndReverse_0toD7FF() runs on MTC { | |
236 | var universal charstring u; | |
237 | var integer L := oct2int('0000'O); | |
238 | var integer N := oct2int('D7FF'O); | |
239 | for( var integer i:=L;i<=N; i:=i+1025) { | |
240 | u:=int2unichar(i); | |
241 | log("===== i:",i,"\tu:",u,"====="); | |
242 | f_unichar2octAndReverse(u, "UTF-8"); | |
243 | f_unichar2octAndReverse(u, "UTF-16"); | |
244 | f_unichar2octAndReverse(u, "UTF-16BE"); | |
245 | f_unichar2octAndReverse(u, "UTF-16LE"); //Dynamic test case error: The detected coding type(UTF-32LE) does not match the expected one(UTF-16LE) | |
246 | f_unichar2octAndReverse(u, "UTF-32"); | |
247 | f_unichar2octAndReverse(u, "UTF-32BE"); | |
248 | f_unichar2octAndReverse(u, "UTF-32LE"); | |
249 | } | |
250 | setverdict(pass); | |
251 | } | |
252 | ||
253 | ||
254 | testcase tc_unichar2octAndReverse_E000toFFFF () runs on MTC { | |
255 | var universal charstring u; | |
256 | var integer L := oct2int('E000'O); | |
257 | var integer N := oct2int('FFFF'O); | |
258 | for( var integer i:=L;i<=N; i:=i+1025) { | |
259 | u:=int2unichar(i); | |
260 | log("===== i:",i,"\tu:",u,"====="); | |
261 | f_unichar2octAndReverse(u, "UTF-8"); | |
262 | f_unichar2octAndReverse(u, "UTF-16"); | |
263 | f_unichar2octAndReverse(u, "UTF-16BE"); | |
264 | //f_unichar2octAndReverse(u, "UTF-16LE"); Dynamic test case error: The detected coding type(UTF-32LE) does not match the expected one(UTF-16LE) | |
265 | f_unichar2octAndReverse(u, "UTF-32"); | |
266 | f_unichar2octAndReverse(u, "UTF-32BE"); | |
267 | f_unichar2octAndReverse(u, "UTF-32LE"); | |
268 | } | |
269 | setverdict(pass); | |
270 | } | |
271 | ||
272 | testcase tc_unichar2octAndReverse_10000to10FFFF() runs on MTC { | |
273 | var universal charstring u; | |
274 | var integer L := oct2int('010000'O); | |
275 | var integer N := oct2int('10FFFF'O); | |
276 | for( var integer i:=L;i<=N; i:=i+256*256+1) { | |
277 | u:=int2unichar(i); | |
278 | log("===== i:",i,"\tu:",u,"====="); | |
279 | f_unichar2octAndReverse(u, "UTF-8"); | |
280 | f_unichar2octAndReverse(u, "UTF-16"); | |
281 | f_unichar2octAndReverse(u, "UTF-16BE"); | |
282 | f_unichar2octAndReverse(u, "UTF-16LE"); | |
283 | f_unichar2octAndReverse(u, "UTF-32"); | |
284 | f_unichar2octAndReverse(u, "UTF-32BE"); | |
285 | f_unichar2octAndReverse(u, "UTF-32LE"); | |
286 | } | |
287 | setverdict(pass); | |
288 | } | |
289 | //external function f_enc(in integer i, out octetstring o) | |
290 | // with { extension "prototype(fast)"; extension "encode(XER)"} | |
291 | ||
292 | ||
293 | // expected result is checked | |
294 | testcase tc_unichar2oct_utf16_0toD7FF() runs on MTC { | |
295 | var universal charstring u; | |
296 | var integer L := oct2int('0000'O); | |
297 | var integer N := oct2int('D7FF'O); | |
298 | for( var integer i:=L;i<=N; i:=i+255) { | |
299 | u:=int2unichar(i); | |
300 | log("i:",i,"\tu:",u); | |
301 | ||
302 | f_unichar2oct_positivetest(u,"UTF-16", c_BOM_UTF16BE & int2oct(i,2)) | |
303 | f_unichar2oct_positivetest(u,"UTF-16BE", c_BOM_UTF16BE & int2oct(i,2)); | |
304 | var octetstring o:= int2oct(i,2); | |
305 | f_changeOrder(o); | |
306 | f_unichar2oct_positivetest(u,"UTF-16LE", c_BOM_UTF16LE & o); | |
307 | } | |
308 | setverdict(pass); | |
309 | } | |
310 | ||
311 | ||
312 | testcase tc_unichar2oct_utf16_asciistring() runs on MTC { | |
313 | //var universal charstring us1 :="Árvíztűrő tükörfúrógép" | |
314 | var universal charstring us1 := c_arvizturo; | |
315 | //var charstring cs1 := "Árvíztűrő tükörfúrógép"; | |
316 | var universal charstring us2 :="Steve Jobs likes the Apple" | |
317 | ||
318 | f_unichar2oct_positivetest( | |
319 | u := us1, | |
320 | encodingType:="UTF-16", | |
321 | expectedResult := f_ucharstring2utf16BE(us1) | |
322 | ) | |
323 | ||
324 | f_unichar2oct_positivetest( | |
325 | u := us2, | |
326 | encodingType:="UTF-16", | |
327 | expectedResult := f_ucharstring2utf16BE(us2) | |
328 | ) | |
329 | ||
330 | } | |
331 | ||
332 | testcase tc_unichar2oct_utf16BE_asciistring() runs on MTC { | |
333 | //var universal charstring us1 :="Árvíztűrő tükörfúrógép" | |
334 | var universal charstring us1 := c_arvizturo; | |
335 | //var charstring cs1 := "Árvíztűrő tükörfúrógép"; | |
336 | var universal charstring us2 :="Steve Jobs likes the Apple" | |
337 | ||
338 | ||
339 | f_unichar2oct_positivetest( | |
340 | u := us1, | |
341 | encodingType:="UTF-16BE", | |
342 | expectedResult := f_ucharstring2utf16BE(us1) | |
343 | ) | |
344 | ||
345 | f_unichar2oct_positivetest( | |
346 | u := us2, | |
347 | encodingType:="UTF-16BE", | |
348 | expectedResult := f_ucharstring2utf16BE(us2) | |
349 | ) | |
350 | ||
351 | } | |
352 | ||
353 | testcase tc_unichar2oct_utf16LE_asciistring() runs on MTC { | |
354 | ||
355 | //var universal charstring us1 :="Árvíztűrő tükörfúrógép" | |
356 | var universal charstring us1 := c_arvizturo; | |
357 | //var charstring cs1 := "Árvíztűrő tükörfúrógép"; | |
358 | var universal charstring us2 :="Steve Jobs likes the Apple" | |
359 | //2 | |
360 | var octetstring os_expected := f_ucharstring2utf16BE(us1); | |
361 | ||
362 | if( not f_changeOrder(os_expected) ) { setverdict(fail, "Odd length is not expected") } | |
363 | f_unichar2oct_positivetest( | |
364 | u := us1, | |
365 | encodingType:="UTF-16LE", | |
366 | expectedResult := os_expected | |
367 | ) | |
368 | ||
369 | os_expected := f_ucharstring2utf16BE(us2); | |
370 | if( not f_changeOrder(os_expected) ) { setverdict(fail, "Odd length is not expected") } | |
371 | f_unichar2oct_positivetest( | |
372 | u := us2, | |
373 | encodingType:="UTF-16LE", | |
374 | expectedResult := os_expected | |
375 | ) | |
376 | ||
377 | } | |
378 | ||
379 | testcase tc_unichar2oct_utf16_asciistring1() runs on MTC { | |
380 | var universal charstring us1 :="Árvíztűrő tükörfúrógép" | |
381 | f_unichar2oct_positivetest( | |
382 | u := us1, | |
383 | encodingType:="UTF-16", | |
384 | expectedResult := f_ucharstring2utf16BE(us1) | |
385 | ) | |
386 | } | |
387 | ||
388 | testcase tc_unichar2oct_utf16BE_asciistring1() runs on MTC { | |
389 | var universal charstring us1 :="Árvíztűrő tükörfúrógép"; | |
390 | ||
391 | f_unichar2oct_positivetest( | |
392 | u := us1, | |
393 | encodingType:="UTF-16BE", | |
394 | expectedResult := f_ucharstring2utf16BE(us1) | |
395 | ) | |
396 | } | |
397 | ||
398 | testcase tc_unichar2oct_utf16LE_asciistring1() runs on MTC { | |
399 | var universal charstring us1 :="Árvíztűrő tükörfúrógép" | |
400 | ||
401 | var octetstring os_expected := f_ucharstring2utf16BE(us1); | |
402 | ||
403 | if( not f_changeOrder(os_expected) ) { setverdict(fail, "Odd length is not expected") } | |
404 | f_unichar2oct_positivetest( | |
405 | u := us1, | |
406 | encodingType:="UTF-16LE", | |
407 | expectedResult := os_expected | |
408 | ) | |
409 | ||
410 | } | |
411 | ||
412 | testcase tc_unichar2oct_utf16_upperplanes() runs on MTC { | |
413 | var RoUCS us := { | |
414 | char(0,1,0,0), char(0,1,0,175), char(0,1,255,255), | |
415 | char(0,2,0,0), char(0,2,0,175), char(0,2,255,255), | |
416 | char(0,3,0,0), char(0,3,0,175), char(0,3,255,255), | |
417 | char(0,15,0,0), char(0,15,0,175), char(0,15,255,255), | |
418 | char(0,16,0,0), char(0,16,0,175), char(0,16,255,255) | |
419 | }; | |
420 | var RoOS os := { | |
421 | c_BOM_UTF16BE &'D800DC00'O, c_BOM_UTF16BE &'D800DCAF'O, c_BOM_UTF16BE &'D83FDFFF'O, | |
422 | c_BOM_UTF16BE &'D840DC00'O, c_BOM_UTF16BE &'D840DCAF'O, c_BOM_UTF16BE &'D87FDFFF'O, | |
423 | c_BOM_UTF16BE &'D880DC00'O, c_BOM_UTF16BE &'D880DCAF'O, c_BOM_UTF16BE &'D8BFDFFF'O, | |
424 | c_BOM_UTF16BE &'DB80DC00'O, c_BOM_UTF16BE &'DB80DCAF'O, c_BOM_UTF16BE &'DBBFDFFF'O, | |
425 | c_BOM_UTF16BE &'DBC0DC00'O, c_BOM_UTF16BE &'DBC0DCAF'O, c_BOM_UTF16BE &'DBFFDFFF'O | |
426 | } | |
427 | var integer len:=lengthof(us); | |
428 | ||
429 | for(var integer i:=0;i<len;i:=i+1) { | |
430 | ||
431 | f_unichar2oct_positivetest( | |
432 | u := us[i], | |
433 | encodingType:="UTF-16", | |
434 | expectedResult := os[i] | |
435 | ) | |
436 | } | |
437 | } | |
438 | ||
439 | testcase tc_unichar2oct_utf16BE_upperplanes() runs on MTC { | |
440 | var RoUCS us := { | |
441 | char(0,1,0,0), char(0,1,0,175), char(0,1,255,255), | |
442 | char(0,2,0,0), char(0,2,0,175), char(0,2,255,255), | |
443 | char(0,3,0,0), char(0,3,0,175), char(0,3,255,255), | |
444 | char(0,15,0,0), char(0,15,0,175), char(0,15,255,255), | |
445 | char(0,16,0,0), char(0,16,0,175), char(0,16,255,255) | |
446 | }; | |
447 | var RoOS os := { | |
448 | c_BOM_UTF16BE &'D800DC00'O, c_BOM_UTF16BE &'D800DCAF'O, c_BOM_UTF16BE &'D83FDFFF'O, | |
449 | c_BOM_UTF16BE &'D840DC00'O, c_BOM_UTF16BE &'D840DCAF'O, c_BOM_UTF16BE &'D87FDFFF'O, | |
450 | c_BOM_UTF16BE &'D880DC00'O, c_BOM_UTF16BE &'D880DCAF'O, c_BOM_UTF16BE &'D8BFDFFF'O, | |
451 | c_BOM_UTF16BE &'DB80DC00'O, c_BOM_UTF16BE &'DB80DCAF'O, c_BOM_UTF16BE &'DBBFDFFF'O, | |
452 | c_BOM_UTF16BE &'DBC0DC00'O, c_BOM_UTF16BE &'DBC0DCAF'O, c_BOM_UTF16BE &'DBFFDFFF'O | |
453 | } | |
454 | var integer len:=lengthof(us); | |
455 | ||
456 | for(var integer i:=0;i<len;i:=i+1) { | |
457 | ||
458 | f_unichar2oct_positivetest( | |
459 | u := us[i], | |
460 | encodingType:="UTF-16BE", | |
461 | expectedResult := os[i] | |
462 | ) | |
463 | ||
464 | } | |
465 | } | |
466 | ||
467 | testcase tc_unichar2oct_utf16LE_upperplanes() runs on MTC { | |
468 | var RoUCS us := { | |
469 | char(0,1,0,0), char(0,1,0,175), char(0,1,255,255), | |
470 | char(0,2,0,0), char(0,2,0,175), char(0,2,255,255), | |
471 | char(0,3,0,0), char(0,3,0,175), char(0,3,255,255), | |
472 | char(0,15,0,0), char(0,15,0,175), char(0,15,255,255), | |
473 | char(0,16,0,0), char(0,16,0,175), char(0,16,255,255) | |
474 | }; | |
475 | var RoOS os := { | |
476 | c_BOM_UTF16BE &'D800DC00'O, c_BOM_UTF16BE &'D800DCAF'O, c_BOM_UTF16BE &'D83FDFFF'O, | |
477 | c_BOM_UTF16BE &'D840DC00'O, c_BOM_UTF16BE &'D840DCAF'O, c_BOM_UTF16BE &'D87FDFFF'O, | |
478 | c_BOM_UTF16BE &'D880DC00'O, c_BOM_UTF16BE &'D880DCAF'O, c_BOM_UTF16BE &'D8BFDFFF'O, | |
479 | c_BOM_UTF16BE &'DB80DC00'O, c_BOM_UTF16BE &'DB80DCAF'O, c_BOM_UTF16BE &'DBBFDFFF'O, | |
480 | c_BOM_UTF16BE &'DBC0DC00'O, c_BOM_UTF16BE &'DBC0DCAF'O, c_BOM_UTF16BE &'DBFFDFFF'O | |
481 | } | |
482 | var integer len:=lengthof(us); | |
483 | ||
484 | for(var integer i:=0;i<len;i:=i+1) { | |
485 | f_changeOrder(os[i]); | |
486 | f_unichar2oct_positivetest( | |
487 | u := us[i], | |
488 | encodingType:="UTF-16LE", | |
489 | expectedResult := os[i] | |
490 | ) | |
491 | ||
492 | } | |
493 | } | |
494 | ||
495 | testcase tc_unichar2oct_utf16_upperplane_longer() runs on MTC { | |
496 | var RoUCS us := { | |
497 | char(0,1,0,0) & char(0,1,0,175) & char(0,1,255,255), | |
498 | char(0,2,0,0) & char(0,2,0,175) & char(0,2,255,255), | |
499 | char(0,3,0,0) & char(0,3,0,175) & char(0,3,255,255), | |
500 | char(0,15,0,0)& char(0,15,0,175)& char(0,15,255,255), | |
501 | char(0,16,0,0)& char(0,16,0,175)& char(0,16,255,255), | |
502 | char(0,16,0,0) & char(0,0,0,1) & " " | |
503 | }; | |
504 | var RoOS os := { | |
505 | c_BOM_UTF16BE &'D800DC00'O &'D800DCAF'O &'D83FDFFF'O, | |
506 | c_BOM_UTF16BE &'D840DC00'O &'D840DCAF'O &'D87FDFFF'O, | |
507 | c_BOM_UTF16BE &'D880DC00'O &'D880DCAF'O &'D8BFDFFF'O, | |
508 | c_BOM_UTF16BE &'DB80DC00'O &'DB80DCAF'O &'DBBFDFFF'O, | |
509 | c_BOM_UTF16BE &'DBC0DC00'O &'DBC0DCAF'O &'DBFFDFFF'O, | |
510 | c_BOM_UTF16BE &'DBC0DC00'O &'0001'O &'0020'O | |
511 | } | |
512 | var integer len:=lengthof(us); | |
513 | ||
514 | for(var integer i:=0;i<len;i:=i+1) { | |
515 | ||
516 | f_unichar2oct_positivetest( | |
517 | u := us[i], | |
518 | encodingType:="UTF-16", | |
519 | expectedResult := os[i] | |
520 | ) | |
521 | } | |
522 | } | |
523 | ||
524 | testcase tc_unichar2oct_utf16BE_upperplane_longer() runs on MTC { | |
525 | var RoUCS us := { | |
526 | char(0,1,0,0) & char(0,1,0,175) & char(0,1,255,255), | |
527 | char(0,2,0,0) & char(0,2,0,175) & char(0,2,255,255), | |
528 | char(0,3,0,0) & char(0,3,0,175) & char(0,3,255,255), | |
529 | char(0,15,0,0)& char(0,15,0,175)& char(0,15,255,255), | |
530 | char(0,16,0,0)& char(0,16,0,175)& char(0,16,255,255), | |
531 | char(0,16,0,0) & char(0,0,0,1) & " " | |
532 | }; | |
533 | var RoOS os := { | |
534 | c_BOM_UTF16BE &'D800DC00'O &'D800DCAF'O &'D83FDFFF'O, | |
535 | c_BOM_UTF16BE &'D840DC00'O &'D840DCAF'O &'D87FDFFF'O, | |
536 | c_BOM_UTF16BE &'D880DC00'O &'D880DCAF'O &'D8BFDFFF'O, | |
537 | c_BOM_UTF16BE &'DB80DC00'O &'DB80DCAF'O &'DBBFDFFF'O, | |
538 | c_BOM_UTF16BE &'DBC0DC00'O &'DBC0DCAF'O &'DBFFDFFF'O, | |
539 | c_BOM_UTF16BE &'DBC0DC00'O &'0001'O &'0020'O | |
540 | } | |
541 | var integer len:=lengthof(us); | |
542 | ||
543 | for(var integer i:=0;i<len;i:=i+1) { | |
544 | ||
545 | f_unichar2oct_positivetest( | |
546 | u := us[i], | |
547 | encodingType:="UTF-16BE", | |
548 | expectedResult := os[i] | |
549 | ) | |
550 | } | |
551 | } | |
552 | ||
553 | testcase tc_unichar2oct_utf16LE_upperplane_longer() runs on MTC { | |
554 | var RoUCS us := { | |
555 | char(0,1,0,0) & char(0,1,0,175) & char(0,1,255,255), | |
556 | char(0,2,0,0) & char(0,2,0,175) & char(0,2,255,255), | |
557 | char(0,3,0,0) & char(0,3,0,175) & char(0,3,255,255), | |
558 | char(0,15,0,0)& char(0,15,0,175)& char(0,15,255,255), | |
559 | char(0,16,0,0)& char(0,16,0,175)& char(0,16,255,255), | |
560 | char(0,16,0,0) & char(0,0,0,1) & " " | |
561 | }; | |
562 | var RoOS os := { | |
563 | c_BOM_UTF16BE &'D800DC00'O &'D800DCAF'O &'D83FDFFF'O, | |
564 | c_BOM_UTF16BE &'D840DC00'O &'D840DCAF'O &'D87FDFFF'O, | |
565 | c_BOM_UTF16BE &'D880DC00'O &'D880DCAF'O &'D8BFDFFF'O, | |
566 | c_BOM_UTF16BE &'DB80DC00'O &'DB80DCAF'O &'DBBFDFFF'O, | |
567 | c_BOM_UTF16BE &'DBC0DC00'O &'DBC0DCAF'O &'DBFFDFFF'O, | |
568 | c_BOM_UTF16BE &'DBC0DC00'O &'0001'O &'0020'O | |
569 | } | |
570 | var integer len:=lengthof(us); | |
571 | ||
572 | for(var integer i:=0;i<len;i:=i+1) { | |
573 | f_changeOrder(os[i]); | |
574 | f_unichar2oct_positivetest( | |
575 | u := us[i], | |
576 | encodingType:="UTF-16LE", | |
577 | expectedResult := os[i] | |
578 | ) | |
579 | } | |
580 | } | |
581 | ||
582 | testcase tc_unichar2oct_utf16_toobigplanes() runs on MTC { | |
583 | var RoUCS us := { | |
584 | char(0,17,0,0), char(0,17,0,175), char(0,17,255,255), | |
585 | char(0,18,0,0), char(0,18,0,175), char(0,18,255,255), | |
586 | char(0,19,0,0), char(0,19,0,175), char(0,19,255,255), | |
587 | char(0,20,0,0), char(0,20,0,175), char(0,20,255,255), | |
588 | char(127,255,0,0), char(127,255,255,175), char(127,255,255,255) | |
589 | }; | |
590 | ||
591 | var integer len:=lengthof(us); | |
592 | ||
593 | for(var integer i:=0;i<len;i:=i+1) { | |
594 | ||
595 | f_unichar2oct_negativetest( | |
596 | u := us[i], | |
597 | encodingType:="UTF-16", | |
598 | expectedError:="" | |
599 | ) | |
600 | } | |
601 | } | |
602 | ||
603 | testcase tc_unichar2oct_utf16BE_toobigplanes() runs on MTC { | |
604 | var RoUCS us := { | |
605 | char(0,17,0,0), char(0,17,0,175), char(0,17,255,255), | |
606 | char(0,18,0,0), char(0,18,0,175), char(0,18,255,255), | |
607 | char(0,19,0,0), char(0,19,0,175), char(0,19,255,255), | |
608 | char(0,20,0,0), char(0,20,0,175), char(0,20,255,255), | |
609 | char(127,255,0,0), char(127,255,255,175), char(127,255,255,255) | |
610 | }; | |
611 | ||
612 | var integer len:=lengthof(us); | |
613 | ||
614 | for(var integer i:=0;i<len;i:=i+1) { | |
615 | ||
616 | f_unichar2oct_negativetest( | |
617 | u := us[i], | |
618 | encodingType:="UTF-16BE", | |
619 | expectedError:="" | |
620 | ) | |
621 | } | |
622 | } | |
623 | ||
624 | testcase tc_unichar2oct_utf16LE_toobigplanes() runs on MTC { | |
625 | var RoUCS us := { | |
626 | char(0,17,0,0), char(0,17,0,175), char(0,17,255,255), | |
627 | char(0,18,0,0), char(0,18,0,175), char(0,18,255,255), | |
628 | char(0,19,0,0), char(0,19,0,175), char(0,19,255,255), | |
629 | char(0,20,0,0), char(0,20,0,175), char(0,20,255,255), | |
630 | char(127,255,0,0), char(127,255,255,175), char(127,255,255,255) | |
631 | }; | |
632 | ||
633 | var integer len:=lengthof(us); | |
634 | ||
635 | for(var integer i:=0;i<len;i:=i+1) { | |
636 | ||
637 | f_unichar2oct_negativetest( | |
638 | u := us[i], | |
639 | encodingType:="UTF-16LE", | |
640 | expectedError:="" | |
641 | ) | |
642 | } | |
643 | } | |
644 | testcase tc_remove_bom_utf16() runs on MTC { | |
645 | var octetstring o1:= 'EFBBBF7F'O; | |
646 | var octetstring o2:= remove_bom(o1); | |
647 | if( o2 == '7F'O) { | |
648 | setverdict(pass); | |
649 | } else { | |
650 | setverdict(fail); | |
651 | } | |
652 | } | |
653 | ||
654 | control{ | |
655 | ||
656 | execute(tc_get_stringencoding_UTF16()); | |
657 | //execute(tc_get_stringencoding_UTF16_buggy()); | |
658 | execute(tc_oct2unichar_UTF16_negative_01()); | |
659 | execute(tc_oct2unichar_UTF16_negative_D800()); | |
660 | execute(tc_oct2unichar_UTF16_negative_D80000()); | |
661 | execute(tc_oct2unichar_UTF16_negative_D8000000()); | |
662 | execute(tc_oct2unichar_UTF16_negative_toobig()) | |
663 | execute(tc_oct2unichar_UTF16_BMP()); | |
664 | execute(tc_oct2unichar_UTF16BE_BMP()); | |
665 | execute(tc_oct2unichar_UTF16LE_BMP()); | |
666 | execute(tc_oct2unichar_UTF16_Z()); | |
667 | execute(tc_oct2unichar_UTF16BE_Z()); | |
668 | execute(tc_oct2unichar_UTF16LE_Z()); | |
669 | execute(tc_oct2unichar_UTF16_water()); | |
670 | execute(tc_oct2unichar_UTF16_linearb()); | |
671 | ||
672 | execute(tc_unichar2oct_positive1()); | |
673 | execute(tc_unichar2oct_positive2()); | |
674 | execute(tc_unichar2oct_0to80()); | |
675 | ||
676 | execute(tc_unichar2octAndReverse_0toD7FF()); | |
677 | execute(tc_unichar2octAndReverse_E000toFFFF()); | |
678 | execute(tc_unichar2octAndReverse_10000to10FFFF()); | |
679 | execute(tc_unichar2oct_utf16_0toD7FF()); | |
680 | execute(tc_unichar2oct_utf16_asciistring()); | |
681 | execute(tc_unichar2oct_utf16BE_asciistring()); | |
682 | execute(tc_unichar2oct_utf16LE_asciistring()); | |
683 | execute(tc_unichar2oct_utf16_asciistring1()); | |
684 | execute(tc_unichar2oct_utf16BE_asciistring1()); | |
685 | execute(tc_unichar2oct_utf16LE_asciistring1()); | |
686 | execute(tc_unichar2oct_utf16_upperplanes()); | |
687 | execute(tc_unichar2oct_utf16BE_upperplanes()); | |
688 | execute(tc_unichar2oct_utf16LE_upperplanes()); | |
689 | execute(tc_remove_bom_utf16()); | |
690 | } | |
691 | } |