/******************************************************************** * COPYRIGHT: * Copyright (c) 1999, International Business Machines Corporation and * others. All Rights Reserved. ********************************************************************/ #include "unicode/utypes.h" #include "unicode/ustring.h" #include "unicode/ctest.h" #include "unicode/ucnv.h" #include void TestEuroRegression(void); void addTestEuroRegression(TestNode** root) { addTest(root, &TestEuroRegression, "tsconv/eurocreg/TestEuroRegression"); } char convertersToCheck[][15] = { "cp1250", "cp1251", "cp1252", "cp1254", "cp1255", "cp1256", "cp1257", "cp1258", "ibm1140", "ibm1142", "ibm1143", "ibm1144", "ibm1145", "ibm1146", "ibm1147", "ibm1148", "ibm1149", "ibm1153", "ibm12712", "ibm16804", "cp850", "cp850", "cp1026", "cp857", "cp1025", "cp1123", "cp1122", "cp1112", "cp424", "cp803", "cp862", "cp9030", "cp1130", "cp1258", "cp950", "cp1253", /* "cp819", "cp13488",*/ "cp875", "cp869", "cp813", "cp852", "cp855", "cp866", "cp1131", "cp1125", "cp922", "cp921", "cp864", "cp1008", "cp1046", /* "cp9066", "cp1129",*/ "cp1027", "cp300", /* "cp4930", "cp1364",*/ "cp1362", "cp1363", "cp1114", "cp947", "cp28709", ""}; UBool 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]); } UBool 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, -1, &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; } }