author | Pavel Heimlich <pavel.heimlich@oracle.com> |
Tue, 02 Nov 2010 11:29:20 +0100 | |
changeset 39 | 65491902381c |
permissions | -rw-r--r-- |
39
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
1 |
// Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
2 |
#include <stdio.h> |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
3 |
#include <errno.h> |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
4 |
#include <string.h> |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
5 |
#include <stdlib.h> |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
6 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
7 |
#include <unicode/utypes.h> |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
8 |
#include <unicode/ucnv.h> |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
9 |
#include <unicode/unistr.h> |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
10 |
#include <unicode/translit.h> |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
11 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
12 |
main() |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
13 |
{ |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
14 |
UBool ret = TRUE; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
15 |
UConverter *convfrom = 0; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
16 |
UConverter *convto = 0; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
17 |
UErrorCode err = U_ZERO_ERROR; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
18 |
UBool flush; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
19 |
const char *cbufp; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
20 |
char *bufp; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
21 |
char *buf = 0; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
22 |
int i; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
23 |
int32_t len32; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
24 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
25 |
const UChar *unibufbp; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
26 |
UChar *unibufp; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
27 |
UChar *unibuf = 0; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
28 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
29 |
printf("Conversion testing for ISO-2022-KR:\n\n"); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
30 |
convto = ucnv_open("iso-2022-kr", &err); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
31 |
if (U_FAILURE(err)) { |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
32 |
fprintf(stderr, "ucnv_open error - exiting.\n"); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
33 |
exit(-1); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
34 |
} |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
35 |
buf = (char *)malloc(1024); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
36 |
memset(buf, 0, 1024); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
37 |
unibuf = (UChar *)malloc(sizeof(UChar) * 4); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
38 |
unibuf[0] = 0xac00; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
39 |
unibuf[1] = 0x000d; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
40 |
unibuf[2] = 0x000a; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
41 |
unibuf[3] = 0xac00; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
42 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
43 |
bufp = buf; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
44 |
unibufp = unibuf; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
45 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
46 |
printf("Checking ucnv_fromUnicode()...\n"); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
47 |
ucnv_fromUnicode(convto, &bufp, (const char *)bufp + 1024, |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
48 |
(const UChar **)&unibufp, |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
49 |
(const UChar *)unibuf + 4, |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
50 |
NULL, (1 > 0), &err); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
51 |
bufp += 15; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
52 |
unibufp = unibuf + 4; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
53 |
ucnv_fromUnicode(convto, &bufp, (const char *)bufp + 1024 - 15, |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
54 |
(const UChar **)&unibufp, |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
55 |
(const UChar *)unibufp, |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
56 |
NULL, (1 > 0), &err); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
57 |
if (U_FAILURE(err)) { |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
58 |
fprintf(stderr, "conversion error!\n"); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
59 |
exit(-1); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
60 |
} |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
61 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
62 |
for (i = 0; buf[i]; i++) |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
63 |
if (buf[i] == 0x1b) |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
64 |
printf("%3d %02x ESC\n", i, (unsigned char)buf[i]); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
65 |
else |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
66 |
printf("%3d %02x\n", i, (unsigned char)buf[i]); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
67 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
68 |
if (i > 0 && buf[i - 1] == 0x0f) |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
69 |
printf("Conversion ended with SI - success.\n"); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
70 |
else |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
71 |
printf("Conversion didn't ended with SI - failed.\n"); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
72 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
73 |
ucnv_resetFromUnicode(convto); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
74 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
75 |
memset(buf, 0, 1024); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
76 |
unibuf[0] = 0xac00; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
77 |
unibuf[1] = 0x000d; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
78 |
unibuf[2] = 0x000a; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
79 |
unibuf[3] = 0xac00; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
80 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
81 |
bufp = buf; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
82 |
unibufp = unibuf; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
83 |
printf("\nChecking ucnv_fromUChars()...\n"); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
84 |
len32 = ucnv_fromUChars(convto, bufp, 1024, unibufp, 4, &err); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
85 |
for (i = 0; len32 > i; i++) |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
86 |
if (buf[i] == 0x1b) |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
87 |
printf("%3d %02x ESC\n", i, (unsigned char)buf[i]); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
88 |
else |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
89 |
printf("%3d %02x\n", i, (unsigned char)buf[i]); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
90 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
91 |
if (i > 0 && buf[i - 1] == 0x0f) |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
92 |
printf("Conversion ended with SI - success.\n"); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
93 |
else |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
94 |
printf("Conversion didn't ended with SI - failed.\n"); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
95 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
96 |
if (convto) ucnv_close(convto); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
97 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
98 |
if (buf) delete[] buf; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
99 |
if (unibuf) delete[] unibuf; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
100 |
} |