scuffed-code/icu4c/source/test/cintltst/stdnmtst.c
George Rhoten 4791dec156 ICU-1717 Fix for STLPort
X-SVN-Rev: 8192
2002-03-22 02:26:29 +00:00

94 lines
2.5 KiB
C

/********************************************************************
* COPYRIGHT:
* Copyright (c) 2001, International Business Machines Corporation and
* others. All Rights Reserved.
********************************************************************/
/*
* File stdnmtst.c
*
* Modification History:
*
* Date Name Description
* 08/05/2000 Yves Creation
*******************************************************************************
*/
#include "unicode/ucnv.h"
#include "cstring.h"
#include "cintltst.h"
static void TestStandardNames(void);
void addStandardNamesTest(TestNode** root);
void
addStandardNamesTest(TestNode** root)
{
addTest(root, &TestStandardNames, "stdnmtst/TestStandardNames");
}
static int dotestname(const char *name, const char *standard, const char *expected) {
int res = 1;
UErrorCode error;
const char *tag;
error = U_ZERO_ERROR;
tag = ucnv_getStandardName(name, standard, &error);
if (!tag) {
log_err("FAIL: could not find %s standard name for %s\n", standard, name);
res = 0;
} else if (expected && uprv_stricmp(expected, tag)) {
log_err("FAIL: expected %s for %s standard name for %s, got %s\n", expected, standard, name, tag);
res = 0;
}
return res;
}
static void TestStandardNames()
{
int res = 1;
uint16_t i, count;
UErrorCode err;
/* Iterate over all standards. */
for (i = 0, count = ucnv_countStandards(); i < count; ++i) {
const char *standard;
err = U_ZERO_ERROR;
standard = ucnv_getStandard(i, &err);
if (U_FAILURE(err)) {
log_err("FAIL: ucnv_getStandard(%d), error=%s\n", i, u_errorName(err));
res = 0;
} else if (!standard || !*standard) {
log_err("FAIL: %s standard name at index %d\n", (standard ? "empty" :
"null"), i);
res = 0;
}
}
err = U_ZERO_ERROR;
if (ucnv_getStandard(i, &err)) {
log_err("FAIL: ucnv_getStandard(%d) should return NULL\n", i);
res = 0;
}
if (res) {
log_verbose("PASS: iterating over standard names works\n");
}
/* Test for some expected results. */
if (dotestname("ibm-1208", "MIME", "utf-8") &&
/*dotestname("cp1252", "MIME", "windows-1252") &&*/
dotestname("ascii", "MIME", "us-ascii") &&
dotestname("ascii", "IANA", "ANSI_X3.4-1968") &&
dotestname("cp850", "IANA", "IBM850")) {
log_verbose("PASS: getting IANA and MIME stadard names works\n");
}
}