author | Pavel Heimlich <pavel.heimlich@oracle.com> |
Tue, 02 Nov 2010 11:29:20 +0100 | |
changeset 39 | 65491902381c |
child 41 | fb57b25feaf0 |
permissions | -rw-r--r-- |
39
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
1 |
/* |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
2 |
* 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
|
3 |
* This program tests whether a long converterName to the |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
4 |
* ucnv_createConverter() function would be okay or not. |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
5 |
* |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
6 |
* You can compile this by doing the following assuming that your |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
7 |
* system has the latest ICU packages installed: |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
8 |
* |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
9 |
* cc -o ucnv_toUChars-sparc ucnv_toUChars.c -licuuc -licui18n -licudata |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
10 |
*/ |
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 |
#include <stdio.h> |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
13 |
#include <stdlib.h> |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
14 |
#include <locale.h> |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
15 |
#include <unicode/utypes.h> |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
16 |
#include <unicode/ucnv.h> |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
17 |
#include <unicode/urename.h> |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
18 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
19 |
const char *converterName = "iso-2022-cn"; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
20 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
21 |
int |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
22 |
main(int ac, char **av) |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
23 |
{ |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
24 |
UErrorCode err = 0; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
25 |
UConverter *ucnv; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
26 |
UChar t[100]; |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
27 |
int32_t count; |
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 |
(void) setlocale(LC_ALL, ""); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
30 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
31 |
printf("Testing ISO-2022-CN ucnv_toUChar() with bad input buffer...\n"); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
32 |
printf("(There should be no core dump.)\n"); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
33 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
34 |
ucnv = ucnv_open(converterName, &err); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
35 |
printf("Converter id = %08x\n", ucnv); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
36 |
if (err == U_ILLEGAL_ARGUMENT_ERROR) { |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
37 |
printf("error -- the ucnv_open() failed. (%08x).\n", err); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
38 |
exit (-1); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
39 |
} |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
40 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
41 |
count = ucnv_toUChars(ucnv, t, 100, "mp NaKn>NaKn|Mqr'NaKo:r'Piano Rec", 40, &err); |
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 |
printf("Conversion finished with count: %d, err: 0x%x\n", count, err); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
44 |
if (err == 0x12) { |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
45 |
printf("Conversion done with proper error code.\n"); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
46 |
} else { |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
47 |
printf("Conversion done with IMPROPER error code - check it.\n"); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
48 |
} |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
49 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
50 |
|
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
51 |
(void) ucnv_close(ucnv); |
65491902381c
add internal tests for Oracle fixes/enhancements
Pavel Heimlich <pavel.heimlich@oracle.com>
parents:
diff
changeset
|
52 |
} |