scuffed-code/icu4c/source/test/cintltst/eurocreg.c
Helena Chapman 3aaa52af8d ICU-161 updated the copyright notices.
X-SVN-Rev: 596
2000-01-15 02:00:06 +00:00

151 lines
2.9 KiB
C

/********************************************************************
* COPYRIGHT:
* Copyright (c) 1999, International Business Machines Corporation and
* others. All Rights Reserved.
********************************************************************/
#include "unicode/utypes.h"
#include "unicode/ustring.h"
#include "ctest.h"
#include "unicode/ucnv.h"
#include <stdio.h>
void TestEuroRegression(void);
void addTestEuroRegression(TestNode** root)
{
addTest(root, &TestEuroRegression, "tsconv/eurocreg/TestEuroRegression");
}
char convertersToCheck[][15] = {
"cp1250",
"cp1251",
"cp1252",
"cp1254",
"cp1255",
"cp1256",
"cp1257",
"cp1258",
"cp37",
"cp273",
"cp277",
"cp278",
"cp280",
"cp284",
"cp285",
"cp297",
"cp500",
"cp871",
"cp850",
"cp500",
"cp850",
"cp870",
"cp1026",
"cp857",
"cp1025",
"cp1123",
"cp1122",
"cp1112",
"cp424",
"cp803",
"cp862",
"cp9030",
"cp1130",
"cp1258",
"cp290",
"cp930",
"cp950",
"cp937",
"cp1253",
/* "cp819",
"cp13488",*/
"cp875",
"cp869",
"cp813",
"cp852",
"cp855",
"cp866",
"cp1131",
"cp1125",
"cp922",
"cp921",
"cp420",
"cp864",
"cp1008",
"cp1046",
/* "cp9066",
"cp1129",*/
"cp1027",
"cp300",
"cp939",
/* "cp4930",
"cp1364",*/
"cp1362",
"cp1363",
"cp1114",
"cp947",
"cp28709",
"cp835",
""};
bool_t isEuroAware(const UConverter*);
void TestEuroRegression()
{
int32_t i=0;
do
{
UErrorCode err = U_ZERO_ERROR;
UConverter* myConv = ucnv_open(convertersToCheck[i], &err);
if (U_FAILURE(err)&&convertersToCheck[i][0]) log_err("%s \tMISSING [%s]\n", convertersToCheck[i], u_errorName(err));
else
{
if (isEuroAware(myConv)) log_verbose("%s \tsupports euro\n", convertersToCheck[i]);
else log_err("%s \tDOES NOT support euro\n", convertersToCheck[i]);
ucnv_close(myConv);
}
} while (convertersToCheck[++i][0]);
}
bool_t isEuroAware(const UConverter* myConv)
{
static const UChar euroString[2] = { 0x20AC, 0x0000 };
char target[2];
UChar euroBack[2];
int32_t targetSize, euroBackSize;
UErrorCode err = U_ZERO_ERROR;
const char* myName = ucnv_getName(myConv, &err);
targetSize = ucnv_fromUChars(myConv,
target,
2,
euroString,
&err);
if (U_FAILURE(err))
{
log_err("Failure Occured in ucnv_fromUChars euro roundtrip test\n");
return FALSE;
}
euroBackSize = ucnv_toUChars(myConv,
euroBack,
2,
target,
targetSize,
&err);
if (U_FAILURE(err))
{
log_err("Failure Occured in ucnv_toUChars euro roundtrip test\n");
return FALSE;
}
if (u_strcmp(euroString, euroBack))
{
/* log_err("%s FAILED Euro rountrip\n", myName);*/
return FALSE;
}
else
{
/* log_verbose("%s PASSED Euro rountrip\n", myName);*/
return TRUE;
}
}