void Win32NumberTest::testLocales(TestLog *log) { int32_t lcidCount = 0; Win32Utilities::LCIDRecord *lcidRecords = Win32Utilities::getLocales(lcidCount); for(int i = 0; i < lcidCount; i += 1) { UErrorCode status = U_ZERO_ERROR; char localeID[128]; // NULL localeID means ICU didn't recognize the lcid if (lcidRecords[i].localeID == NULL) { continue; } strcpy(localeID, lcidRecords[i].localeID); if (strchr(localeID, '@') > 0) { strcat(localeID, ";"); } else { strcat(localeID, "@"); } strcat(localeID, "compat=host"); Locale ulocale(localeID); NumberFormat *wnf = NumberFormat::createInstance(ulocale, status); NumberFormat *wcf = NumberFormat::createCurrencyInstance(ulocale, status); testLocale(lcidRecords[i].localeID, lcidRecords[i].lcid, wnf, FALSE, log); testLocale(lcidRecords[i].localeID, lcidRecords[i].lcid, wcf, TRUE, log); #if 0 char *old_locale = strdup(setlocale(LC_ALL, NULL)); setlocale(LC_ALL, "German"); testLocale(lcidRecords[i].localeID, lcidRecords[i].lcid, wnf, FALSE, log); testLocale(lcidRecords[i].localeID, lcidRecords[i].lcid, wcf, TRUE, log); setlocale(LC_ALL, old_locale); free(old_locale); #endif delete wcf; delete wnf; } Win32Utilities::freeLocales(lcidRecords); }
void IntlTestNumberFormat::monsterTest(/* char* par */) { const char *SEP = "============================================================\n"; int32_t count; const Locale* allLocales = NumberFormat::getAvailableLocales(count); Locale* locales = (Locale*)allLocales; Locale quickLocales[6]; if (allLocales && count) { if (quick && count > 6) { logln("quick test: testing just 6 locales!"); count = 6; locales = quickLocales; locales[0] = allLocales[0]; locales[1] = allLocales[1]; locales[2] = allLocales[2]; // In a quick test, make sure we test locales that use // currency prefix, currency suffix, and choice currency // logic. Otherwise bugs in these areas can slip through. locales[3] = Locale("ar", "AE", ""); locales[4] = Locale("cs", "CZ", ""); locales[5] = Locale("en", "IN", ""); } for (int32_t i=0; i<count; ++i) { UnicodeString name(locales[i].getName(), ""); logln(SEP); testLocale(/* par, */locales[i], name); } } logln(SEP); }
void IntlTestDateFormat::monsterTest(/*char *par*/) { int32_t count; const Locale* locales = DateFormat::getAvailableLocales(count); if (locales && count) { if (quick && count > 3) { logln("quick test: testing just 3 locales!"); count = 3; } for (int32_t i=0; i<count; ++i) { UnicodeString name = UnicodeString(locales[i].getName(), ""); logln((UnicodeString)"Testing " + name + "..."); testLocale(/*par, */locales[i], name); } } }
// par is ignored throughout this file void IntlTestDateFormat::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ ) { if (exec) logln("TestSuite DateFormat"); switch (index) { case 0: name = "GenericTest"; if (exec) { logln(name); fFormat = DateFormat::createInstance(); fTestName = "createInstance"; fLimit = 3; testFormat(/* par */); } break; case 1: name = "DefaultLocale"; if (exec) { logln(name); testLocale(/*par, */Locale::getDefault(), "Default Locale"); } break; case 2: name = "TestAvailableLocales"; if (exec) { logln(name); testAvailableLocales(/* par */); } break; case 3: name = "MonsterTest"; if (exec) { logln(name); monsterTest(/*par*/); } break; default: name = ""; break; } }
/** * This test does round-trip testing (format -> parse -> format -> parse -> etc.) of * NumberFormat. */ void IntlTestNumberFormat::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ ) { if (exec) logln((UnicodeString)"TestSuite NumberFormat"); switch (index) { case 0: name = "createInstance"; if (exec) { logln(name); fStatus = U_ZERO_ERROR; fFormat = NumberFormat::createInstance(fStatus); testFormat(/*par*/); } break; case 1: name = "DefaultLocale"; if (exec) testLocale(/*par, */Locale::getDefault(), name); break; case 2: name = "testAvailableLocales"; if (exec) { logln(name); testAvailableLocales(/*par*/); } break; case 3: name = "monsterTest"; if (exec) { logln(name); monsterTest(/*par*/); } break; default: name = ""; break; } }