150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/********************************************************************* 250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * COPYRIGHT: 3fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * Copyright (c) 2010-2014, International Business Machines Corporation and 450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * others. All Rights Reserved. 550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho *********************************************************************/ 650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "locnmtst.h" 850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "cstring.h" 950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/* 1150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho Usage: 1250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert( Test (should be TRUE) ) 1350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho Example: 1550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert(i==3); 1650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho the macro is ugly but makes the tests pretty. 1850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho*/ 1950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#define test_assert(test) \ 2150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { \ 2250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(!(test)) \ 2350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("FAIL: " #test " was not true. In " __FILE__ " on line %d", __LINE__ ); \ 2450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho else \ 2550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho logln("PASS: asserted " #test); \ 2650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 2750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/* 2950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho Usage: 3050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert_print( Test (should be TRUE), printable ) 3150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 3250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho Example: 3350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert(i==3, toString(i)); 3450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 3550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho the macro is ugly but makes the tests pretty. 3650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho*/ 3750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 3850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#define test_assert_print(test,print) \ 3950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { \ 4050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(!(test)) \ 4150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("FAIL: " #test " was not true. " + UnicodeString(print) ); \ 4250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho else \ 4350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho logln("PASS: asserted " #test "-> " + UnicodeString(print)); \ 4450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 4550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 4650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#define test_assert_equal(target,value) \ 4750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { \ 4850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (UnicodeString(target)!=(value)) { \ 4950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho logln("unexpected value '" + (value) + "'"); \ 5050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("FAIL: " #target " == " #value " was not true. In " __FILE__ " on line %d", __LINE__); \ 5150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } else { \ 5254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius logln("PASS: asserted " #target " == " #value); \ 5350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } \ 5450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 5550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 5650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#define test_dumpLocale(l) { logln(#l " = " + UnicodeString(l.getName(), "")); } 5750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 5850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoLocaleDisplayNamesTest::LocaleDisplayNamesTest() { 5950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 6050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 6150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoLocaleDisplayNamesTest::~LocaleDisplayNamesTest() { 6250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 6350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 6450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovoid LocaleDisplayNamesTest::runIndexedTest(int32_t index, UBool exec, const char* &name, 6554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius char* /*par*/) { 6650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho switch (index) { 6750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if !UCONFIG_NO_FORMATTING 6850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho TESTCASE(0, TestCreate); 6950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho TESTCASE(1, TestCreateDialect); 7054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE(2, TestWithKeywordsAndEverything); 7154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE(3, TestUldnOpen); 7254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE(4, TestUldnOpenDialect); 7354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE(5, TestUldnWithKeywordsAndEverything); 7454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE(6, TestUldnComponents); 7554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE(7, TestRootEtc); 76103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius TESTCASE(8, TestKeywords); 77103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius TESTCASE(9, TestUntranslatedKeywords); 78103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius TESTCASE(10, TestPrivateUse); 7954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE(11, TestUldnDisplayContext); 8050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif 8150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho default: 8254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius name = ""; 8354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius break; 8450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 8550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 8650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 8750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if !UCONFIG_NO_FORMATTING 8850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovoid LocaleDisplayNamesTest::TestCreate() { 8950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString temp; 9050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocaleDisplayNames *ldn = LocaleDisplayNames::createInstance(Locale::getGermany()); 9150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ldn->localeDisplayName("de_DE", temp); 9250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete ldn; 9350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert_equal("Deutsch (Deutschland)", temp); 9450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 9550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 9650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovoid LocaleDisplayNamesTest::TestCreateDialect() { 9750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString temp; 9850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocaleDisplayNames *ldn = LocaleDisplayNames::createInstance(Locale::getUS(), ULDN_DIALECT_NAMES); 9950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ldn->localeDisplayName("en_GB", temp); 10050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete ldn; 10150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert_equal("British English", temp); 10250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 10350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 10450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovoid LocaleDisplayNamesTest::TestWithKeywordsAndEverything() { 10550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString temp; 10650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocaleDisplayNames *ldn = LocaleDisplayNames::createInstance(Locale::getUS()); 10750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const char *locname = "en_Hant_US_VALLEY@calendar=gregorian;collation=phonebook"; 108b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho const char *target = "English (Traditional, United States, VALLEY, " 109103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius "Gregorian Calendar, Phonebook Sort Order)"; 110103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ldn->localeDisplayName(locname, temp); 111103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius delete ldn; 112103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius test_assert_equal(target, temp); 113103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} 114103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 115103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusvoid LocaleDisplayNamesTest::TestKeywords() { 116103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString temp; 117103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius LocaleDisplayNames *ldn = LocaleDisplayNames::createInstance(Locale::getUS()); 118103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *locname = "de@currency=XYZ"; 119103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *target = "German (Currency: XYZ)"; 120103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ldn->localeDisplayName(locname, temp); 121103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius delete ldn; 122103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius test_assert_equal(target, temp); 123103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} 124103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 125103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusvoid LocaleDisplayNamesTest::TestUntranslatedKeywords() { 126103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString temp; 127103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius LocaleDisplayNames *ldn = LocaleDisplayNames::createInstance(Locale::getUS()); 128103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *locname = "de@foo=bar"; 129103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *target = "German (foo=bar)"; 130103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ldn->localeDisplayName(locname, temp); 131103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius delete ldn; 132103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius test_assert_equal(target, temp); 133103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} 134103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 135103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusvoid LocaleDisplayNamesTest::TestPrivateUse() { 136103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString temp; 137103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius LocaleDisplayNames *ldn = LocaleDisplayNames::createInstance(Locale::getUS()); 138103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *locname = "de@x=foobar"; 139103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *target = "German (Private-Use: foobar)"; 14050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ldn->localeDisplayName(locname, temp); 14150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete ldn; 14250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert_equal(target, temp); 14350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 14450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 14550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovoid LocaleDisplayNamesTest::TestUldnOpen() { 14650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode status = U_ZERO_ERROR; 14750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const int32_t kMaxResultSize = 150; // long enough 14850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UChar result[150]; 14950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ULocaleDisplayNames *ldn = uldn_open(Locale::getGermany().getName(), ULDN_STANDARD_NAMES, &status); 15050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t len = uldn_localeDisplayName(ldn, "de_DE", result, kMaxResultSize, &status); 15150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho uldn_close(ldn); 15250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert(U_SUCCESS(status)); 15350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 15450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString str(result, len, kMaxResultSize); 15550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert_equal("Deutsch (Deutschland)", str); 15650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 15750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // make sure that NULL gives us the default locale as usual 15850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ldn = uldn_open(NULL, ULDN_STANDARD_NAMES, &status); 15950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const char *locale = uldn_getLocale(ldn); 16050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(0 != uprv_strcmp(uloc_getDefault(), locale)) { 16150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("uldn_getLocale(uldn_open(NULL))=%s != default locale %s\n", locale, uloc_getDefault()); 16250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 16350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho uldn_close(ldn); 16450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert(U_SUCCESS(status)); 16550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 16650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 16750294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovoid LocaleDisplayNamesTest::TestUldnOpenDialect() { 16850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode status = U_ZERO_ERROR; 16950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const int32_t kMaxResultSize = 150; // long enough 17050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UChar result[150]; 17150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ULocaleDisplayNames *ldn = uldn_open(Locale::getUS().getName(), ULDN_DIALECT_NAMES, &status); 17250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t len = uldn_localeDisplayName(ldn, "en_GB", result, kMaxResultSize, &status); 17350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho uldn_close(ldn); 17450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert(U_SUCCESS(status)); 17550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 17650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString str(result, len, kMaxResultSize); 17750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert_equal("British English", str); 17850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 17950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 18050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovoid LocaleDisplayNamesTest::TestUldnWithKeywordsAndEverything() { 18150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode status = U_ZERO_ERROR; 18250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const int32_t kMaxResultSize = 150; // long enough 18350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UChar result[150]; 18450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const char *locname = "en_Hant_US_VALLEY@calendar=gregorian;collation=phonebook"; 185b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho const char *target = "English (Traditional, United States, VALLEY, " 186103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius "Gregorian Calendar, Phonebook Sort Order)"; 18750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ULocaleDisplayNames *ldn = uldn_open(Locale::getUS().getName(), ULDN_STANDARD_NAMES, &status); 18850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t len = uldn_localeDisplayName(ldn, locname, result, kMaxResultSize, &status); 18950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho uldn_close(ldn); 19050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert(U_SUCCESS(status)); 19150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 19250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString str(result, len, kMaxResultSize); 19350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert_equal(target, str); 19450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 19550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 19650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovoid LocaleDisplayNamesTest::TestUldnComponents() { 19750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode status = U_ZERO_ERROR; 19850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const int32_t kMaxResultSize = 150; // long enough 19950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UChar result[150]; 20050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 20150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ULocaleDisplayNames *ldn = uldn_open(Locale::getGermany().getName(), ULDN_STANDARD_NAMES, &status); 20250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert(U_SUCCESS(status)); 20350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(status)) { 20450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 20550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 20650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 20750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // "en_Hant_US_PRE_EURO@calendar=gregorian"; 20850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 20950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 21050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t len = uldn_languageDisplayName(ldn, "en", result, kMaxResultSize, &status); 21150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString str(result, len, kMaxResultSize); 21250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert_equal("Englisch", str); 21350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 21450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 21550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 21650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 21750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t len = uldn_scriptDisplayName(ldn, "Hant", result, kMaxResultSize, &status); 21850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString str(result, len, kMaxResultSize); 219b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho test_assert_equal("Traditionell", str); 22050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 22150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 22250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 22350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t len = uldn_scriptCodeDisplayName(ldn, USCRIPT_TRADITIONAL_HAN, result, kMaxResultSize, 22454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius &status); 22550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString str(result, len, kMaxResultSize); 226b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho test_assert_equal("Traditionell", str); 22750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 22850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 22950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 23050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t len = uldn_regionDisplayName(ldn, "US", result, kMaxResultSize, &status); 23150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString str(result, len, kMaxResultSize); 23250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert_equal("Vereinigte Staaten", str); 23350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 23450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 23550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 23650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t len = uldn_variantDisplayName(ldn, "PRE_EURO", result, kMaxResultSize, &status); 23750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString str(result, len, kMaxResultSize); 23850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert_equal("PRE_EURO", str); 23950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 24050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 24150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 24250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t len = uldn_keyDisplayName(ldn, "calendar", result, kMaxResultSize, &status); 24350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString str(result, len, kMaxResultSize); 24450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert_equal("Kalender", str); 24550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 24650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 24750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 24850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t len = uldn_keyValueDisplayName(ldn, "calendar", "gregorian", result, 24954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius kMaxResultSize, &status); 25050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString str(result, len, kMaxResultSize); 25150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert_equal("Gregorianischer Kalender", str); 25250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 25350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 25450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho uldn_close(ldn); 25550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 25650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 25754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 25854dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliustypedef struct { 25954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius const char * displayLocale; 26054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UDisplayContext dialectHandling; 26154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UDisplayContext capitalization; 26254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius const char * localeToBeNamed; 26354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius const UChar * result; 26454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius} LocNameDispContextItem; 26554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 26654dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic char en[] = "en"; 26754dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic char en_US[] = "en_US"; 26854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 26954dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic UChar daFor_en[] = {0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0}; //"engelsk" 27054dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic UChar daFor_en_US[] = {0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x55,0x53,0x41,0x29,0}; //"engelsk (USA)" 27154dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic UChar daFor_en_US_D[] = {0x61,0x6D,0x65,0x72,0x69,0x6B,0x61,0x6E,0x73,0x6B,0x20,0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0}; //"amerikansk engelsk" 27254dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic UChar esFor_en[] = {0x69,0x6E,0x67,0x6C,0xE9,0x73,0}; //"ingles" with acute on e 27354dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic UChar esFor_en_US[] = {0x69,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x28,0x45,0x73,0x74,0x61,0x64,0x6F,0x73,0x20,0x55,0x6E,0x69,0x64,0x6F,0x73,0x29,0}; //"ingles (Estados Unidos)" ... 27454dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic UChar esFor_en_US_D[] = {0x69,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x65,0x73,0x74,0x61,0x64,0x6F,0x75,0x6E,0x69,0x64,0x65,0x6E,0x73,0x65,0}; //"ingles estadounidense" ... 27554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#if !UCONFIG_NO_BREAK_ITERATION 27654dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic UChar daFor_en_T[] = {0x45,0x6E,0x67,0x65,0x6C,0x73,0x6B,0}; //"Engelsk" 27754dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic UChar daFor_en_US_T[] = {0x45,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x55,0x53,0x41,0x29,0}; //"Engelsk (USA)" 27854dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic UChar daFor_en_US_DT[] = {0x41,0x6D,0x65,0x72,0x69,0x6B,0x61,0x6E,0x73,0x6B,0x20,0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0}; //"Amerikansk engelsk" 27954dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic UChar esFor_en_T[] = {0x49,0x6E,0x67,0x6C,0xE9,0x73,0}; //"Ingles" ... 28054dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic UChar esFor_en_US_T[] = {0x49,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x28,0x45,0x73,0x74,0x61,0x64,0x6F,0x73,0x20,0x55,0x6E,0x69,0x64,0x6F,0x73,0x29,0}; //"Ingles (Estados Unidos)" ... 28154dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic UChar esFor_en_US_DT[] = {0x49,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x65,0x73,0x74,0x61,0x64,0x6F,0x75,0x6E,0x69,0x64,0x65,0x6E,0x73,0x65,0}; //"Ingles estadounidense" ... 28254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#endif /* #if !UCONFIG_NO_BREAK_ITERATION */ 28354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 28454dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic const LocNameDispContextItem ctxtItems[] = { 28554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, en, daFor_en }, 28654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, en_US, daFor_en_US }, 28754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "da", UDISPCTX_DIALECT_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, en_US, daFor_en_US_D }, 28854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, en, esFor_en }, 28954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, en_US, esFor_en_US }, 29054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "es", UDISPCTX_DIALECT_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, en_US, esFor_en_US_D }, 29154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#if !UCONFIG_NO_BREAK_ITERATION 29254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, en, daFor_en_T }, 29354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, en_US, daFor_en_US_T }, 29454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "da", UDISPCTX_DIALECT_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, en_US, daFor_en_US_DT }, 29554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, en, esFor_en_T }, 29654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, en_US, esFor_en_US_T }, 297fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius { "es", UDISPCTX_DIALECT_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, en_US, esFor_en_US_DT }, 29854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 29959d709d503bab6e2b61931737e662dd293b40578ccornelius { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU, en, daFor_en_T }, 30059d709d503bab6e2b61931737e662dd293b40578ccornelius { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU, en_US, daFor_en_US_T }, 30159d709d503bab6e2b61931737e662dd293b40578ccornelius { "da", UDISPCTX_DIALECT_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU, en_US, daFor_en_US_DT }, 30254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU, en, esFor_en_T }, 30354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU, en_US, esFor_en_US_T }, 304fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius { "es", UDISPCTX_DIALECT_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU, en_US, esFor_en_US_DT }, 305fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 306fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE, en, daFor_en }, 307fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE, en_US, daFor_en_US }, 308fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius { "da", UDISPCTX_DIALECT_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE, en_US, daFor_en_US_D }, 309fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE, en, esFor_en_T }, 310fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE, en_US, esFor_en_US_T }, 311fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius { "es", UDISPCTX_DIALECT_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE, en_US, esFor_en_US_DT }, 31254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius #endif /* #if !UCONFIG_NO_BREAK_ITERATION */ 31354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { NULL, (UDisplayContext)0, (UDisplayContext)0, NULL, NULL } 31454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius}; 31554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 31654dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusvoid LocaleDisplayNamesTest::TestUldnDisplayContext() { 31754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius const LocNameDispContextItem * ctxtItemPtr; 31854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius for (ctxtItemPtr = ctxtItems; ctxtItemPtr->displayLocale != NULL; ctxtItemPtr++) { 31954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UDisplayContext contexts[2] = {ctxtItemPtr->dialectHandling, ctxtItemPtr->capitalization}; 32054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UErrorCode status = U_ZERO_ERROR; 32154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius ULocaleDisplayNames * uldn = uldn_openForContext(ctxtItemPtr->displayLocale, contexts, 2, &status); 32254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if (U_FAILURE(status)) { 32354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius errln(UnicodeString("FAIL: uldn_openForContext failed for locale ") + ctxtItemPtr->displayLocale + 32454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius ", dialectHandling " + ctxtItemPtr->dialectHandling + ", capitalization " + ctxtItemPtr->capitalization); 32554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } else { 32654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UDisplayContext dialectHandling = uldn_getContext(uldn, UDISPCTX_TYPE_DIALECT_HANDLING, &status); 32754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UDisplayContext capitalization = uldn_getContext(uldn, UDISPCTX_TYPE_CAPITALIZATION, &status); 32854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if (U_FAILURE(status)) { 32954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius errln(UnicodeString("FAIL: uldn_getContext status ") + (int)status); 33054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } else if (dialectHandling != ctxtItemPtr->dialectHandling || capitalization != ctxtItemPtr->capitalization) { 33154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius errln("FAIL: uldn_getContext retrieved incorrect dialectHandling or capitalization"); 33254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } else { 33354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UChar nameBuf[ULOC_FULLNAME_CAPACITY]; 33454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius int32_t len = uldn_localeDisplayName(uldn, ctxtItemPtr->localeToBeNamed, nameBuf, ULOC_FULLNAME_CAPACITY, &status); 33554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if (U_FAILURE(status)) { 33654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius dataerrln(UnicodeString("FAIL: uldn_localeDisplayName status: ") + u_errorName(status)); 33754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } else if (u_strcmp(ctxtItemPtr->result, nameBuf) != 0) { 33854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString exp(ctxtItemPtr->result, u_strlen(ctxtItemPtr->result)); 33954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString got(nameBuf, len); 34054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius dataerrln(UnicodeString("FAIL: uldn_localeDisplayName, capitalization ") + ctxtItemPtr->capitalization + 34154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius ", expected " + exp + ", got " + got ); 34254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 34354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 34454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius uldn_close(uldn); 34554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 34654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 34754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius} 34854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 34950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovoid LocaleDisplayNamesTest::TestRootEtc() { 35050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString temp; 35150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocaleDisplayNames *ldn = LocaleDisplayNames::createInstance(Locale::getUS()); 35250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const char *locname = "@collation=phonebook"; 353103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char *target = "Root (Phonebook Sort Order)"; 35450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ldn->localeDisplayName(locname, temp); 35550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert_equal(target, temp); 35650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 35750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ldn->languageDisplayName("root", temp); 35850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert_equal("root", temp); 35950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 36050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ldn->languageDisplayName("en_GB", temp); 36150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho test_assert_equal("en_GB", temp); 36250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 36350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete ldn; 36450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 36550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 36650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif /* UCONFIG_NO_FORMATTING */ 367