| Index: icu46/source/test/intltest/locnmtst.cpp
|
| ===================================================================
|
| --- icu46/source/test/intltest/locnmtst.cpp (revision 0)
|
| +++ icu46/source/test/intltest/locnmtst.cpp (revision 0)
|
| @@ -0,0 +1,241 @@
|
| +/*********************************************************************
|
| + * COPYRIGHT:
|
| + * Copyright (c) 2010, International Business Machines Corporation and
|
| + * others. All Rights Reserved.
|
| + *********************************************************************/
|
| +
|
| +#include "locnmtst.h"
|
| +#include "cstring.h"
|
| +
|
| +/*
|
| + Usage:
|
| + test_assert( Test (should be TRUE) )
|
| +
|
| + Example:
|
| + test_assert(i==3);
|
| +
|
| + the macro is ugly but makes the tests pretty.
|
| +*/
|
| +
|
| +#define test_assert(test) \
|
| + { \
|
| + if(!(test)) \
|
| + errln("FAIL: " #test " was not true. In " __FILE__ " on line %d", __LINE__ ); \
|
| + else \
|
| + logln("PASS: asserted " #test); \
|
| + }
|
| +
|
| +/*
|
| + Usage:
|
| + test_assert_print( Test (should be TRUE), printable )
|
| +
|
| + Example:
|
| + test_assert(i==3, toString(i));
|
| +
|
| + the macro is ugly but makes the tests pretty.
|
| +*/
|
| +
|
| +#define test_assert_print(test,print) \
|
| + { \
|
| + if(!(test)) \
|
| + errln("FAIL: " #test " was not true. " + UnicodeString(print) ); \
|
| + else \
|
| + logln("PASS: asserted " #test "-> " + UnicodeString(print)); \
|
| + }
|
| +
|
| +#define test_assert_equal(target,value) \
|
| + { \
|
| + if (UnicodeString(target)!=(value)) { \
|
| + logln("unexpected value '" + (value) + "'"); \
|
| + dataerrln("FAIL: " #target " == " #value " was not true. In " __FILE__ " on line %d", __LINE__); \
|
| + } else { \
|
| + logln("PASS: asserted " #target " == " #value); \
|
| + } \
|
| + }
|
| +
|
| +#define test_dumpLocale(l) { logln(#l " = " + UnicodeString(l.getName(), "")); }
|
| +
|
| +LocaleDisplayNamesTest::LocaleDisplayNamesTest() {
|
| +}
|
| +
|
| +LocaleDisplayNamesTest::~LocaleDisplayNamesTest() {
|
| +}
|
| +
|
| +void LocaleDisplayNamesTest::runIndexedTest(int32_t index, UBool exec, const char* &name,
|
| + char* /*par*/) {
|
| + switch (index) {
|
| +#if !UCONFIG_NO_FORMATTING
|
| + TESTCASE(0, TestCreate);
|
| + TESTCASE(1, TestCreateDialect);
|
| + TESTCASE(2, TestWithKeywordsAndEverything);
|
| + TESTCASE(3, TestUldnOpen);
|
| + TESTCASE(4, TestUldnOpenDialect);
|
| + TESTCASE(5, TestUldnWithKeywordsAndEverything);
|
| + TESTCASE(6, TestUldnComponents);
|
| + TESTCASE(7, TestRootEtc);
|
| +#endif
|
| + default:
|
| + name = "";
|
| + break;
|
| + }
|
| +}
|
| +
|
| +#if !UCONFIG_NO_FORMATTING
|
| +void LocaleDisplayNamesTest::TestCreate() {
|
| + UnicodeString temp;
|
| + LocaleDisplayNames *ldn = LocaleDisplayNames::createInstance(Locale::getGermany());
|
| + ldn->localeDisplayName("de_DE", temp);
|
| + delete ldn;
|
| + test_assert_equal("Deutsch (Deutschland)", temp);
|
| +}
|
| +
|
| +void LocaleDisplayNamesTest::TestCreateDialect() {
|
| + UnicodeString temp;
|
| + LocaleDisplayNames *ldn = LocaleDisplayNames::createInstance(Locale::getUS(), ULDN_DIALECT_NAMES);
|
| + ldn->localeDisplayName("en_GB", temp);
|
| + delete ldn;
|
| + test_assert_equal("British English", temp);
|
| +}
|
| +
|
| +void LocaleDisplayNamesTest::TestWithKeywordsAndEverything() {
|
| + UnicodeString temp;
|
| + LocaleDisplayNames *ldn = LocaleDisplayNames::createInstance(Locale::getUS());
|
| + const char *locname = "en_Hant_US_VALLEY@calendar=gregorian;collation=phonebook";
|
| + const char *target = "English (Traditional Han, United States, VALLEY, "
|
| + "Calendar=Gregorian Calendar, Collation=Phonebook Sort Order)";
|
| + ldn->localeDisplayName(locname, temp);
|
| + delete ldn;
|
| + test_assert_equal(target, temp);
|
| +}
|
| +
|
| +void LocaleDisplayNamesTest::TestUldnOpen() {
|
| + UErrorCode status = U_ZERO_ERROR;
|
| + const int32_t kMaxResultSize = 150; // long enough
|
| + UChar result[150];
|
| + ULocaleDisplayNames *ldn = uldn_open(Locale::getGermany().getName(), ULDN_STANDARD_NAMES, &status);
|
| + int32_t len = uldn_localeDisplayName(ldn, "de_DE", result, kMaxResultSize, &status);
|
| + uldn_close(ldn);
|
| + test_assert(U_SUCCESS(status));
|
| +
|
| + UnicodeString str(result, len, kMaxResultSize);
|
| + test_assert_equal("Deutsch (Deutschland)", str);
|
| +
|
| + // make sure that NULL gives us the default locale as usual
|
| + ldn = uldn_open(NULL, ULDN_STANDARD_NAMES, &status);
|
| + const char *locale = uldn_getLocale(ldn);
|
| + if(0 != uprv_strcmp(uloc_getDefault(), locale)) {
|
| + errln("uldn_getLocale(uldn_open(NULL))=%s != default locale %s\n", locale, uloc_getDefault());
|
| + }
|
| + uldn_close(ldn);
|
| + test_assert(U_SUCCESS(status));
|
| +}
|
| +
|
| +void LocaleDisplayNamesTest::TestUldnOpenDialect() {
|
| + UErrorCode status = U_ZERO_ERROR;
|
| + const int32_t kMaxResultSize = 150; // long enough
|
| + UChar result[150];
|
| + ULocaleDisplayNames *ldn = uldn_open(Locale::getUS().getName(), ULDN_DIALECT_NAMES, &status);
|
| + int32_t len = uldn_localeDisplayName(ldn, "en_GB", result, kMaxResultSize, &status);
|
| + uldn_close(ldn);
|
| + test_assert(U_SUCCESS(status));
|
| +
|
| + UnicodeString str(result, len, kMaxResultSize);
|
| + test_assert_equal("British English", str);
|
| +}
|
| +
|
| +void LocaleDisplayNamesTest::TestUldnWithKeywordsAndEverything() {
|
| + UErrorCode status = U_ZERO_ERROR;
|
| + const int32_t kMaxResultSize = 150; // long enough
|
| + UChar result[150];
|
| + const char *locname = "en_Hant_US_VALLEY@calendar=gregorian;collation=phonebook";
|
| + const char *target = "English (Traditional Han, United States, VALLEY, "
|
| + "Calendar=Gregorian Calendar, Collation=Phonebook Sort Order)";
|
| + ULocaleDisplayNames *ldn = uldn_open(Locale::getUS().getName(), ULDN_STANDARD_NAMES, &status);
|
| + int32_t len = uldn_localeDisplayName(ldn, locname, result, kMaxResultSize, &status);
|
| + uldn_close(ldn);
|
| + test_assert(U_SUCCESS(status));
|
| +
|
| + UnicodeString str(result, len, kMaxResultSize);
|
| + test_assert_equal(target, str);
|
| +}
|
| +
|
| +void LocaleDisplayNamesTest::TestUldnComponents() {
|
| + UErrorCode status = U_ZERO_ERROR;
|
| + const int32_t kMaxResultSize = 150; // long enough
|
| + UChar result[150];
|
| +
|
| + ULocaleDisplayNames *ldn = uldn_open(Locale::getGermany().getName(), ULDN_STANDARD_NAMES, &status);
|
| + test_assert(U_SUCCESS(status));
|
| + if (U_FAILURE(status)) {
|
| + return;
|
| + }
|
| +
|
| + // "en_Hant_US_PRE_EURO@calendar=gregorian";
|
| +
|
| + {
|
| + int32_t len = uldn_languageDisplayName(ldn, "en", result, kMaxResultSize, &status);
|
| + UnicodeString str(result, len, kMaxResultSize);
|
| + test_assert_equal("Englisch", str);
|
| + }
|
| +
|
| +
|
| + {
|
| + int32_t len = uldn_scriptDisplayName(ldn, "Hant", result, kMaxResultSize, &status);
|
| + UnicodeString str(result, len, kMaxResultSize);
|
| + test_assert_equal("Traditionelle Chinesische Schrift", str);
|
| + }
|
| +
|
| + {
|
| + int32_t len = uldn_scriptCodeDisplayName(ldn, USCRIPT_TRADITIONAL_HAN, result, kMaxResultSize,
|
| + &status);
|
| + UnicodeString str(result, len, kMaxResultSize);
|
| + test_assert_equal("Traditionelle Chinesische Schrift", str);
|
| + }
|
| +
|
| + {
|
| + int32_t len = uldn_regionDisplayName(ldn, "US", result, kMaxResultSize, &status);
|
| + UnicodeString str(result, len, kMaxResultSize);
|
| + test_assert_equal("Vereinigte Staaten", str);
|
| + }
|
| +
|
| + {
|
| + int32_t len = uldn_variantDisplayName(ldn, "PRE_EURO", result, kMaxResultSize, &status);
|
| + UnicodeString str(result, len, kMaxResultSize);
|
| + test_assert_equal("PRE_EURO", str);
|
| + }
|
| +
|
| + {
|
| + int32_t len = uldn_keyDisplayName(ldn, "calendar", result, kMaxResultSize, &status);
|
| + UnicodeString str(result, len, kMaxResultSize);
|
| + test_assert_equal("Kalender", str);
|
| + }
|
| +
|
| + {
|
| + int32_t len = uldn_keyValueDisplayName(ldn, "calendar", "gregorian", result,
|
| + kMaxResultSize, &status);
|
| + UnicodeString str(result, len, kMaxResultSize);
|
| + test_assert_equal("Gregorianischer Kalender", str);
|
| + }
|
| +
|
| + uldn_close(ldn);
|
| +}
|
| +
|
| +void LocaleDisplayNamesTest::TestRootEtc() {
|
| + UnicodeString temp;
|
| + LocaleDisplayNames *ldn = LocaleDisplayNames::createInstance(Locale::getUS());
|
| + const char *locname = "@collation=phonebook";
|
| + const char *target = "Root (Collation=Phonebook Sort Order)";
|
| + ldn->localeDisplayName(locname, temp);
|
| + test_assert_equal(target, temp);
|
| +
|
| + ldn->languageDisplayName("root", temp);
|
| + test_assert_equal("root", temp);
|
| +
|
| + ldn->languageDisplayName("en_GB", temp);
|
| + test_assert_equal("en_GB", temp);
|
| +
|
| + delete ldn;
|
| +}
|
| +
|
| +#endif /* UCONFIG_NO_FORMATTING */
|
| +
|
|
|
| Property changes on: icu46/source/test/intltest/locnmtst.cpp
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|