1*0e209d39SAndroid Build Coastguard Worker // © 2016 and later: Unicode, Inc. and others.
2*0e209d39SAndroid Build Coastguard Worker // License & terms of use: http://www.unicode.org/copyright.html
3*0e209d39SAndroid Build Coastguard Worker /********************************************************************
4*0e209d39SAndroid Build Coastguard Worker * COPYRIGHT:
5*0e209d39SAndroid Build Coastguard Worker * Copyright (c) 2000-2016, International Business Machines Corporation and
6*0e209d39SAndroid Build Coastguard Worker * others. All Rights Reserved.
7*0e209d39SAndroid Build Coastguard Worker ********************************************************************/
8*0e209d39SAndroid Build Coastguard Worker /*
9*0e209d39SAndroid Build Coastguard Worker * File stdnmtst.c
10*0e209d39SAndroid Build Coastguard Worker *
11*0e209d39SAndroid Build Coastguard Worker * Modification History:
12*0e209d39SAndroid Build Coastguard Worker *
13*0e209d39SAndroid Build Coastguard Worker * Date Name Description
14*0e209d39SAndroid Build Coastguard Worker * 08/05/2000 Yves Creation
15*0e209d39SAndroid Build Coastguard Worker ******************************************************************************
16*0e209d39SAndroid Build Coastguard Worker */
17*0e209d39SAndroid Build Coastguard Worker
18*0e209d39SAndroid Build Coastguard Worker #include "unicode/ucnv.h"
19*0e209d39SAndroid Build Coastguard Worker #include "unicode/ustring.h"
20*0e209d39SAndroid Build Coastguard Worker #include "cmemory.h"
21*0e209d39SAndroid Build Coastguard Worker #include "cstring.h"
22*0e209d39SAndroid Build Coastguard Worker #include "cintltst.h"
23*0e209d39SAndroid Build Coastguard Worker
24*0e209d39SAndroid Build Coastguard Worker static void TestStandardName(void);
25*0e209d39SAndroid Build Coastguard Worker static void TestStandardNames(void);
26*0e209d39SAndroid Build Coastguard Worker static void TestCanonicalName(void);
27*0e209d39SAndroid Build Coastguard Worker
28*0e209d39SAndroid Build Coastguard Worker void addStandardNamesTest(TestNode** root);
29*0e209d39SAndroid Build Coastguard Worker
30*0e209d39SAndroid Build Coastguard Worker
31*0e209d39SAndroid Build Coastguard Worker void
addStandardNamesTest(TestNode ** root)32*0e209d39SAndroid Build Coastguard Worker addStandardNamesTest(TestNode** root)
33*0e209d39SAndroid Build Coastguard Worker {
34*0e209d39SAndroid Build Coastguard Worker addTest(root, &TestStandardName, "tsconv/stdnmtst/TestStandardName");
35*0e209d39SAndroid Build Coastguard Worker addTest(root, &TestStandardNames, "tsconv/stdnmtst/TestStandardNames");
36*0e209d39SAndroid Build Coastguard Worker addTest(root, &TestCanonicalName, "tsconv/stdnmtst/TestCanonicalName");
37*0e209d39SAndroid Build Coastguard Worker }
38*0e209d39SAndroid Build Coastguard Worker
dotestname(const char * name,const char * standard,const char * expected)39*0e209d39SAndroid Build Coastguard Worker static int dotestname(const char *name, const char *standard, const char *expected) {
40*0e209d39SAndroid Build Coastguard Worker int res = 1;
41*0e209d39SAndroid Build Coastguard Worker
42*0e209d39SAndroid Build Coastguard Worker UErrorCode error;
43*0e209d39SAndroid Build Coastguard Worker const char *tag;
44*0e209d39SAndroid Build Coastguard Worker
45*0e209d39SAndroid Build Coastguard Worker error = U_ZERO_ERROR;
46*0e209d39SAndroid Build Coastguard Worker tag = ucnv_getStandardName(name, standard, &error);
47*0e209d39SAndroid Build Coastguard Worker if (!tag && expected) {
48*0e209d39SAndroid Build Coastguard Worker log_err_status(error, "FAIL: could not find %s standard name for %s\n", standard, name);
49*0e209d39SAndroid Build Coastguard Worker res = 0;
50*0e209d39SAndroid Build Coastguard Worker } else if (expected && (name == tag || uprv_strcmp(expected, tag))) {
51*0e209d39SAndroid Build Coastguard Worker log_err("FAIL: expected %s for %s standard name for %s, got %s\n", expected, standard, name, tag);
52*0e209d39SAndroid Build Coastguard Worker res = 0;
53*0e209d39SAndroid Build Coastguard Worker }
54*0e209d39SAndroid Build Coastguard Worker
55*0e209d39SAndroid Build Coastguard Worker return res;
56*0e209d39SAndroid Build Coastguard Worker }
57*0e209d39SAndroid Build Coastguard Worker
TestStandardName(void)58*0e209d39SAndroid Build Coastguard Worker static void TestStandardName(void)
59*0e209d39SAndroid Build Coastguard Worker {
60*0e209d39SAndroid Build Coastguard Worker int res = 1;
61*0e209d39SAndroid Build Coastguard Worker
62*0e209d39SAndroid Build Coastguard Worker uint16_t i, count;
63*0e209d39SAndroid Build Coastguard Worker UErrorCode err;
64*0e209d39SAndroid Build Coastguard Worker
65*0e209d39SAndroid Build Coastguard Worker /* Iterate over all standards. */
66*0e209d39SAndroid Build Coastguard Worker for (i = 0, count = ucnv_countStandards(); i < count-1; ++i) {
67*0e209d39SAndroid Build Coastguard Worker const char *standard;
68*0e209d39SAndroid Build Coastguard Worker
69*0e209d39SAndroid Build Coastguard Worker err = U_ZERO_ERROR;
70*0e209d39SAndroid Build Coastguard Worker standard = ucnv_getStandard(i, &err);
71*0e209d39SAndroid Build Coastguard Worker if (U_FAILURE(err)) {
72*0e209d39SAndroid Build Coastguard Worker log_err("FAIL: ucnv_getStandard(%d), error=%s\n", i, u_errorName(err));
73*0e209d39SAndroid Build Coastguard Worker res = 0;
74*0e209d39SAndroid Build Coastguard Worker } else if (!standard || !*standard) {
75*0e209d39SAndroid Build Coastguard Worker log_err("FAIL: %s standard name at index %d\n", (standard ? "empty" :
76*0e209d39SAndroid Build Coastguard Worker "null"), i);
77*0e209d39SAndroid Build Coastguard Worker res = 0;
78*0e209d39SAndroid Build Coastguard Worker }
79*0e209d39SAndroid Build Coastguard Worker }
80*0e209d39SAndroid Build Coastguard Worker err = U_ZERO_ERROR;
81*0e209d39SAndroid Build Coastguard Worker /* "" must be last */
82*0e209d39SAndroid Build Coastguard Worker if(!count) {
83*0e209d39SAndroid Build Coastguard Worker log_data_err("No standards. You probably have no data.\n");
84*0e209d39SAndroid Build Coastguard Worker } else if (*ucnv_getStandard((uint16_t)(count-1), &err) != 0) {
85*0e209d39SAndroid Build Coastguard Worker log_err("FAIL: ucnv_getStandard(%d) should return ""\n", count-1);
86*0e209d39SAndroid Build Coastguard Worker res = 0;
87*0e209d39SAndroid Build Coastguard Worker }
88*0e209d39SAndroid Build Coastguard Worker err = U_ZERO_ERROR;
89*0e209d39SAndroid Build Coastguard Worker if (ucnv_getStandard(++i, &err)) {
90*0e209d39SAndroid Build Coastguard Worker log_err("FAIL: ucnv_getStandard(%d) should return NULL\n", i);
91*0e209d39SAndroid Build Coastguard Worker res = 0;
92*0e209d39SAndroid Build Coastguard Worker }
93*0e209d39SAndroid Build Coastguard Worker
94*0e209d39SAndroid Build Coastguard Worker if (res) {
95*0e209d39SAndroid Build Coastguard Worker log_verbose("PASS: iterating over standard names works\n");
96*0e209d39SAndroid Build Coastguard Worker }
97*0e209d39SAndroid Build Coastguard Worker
98*0e209d39SAndroid Build Coastguard Worker /* Test for some expected results. */
99*0e209d39SAndroid Build Coastguard Worker
100*0e209d39SAndroid Build Coastguard Worker if (dotestname("ibm-1208", "MIME", "UTF-8") &&
101*0e209d39SAndroid Build Coastguard Worker /*dotestname("cp1252", "MIME", "windows-1252") &&*/
102*0e209d39SAndroid Build Coastguard Worker dotestname("ascii", "MIME", "US-ASCII") &&
103*0e209d39SAndroid Build Coastguard Worker dotestname("csiso2022jp2", "MIME", "ISO-2022-JP-2") &&
104*0e209d39SAndroid Build Coastguard Worker dotestname("Iso20-22__cN", "IANA", "ISO-2022-CN") &&
105*0e209d39SAndroid Build Coastguard Worker dotestname("ascii", "IANA", "ANSI_X3.4-1968") &&
106*0e209d39SAndroid Build Coastguard Worker dotestname("cp850", "IANA", "IBM850") &&
107*0e209d39SAndroid Build Coastguard Worker dotestname("crazy", "MIME", NULL) &&
108*0e209d39SAndroid Build Coastguard Worker dotestname("ASCII", "crazy", NULL) &&
109*0e209d39SAndroid Build Coastguard Worker dotestname("LMBCS-1", "MIME", NULL))
110*0e209d39SAndroid Build Coastguard Worker {
111*0e209d39SAndroid Build Coastguard Worker log_verbose("PASS: getting IANA and MIME standard names works\n");
112*0e209d39SAndroid Build Coastguard Worker }
113*0e209d39SAndroid Build Coastguard Worker }
114*0e209d39SAndroid Build Coastguard Worker
dotestconv(const char * name,const char * standard,const char * expected)115*0e209d39SAndroid Build Coastguard Worker static int dotestconv(const char *name, const char *standard, const char *expected) {
116*0e209d39SAndroid Build Coastguard Worker int res = 1;
117*0e209d39SAndroid Build Coastguard Worker
118*0e209d39SAndroid Build Coastguard Worker UErrorCode error;
119*0e209d39SAndroid Build Coastguard Worker const char *tag;
120*0e209d39SAndroid Build Coastguard Worker
121*0e209d39SAndroid Build Coastguard Worker error = U_ZERO_ERROR;
122*0e209d39SAndroid Build Coastguard Worker tag = ucnv_getCanonicalName(name, standard, &error);
123*0e209d39SAndroid Build Coastguard Worker if (tag && !expected) {
124*0e209d39SAndroid Build Coastguard Worker log_err("FAIL: Unexpectedly found %s canonical name for %s, got %s\n", standard, name, tag);
125*0e209d39SAndroid Build Coastguard Worker res = 0;
126*0e209d39SAndroid Build Coastguard Worker }
127*0e209d39SAndroid Build Coastguard Worker else if (!tag && expected) {
128*0e209d39SAndroid Build Coastguard Worker log_err_status(error, "FAIL: could not find %s canonical name for %s\n", (standard ? "\"\"" : standard), name);
129*0e209d39SAndroid Build Coastguard Worker res = 0;
130*0e209d39SAndroid Build Coastguard Worker }
131*0e209d39SAndroid Build Coastguard Worker else if (expected && (name == tag || uprv_strcmp(expected, tag) != 0)) {
132*0e209d39SAndroid Build Coastguard Worker log_err("FAIL: expected %s for %s canonical name for %s, got %s\n", expected, standard, name, tag);
133*0e209d39SAndroid Build Coastguard Worker res = 0;
134*0e209d39SAndroid Build Coastguard Worker }
135*0e209d39SAndroid Build Coastguard Worker else {
136*0e209d39SAndroid Build Coastguard Worker log_verbose("PASS: (\"%s\", \"%s\") -> %s == %s \n", name, standard, tag, expected);
137*0e209d39SAndroid Build Coastguard Worker }
138*0e209d39SAndroid Build Coastguard Worker
139*0e209d39SAndroid Build Coastguard Worker return res;
140*0e209d39SAndroid Build Coastguard Worker }
141*0e209d39SAndroid Build Coastguard Worker
TestCanonicalName(void)142*0e209d39SAndroid Build Coastguard Worker static void TestCanonicalName(void)
143*0e209d39SAndroid Build Coastguard Worker {
144*0e209d39SAndroid Build Coastguard Worker /* Test for some expected results. */
145*0e209d39SAndroid Build Coastguard Worker
146*0e209d39SAndroid Build Coastguard Worker if (dotestconv("UTF-8", "IANA", "UTF-8") && /* default name */
147*0e209d39SAndroid Build Coastguard Worker dotestconv("UTF-8", "MIME", "UTF-8") && /* default name */
148*0e209d39SAndroid Build Coastguard Worker dotestconv("ibm-1208", "IBM", "UTF-8") && /* default name */
149*0e209d39SAndroid Build Coastguard Worker dotestconv("ibm-5305", "IBM", "UTF-8") && /* non-default name */
150*0e209d39SAndroid Build Coastguard Worker dotestconv("ibm-5305", "MIME", NULL) && /* mapping does not exist */
151*0e209d39SAndroid Build Coastguard Worker dotestconv("ascii", "MIME", NULL) && /* mapping does not exist */
152*0e209d39SAndroid Build Coastguard Worker dotestconv("ibm-1208", "IANA", NULL) && /* mapping does not exist */
153*0e209d39SAndroid Build Coastguard Worker dotestconv("ibm-5305", "IANA", NULL) && /* mapping does not exist */
154*0e209d39SAndroid Build Coastguard Worker dotestconv("cp1208", "", "UTF-8") && /* default name due to ordering */
155*0e209d39SAndroid Build Coastguard Worker dotestconv("UTF16_BigEndian", "", "UTF-16BE") && /* non-default name due to ordering */
156*0e209d39SAndroid Build Coastguard Worker dotestconv("ISO-2022-CN", "IANA", "ISO_2022,locale=zh,version=0") &&/* default name */
157*0e209d39SAndroid Build Coastguard Worker dotestconv("Shift_JIS", "MIME", "ibm-943_P15A-2003") &&/* ambiguous alias */
158*0e209d39SAndroid Build Coastguard Worker dotestconv("Shift_JIS", "", "ibm-943_P130-1999") &&/* ambiguous alias */
159*0e209d39SAndroid Build Coastguard Worker dotestconv("ibm-943", "", "ibm-943_P15A-2003") &&/* ambiguous alias */
160*0e209d39SAndroid Build Coastguard Worker dotestconv("ibm-943", "IBM", "ibm-943_P130-1999") &&/* ambiguous alias */
161*0e209d39SAndroid Build Coastguard Worker dotestconv("ibm-1363", "", "ibm-1363_P11B-1998") &&/* ambiguous alias */
162*0e209d39SAndroid Build Coastguard Worker dotestconv("ibm-1363", "IBM", "ibm-1363_P110-1997") &&/* ambiguous alias */
163*0e209d39SAndroid Build Coastguard Worker dotestconv("crazy", "MIME", NULL) &&
164*0e209d39SAndroid Build Coastguard Worker dotestconv("ASCII", "crazy", NULL))
165*0e209d39SAndroid Build Coastguard Worker {
166*0e209d39SAndroid Build Coastguard Worker log_verbose("PASS: getting IANA and MIME canonical names works\n");
167*0e209d39SAndroid Build Coastguard Worker }
168*0e209d39SAndroid Build Coastguard Worker }
169*0e209d39SAndroid Build Coastguard Worker
170*0e209d39SAndroid Build Coastguard Worker
doTestNames(const char * name,const char * standard,const char ** expected,int32_t size)171*0e209d39SAndroid Build Coastguard Worker static UBool doTestNames(const char *name, const char *standard, const char **expected, int32_t size) {
172*0e209d39SAndroid Build Coastguard Worker UErrorCode err = U_ZERO_ERROR;
173*0e209d39SAndroid Build Coastguard Worker UEnumeration *myEnum = ucnv_openStandardNames(name, standard, &err);
174*0e209d39SAndroid Build Coastguard Worker const char *enumName, *testName;
175*0e209d39SAndroid Build Coastguard Worker int32_t enumCount = uenum_count(myEnum, &err);
176*0e209d39SAndroid Build Coastguard Worker int32_t idx, len, repeatTimes = 3;
177*0e209d39SAndroid Build Coastguard Worker
178*0e209d39SAndroid Build Coastguard Worker if (err == U_FILE_ACCESS_ERROR) {
179*0e209d39SAndroid Build Coastguard Worker log_data_err("Unable to open standard names for %s of standard: %s\n", name, standard);
180*0e209d39SAndroid Build Coastguard Worker return 0;
181*0e209d39SAndroid Build Coastguard Worker }
182*0e209d39SAndroid Build Coastguard Worker if (size != enumCount) {
183*0e209d39SAndroid Build Coastguard Worker log_err("FAIL: different size arrays for %s. Got %d. Expected %d\n", name, enumCount, size);
184*0e209d39SAndroid Build Coastguard Worker return 0;
185*0e209d39SAndroid Build Coastguard Worker }
186*0e209d39SAndroid Build Coastguard Worker if (size < 0 && myEnum) {
187*0e209d39SAndroid Build Coastguard Worker log_err("FAIL: size < 0, but received an actual object\n");
188*0e209d39SAndroid Build Coastguard Worker return 0;
189*0e209d39SAndroid Build Coastguard Worker }
190*0e209d39SAndroid Build Coastguard Worker log_verbose("\n%s %s\n", name, standard);
191*0e209d39SAndroid Build Coastguard Worker while (repeatTimes-- > 0) {
192*0e209d39SAndroid Build Coastguard Worker for (idx = 0; idx < enumCount; idx++) {
193*0e209d39SAndroid Build Coastguard Worker enumName = uenum_next(myEnum, &len, &err);
194*0e209d39SAndroid Build Coastguard Worker testName = expected[idx];
195*0e209d39SAndroid Build Coastguard Worker if (uprv_strcmp(enumName, testName) != 0 || U_FAILURE(err)
196*0e209d39SAndroid Build Coastguard Worker || len != (int32_t)uprv_strlen(expected[idx]))
197*0e209d39SAndroid Build Coastguard Worker {
198*0e209d39SAndroid Build Coastguard Worker log_err("FAIL: uenum_next(%d) == \"%s\". expected \"%s\", len=%d, error=%s\n",
199*0e209d39SAndroid Build Coastguard Worker idx, enumName, testName, len, u_errorName(err));
200*0e209d39SAndroid Build Coastguard Worker }
201*0e209d39SAndroid Build Coastguard Worker log_verbose("%s\n", enumName);
202*0e209d39SAndroid Build Coastguard Worker err = U_ZERO_ERROR;
203*0e209d39SAndroid Build Coastguard Worker }
204*0e209d39SAndroid Build Coastguard Worker if (enumCount >= 0) {
205*0e209d39SAndroid Build Coastguard Worker /* one past the list of all names must return NULL */
206*0e209d39SAndroid Build Coastguard Worker enumName = uenum_next(myEnum, &len, &err);
207*0e209d39SAndroid Build Coastguard Worker if (enumName != NULL || len != 0 || U_FAILURE(err)) {
208*0e209d39SAndroid Build Coastguard Worker log_err("FAIL: uenum_next(past the list) did not return NULL[0] with U_SUCCESS(). name=%s standard=%s len=%d err=%s\n", name, standard, len, u_errorName(err));
209*0e209d39SAndroid Build Coastguard Worker }
210*0e209d39SAndroid Build Coastguard Worker }
211*0e209d39SAndroid Build Coastguard Worker log_verbose("\n reset\n");
212*0e209d39SAndroid Build Coastguard Worker uenum_reset(myEnum, &err);
213*0e209d39SAndroid Build Coastguard Worker if (U_FAILURE(err)) {
214*0e209d39SAndroid Build Coastguard Worker log_err("FAIL: uenum_reset() for %s{%s} failed with %s\n",
215*0e209d39SAndroid Build Coastguard Worker name, standard, u_errorName(err));
216*0e209d39SAndroid Build Coastguard Worker err = U_ZERO_ERROR;
217*0e209d39SAndroid Build Coastguard Worker }
218*0e209d39SAndroid Build Coastguard Worker }
219*0e209d39SAndroid Build Coastguard Worker uenum_close(myEnum);
220*0e209d39SAndroid Build Coastguard Worker return 1;
221*0e209d39SAndroid Build Coastguard Worker }
222*0e209d39SAndroid Build Coastguard Worker
doTestUCharNames(const char * name,const char * standard,const char ** expected,int32_t size)223*0e209d39SAndroid Build Coastguard Worker static UBool doTestUCharNames(const char *name, const char *standard, const char **expected, int32_t size) {
224*0e209d39SAndroid Build Coastguard Worker UErrorCode err = U_ZERO_ERROR;
225*0e209d39SAndroid Build Coastguard Worker UEnumeration *myEnum = ucnv_openStandardNames(name, standard, &err);
226*0e209d39SAndroid Build Coastguard Worker int32_t enumCount = uenum_count(myEnum, &err);
227*0e209d39SAndroid Build Coastguard Worker int32_t idx, repeatTimes = 3;
228*0e209d39SAndroid Build Coastguard Worker
229*0e209d39SAndroid Build Coastguard Worker if (err == U_FILE_ACCESS_ERROR) {
230*0e209d39SAndroid Build Coastguard Worker log_data_err("Unable to open standard names for %s of standard: %s\n", name, standard);
231*0e209d39SAndroid Build Coastguard Worker return 0;
232*0e209d39SAndroid Build Coastguard Worker }
233*0e209d39SAndroid Build Coastguard Worker
234*0e209d39SAndroid Build Coastguard Worker if (size != enumCount) {
235*0e209d39SAndroid Build Coastguard Worker log_err("FAIL: different size arrays. Got %d. Expected %d\n", enumCount, size);
236*0e209d39SAndroid Build Coastguard Worker return 0;
237*0e209d39SAndroid Build Coastguard Worker }
238*0e209d39SAndroid Build Coastguard Worker if (size < 0 && myEnum) {
239*0e209d39SAndroid Build Coastguard Worker log_err("FAIL: size < 0, but received an actual object\n");
240*0e209d39SAndroid Build Coastguard Worker return 0;
241*0e209d39SAndroid Build Coastguard Worker }
242*0e209d39SAndroid Build Coastguard Worker log_verbose("\n%s %s\n", name, standard);
243*0e209d39SAndroid Build Coastguard Worker while (repeatTimes-- > 0) {
244*0e209d39SAndroid Build Coastguard Worker for (idx = 0; idx < enumCount; idx++) {
245*0e209d39SAndroid Build Coastguard Worker UChar testName[256];
246*0e209d39SAndroid Build Coastguard Worker int32_t len;
247*0e209d39SAndroid Build Coastguard Worker const UChar *enumName = uenum_unext(myEnum, &len, &err);
248*0e209d39SAndroid Build Coastguard Worker u_uastrncpy(testName, expected[idx], UPRV_LENGTHOF(testName));
249*0e209d39SAndroid Build Coastguard Worker if (u_strcmp(enumName, testName) != 0 || U_FAILURE(err)
250*0e209d39SAndroid Build Coastguard Worker || len != (int32_t)uprv_strlen(expected[idx]))
251*0e209d39SAndroid Build Coastguard Worker {
252*0e209d39SAndroid Build Coastguard Worker log_err("FAIL: uenum_next(%d) == \"%s\". expected \"%s\", len=%d, error=%s\n",
253*0e209d39SAndroid Build Coastguard Worker idx, enumName, testName, len, u_errorName(err));
254*0e209d39SAndroid Build Coastguard Worker }
255*0e209d39SAndroid Build Coastguard Worker log_verbose("%s\n", expected[idx]);
256*0e209d39SAndroid Build Coastguard Worker err = U_ZERO_ERROR;
257*0e209d39SAndroid Build Coastguard Worker }
258*0e209d39SAndroid Build Coastguard Worker log_verbose("\n reset\n");
259*0e209d39SAndroid Build Coastguard Worker uenum_reset(myEnum, &err);
260*0e209d39SAndroid Build Coastguard Worker if (U_FAILURE(err)) {
261*0e209d39SAndroid Build Coastguard Worker log_err("FAIL: uenum_reset() for %s{%s} failed with %s\n",
262*0e209d39SAndroid Build Coastguard Worker name, standard, u_errorName(err));
263*0e209d39SAndroid Build Coastguard Worker err = U_ZERO_ERROR;
264*0e209d39SAndroid Build Coastguard Worker }
265*0e209d39SAndroid Build Coastguard Worker }
266*0e209d39SAndroid Build Coastguard Worker uenum_close(myEnum);
267*0e209d39SAndroid Build Coastguard Worker return 1;
268*0e209d39SAndroid Build Coastguard Worker }
269*0e209d39SAndroid Build Coastguard Worker
TestStandardNames(void)270*0e209d39SAndroid Build Coastguard Worker static void TestStandardNames(void)
271*0e209d39SAndroid Build Coastguard Worker {
272*0e209d39SAndroid Build Coastguard Worker static const char *asciiIANA[] = {
273*0e209d39SAndroid Build Coastguard Worker "ANSI_X3.4-1968",
274*0e209d39SAndroid Build Coastguard Worker "US-ASCII",
275*0e209d39SAndroid Build Coastguard Worker "ASCII",
276*0e209d39SAndroid Build Coastguard Worker "ANSI_X3.4-1986",
277*0e209d39SAndroid Build Coastguard Worker "ISO_646.irv:1991",
278*0e209d39SAndroid Build Coastguard Worker "ISO646-US",
279*0e209d39SAndroid Build Coastguard Worker "us",
280*0e209d39SAndroid Build Coastguard Worker "csASCII",
281*0e209d39SAndroid Build Coastguard Worker "iso-ir-6",
282*0e209d39SAndroid Build Coastguard Worker "cp367",
283*0e209d39SAndroid Build Coastguard Worker "IBM367",
284*0e209d39SAndroid Build Coastguard Worker };
285*0e209d39SAndroid Build Coastguard Worker static const char *asciiMIME[] = {
286*0e209d39SAndroid Build Coastguard Worker "US-ASCII"
287*0e209d39SAndroid Build Coastguard Worker };
288*0e209d39SAndroid Build Coastguard Worker
289*0e209d39SAndroid Build Coastguard Worker static const char *iso2022MIME[] = {
290*0e209d39SAndroid Build Coastguard Worker "ISO-2022-KR",
291*0e209d39SAndroid Build Coastguard Worker };
292*0e209d39SAndroid Build Coastguard Worker
293*0e209d39SAndroid Build Coastguard Worker doTestNames("ASCII", "IANA", asciiIANA, UPRV_LENGTHOF(asciiIANA));
294*0e209d39SAndroid Build Coastguard Worker doTestNames("US-ASCII", "IANA", asciiIANA, UPRV_LENGTHOF(asciiIANA));
295*0e209d39SAndroid Build Coastguard Worker doTestNames("ASCII", "MIME", asciiMIME, UPRV_LENGTHOF(asciiMIME));
296*0e209d39SAndroid Build Coastguard Worker doTestNames("ascii", "mime", asciiMIME, UPRV_LENGTHOF(asciiMIME));
297*0e209d39SAndroid Build Coastguard Worker
298*0e209d39SAndroid Build Coastguard Worker doTestNames("ASCII", "crazy", asciiMIME, -1);
299*0e209d39SAndroid Build Coastguard Worker doTestNames("crazy", "MIME", asciiMIME, -1);
300*0e209d39SAndroid Build Coastguard Worker
301*0e209d39SAndroid Build Coastguard Worker doTestNames("LMBCS-1", "MIME", asciiMIME, 0);
302*0e209d39SAndroid Build Coastguard Worker
303*0e209d39SAndroid Build Coastguard Worker doTestNames("ISO_2022,locale=ko,version=0", "MIME", iso2022MIME, UPRV_LENGTHOF(iso2022MIME));
304*0e209d39SAndroid Build Coastguard Worker doTestNames("csiso2022kr", "MIME", iso2022MIME, UPRV_LENGTHOF(iso2022MIME));
305*0e209d39SAndroid Build Coastguard Worker
306*0e209d39SAndroid Build Coastguard Worker log_verbose(" Testing unext()\n");
307*0e209d39SAndroid Build Coastguard Worker doTestUCharNames("ASCII", "IANA", asciiIANA, UPRV_LENGTHOF(asciiIANA));
308*0e209d39SAndroid Build Coastguard Worker
309*0e209d39SAndroid Build Coastguard Worker }
310