OLD | NEW |
(Empty) | |
| 1 /********************************************************************* |
| 2 * COPYRIGHT: |
| 3 * Copyright (c) 2010, International Business Machines Corporation and |
| 4 * others. All Rights Reserved. |
| 5 *********************************************************************/ |
| 6 |
| 7 #include "locnmtst.h" |
| 8 #include "cstring.h" |
| 9 |
| 10 /* |
| 11 Usage: |
| 12 test_assert( Test (should be TRUE) ) |
| 13 |
| 14 Example: |
| 15 test_assert(i==3); |
| 16 |
| 17 the macro is ugly but makes the tests pretty. |
| 18 */ |
| 19 |
| 20 #define test_assert(test) \ |
| 21 { \ |
| 22 if(!(test)) \ |
| 23 errln("FAIL: " #test " was not true. In " __FILE__ " on line %d", __
LINE__ ); \ |
| 24 else \ |
| 25 logln("PASS: asserted " #test); \ |
| 26 } |
| 27 |
| 28 /* |
| 29 Usage: |
| 30 test_assert_print( Test (should be TRUE), printable ) |
| 31 |
| 32 Example: |
| 33 test_assert(i==3, toString(i)); |
| 34 |
| 35 the macro is ugly but makes the tests pretty. |
| 36 */ |
| 37 |
| 38 #define test_assert_print(test,print) \ |
| 39 { \ |
| 40 if(!(test)) \ |
| 41 errln("FAIL: " #test " was not true. " + UnicodeString(print) ); \ |
| 42 else \ |
| 43 logln("PASS: asserted " #test "-> " + UnicodeString(print)); \ |
| 44 } |
| 45 |
| 46 #define test_assert_equal(target,value) \ |
| 47 { \ |
| 48 if (UnicodeString(target)!=(value)) { \ |
| 49 logln("unexpected value '" + (value) + "'"); \ |
| 50 dataerrln("FAIL: " #target " == " #value " was not true. In " __FILE__ " o
n line %d", __LINE__); \ |
| 51 } else { \ |
| 52 logln("PASS: asserted " #target " == " #value); \ |
| 53 } \ |
| 54 } |
| 55 |
| 56 #define test_dumpLocale(l) { logln(#l " = " + UnicodeString(l.getName(), "")); } |
| 57 |
| 58 LocaleDisplayNamesTest::LocaleDisplayNamesTest() { |
| 59 } |
| 60 |
| 61 LocaleDisplayNamesTest::~LocaleDisplayNamesTest() { |
| 62 } |
| 63 |
| 64 void LocaleDisplayNamesTest::runIndexedTest(int32_t index, UBool exec, const cha
r* &name, |
| 65 char* /*par*/) { |
| 66 switch (index) { |
| 67 #if !UCONFIG_NO_FORMATTING |
| 68 TESTCASE(0, TestCreate); |
| 69 TESTCASE(1, TestCreateDialect); |
| 70 TESTCASE(2, TestWithKeywordsAndEverything); |
| 71 TESTCASE(3, TestUldnOpen); |
| 72 TESTCASE(4, TestUldnOpenDialect); |
| 73 TESTCASE(5, TestUldnWithKeywordsAndEverything); |
| 74 TESTCASE(6, TestUldnComponents); |
| 75 TESTCASE(7, TestRootEtc); |
| 76 #endif |
| 77 default: |
| 78 name = ""; |
| 79 break; |
| 80 } |
| 81 } |
| 82 |
| 83 #if !UCONFIG_NO_FORMATTING |
| 84 void LocaleDisplayNamesTest::TestCreate() { |
| 85 UnicodeString temp; |
| 86 LocaleDisplayNames *ldn = LocaleDisplayNames::createInstance(Locale::getGerman
y()); |
| 87 ldn->localeDisplayName("de_DE", temp); |
| 88 delete ldn; |
| 89 test_assert_equal("Deutsch (Deutschland)", temp); |
| 90 } |
| 91 |
| 92 void LocaleDisplayNamesTest::TestCreateDialect() { |
| 93 UnicodeString temp; |
| 94 LocaleDisplayNames *ldn = LocaleDisplayNames::createInstance(Locale::getUS(),
ULDN_DIALECT_NAMES); |
| 95 ldn->localeDisplayName("en_GB", temp); |
| 96 delete ldn; |
| 97 test_assert_equal("British English", temp); |
| 98 } |
| 99 |
| 100 void LocaleDisplayNamesTest::TestWithKeywordsAndEverything() { |
| 101 UnicodeString temp; |
| 102 LocaleDisplayNames *ldn = LocaleDisplayNames::createInstance(Locale::getUS()); |
| 103 const char *locname = "en_Hant_US_VALLEY@calendar=gregorian;collation=phoneboo
k"; |
| 104 const char *target = "English (Traditional Han, United States, VALLEY, " |
| 105 "Calendar=Gregorian Calendar, Collation=Phonebook Sort Order)"; |
| 106 ldn->localeDisplayName(locname, temp); |
| 107 delete ldn; |
| 108 test_assert_equal(target, temp); |
| 109 } |
| 110 |
| 111 void LocaleDisplayNamesTest::TestUldnOpen() { |
| 112 UErrorCode status = U_ZERO_ERROR; |
| 113 const int32_t kMaxResultSize = 150; // long enough |
| 114 UChar result[150]; |
| 115 ULocaleDisplayNames *ldn = uldn_open(Locale::getGermany().getName(), ULDN_STAN
DARD_NAMES, &status); |
| 116 int32_t len = uldn_localeDisplayName(ldn, "de_DE", result, kMaxResultSize, &st
atus); |
| 117 uldn_close(ldn); |
| 118 test_assert(U_SUCCESS(status)); |
| 119 |
| 120 UnicodeString str(result, len, kMaxResultSize); |
| 121 test_assert_equal("Deutsch (Deutschland)", str); |
| 122 |
| 123 // make sure that NULL gives us the default locale as usual |
| 124 ldn = uldn_open(NULL, ULDN_STANDARD_NAMES, &status); |
| 125 const char *locale = uldn_getLocale(ldn); |
| 126 if(0 != uprv_strcmp(uloc_getDefault(), locale)) { |
| 127 errln("uldn_getLocale(uldn_open(NULL))=%s != default locale %s\n", locale, u
loc_getDefault()); |
| 128 } |
| 129 uldn_close(ldn); |
| 130 test_assert(U_SUCCESS(status)); |
| 131 } |
| 132 |
| 133 void LocaleDisplayNamesTest::TestUldnOpenDialect() { |
| 134 UErrorCode status = U_ZERO_ERROR; |
| 135 const int32_t kMaxResultSize = 150; // long enough |
| 136 UChar result[150]; |
| 137 ULocaleDisplayNames *ldn = uldn_open(Locale::getUS().getName(), ULDN_DIALECT_N
AMES, &status); |
| 138 int32_t len = uldn_localeDisplayName(ldn, "en_GB", result, kMaxResultSize, &st
atus); |
| 139 uldn_close(ldn); |
| 140 test_assert(U_SUCCESS(status)); |
| 141 |
| 142 UnicodeString str(result, len, kMaxResultSize); |
| 143 test_assert_equal("British English", str); |
| 144 } |
| 145 |
| 146 void LocaleDisplayNamesTest::TestUldnWithKeywordsAndEverything() { |
| 147 UErrorCode status = U_ZERO_ERROR; |
| 148 const int32_t kMaxResultSize = 150; // long enough |
| 149 UChar result[150]; |
| 150 const char *locname = "en_Hant_US_VALLEY@calendar=gregorian;collation=phoneboo
k"; |
| 151 const char *target = "English (Traditional Han, United States, VALLEY, " |
| 152 "Calendar=Gregorian Calendar, Collation=Phonebook Sort Order)"; |
| 153 ULocaleDisplayNames *ldn = uldn_open(Locale::getUS().getName(), ULDN_STANDARD_
NAMES, &status); |
| 154 int32_t len = uldn_localeDisplayName(ldn, locname, result, kMaxResultSize, &st
atus); |
| 155 uldn_close(ldn); |
| 156 test_assert(U_SUCCESS(status)); |
| 157 |
| 158 UnicodeString str(result, len, kMaxResultSize); |
| 159 test_assert_equal(target, str); |
| 160 } |
| 161 |
| 162 void LocaleDisplayNamesTest::TestUldnComponents() { |
| 163 UErrorCode status = U_ZERO_ERROR; |
| 164 const int32_t kMaxResultSize = 150; // long enough |
| 165 UChar result[150]; |
| 166 |
| 167 ULocaleDisplayNames *ldn = uldn_open(Locale::getGermany().getName(), ULDN_STAN
DARD_NAMES, &status); |
| 168 test_assert(U_SUCCESS(status)); |
| 169 if (U_FAILURE(status)) { |
| 170 return; |
| 171 } |
| 172 |
| 173 // "en_Hant_US_PRE_EURO@calendar=gregorian"; |
| 174 |
| 175 { |
| 176 int32_t len = uldn_languageDisplayName(ldn, "en", result, kMaxResultSize, &s
tatus); |
| 177 UnicodeString str(result, len, kMaxResultSize); |
| 178 test_assert_equal("Englisch", str); |
| 179 } |
| 180 |
| 181 |
| 182 { |
| 183 int32_t len = uldn_scriptDisplayName(ldn, "Hant", result, kMaxResultSize, &s
tatus); |
| 184 UnicodeString str(result, len, kMaxResultSize); |
| 185 test_assert_equal("Traditionelle Chinesische Schrift", str); |
| 186 } |
| 187 |
| 188 { |
| 189 int32_t len = uldn_scriptCodeDisplayName(ldn, USCRIPT_TRADITIONAL_HAN, resul
t, kMaxResultSize, |
| 190 &status); |
| 191 UnicodeString str(result, len, kMaxResultSize); |
| 192 test_assert_equal("Traditionelle Chinesische Schrift", str); |
| 193 } |
| 194 |
| 195 { |
| 196 int32_t len = uldn_regionDisplayName(ldn, "US", result, kMaxResultSize, &sta
tus); |
| 197 UnicodeString str(result, len, kMaxResultSize); |
| 198 test_assert_equal("Vereinigte Staaten", str); |
| 199 } |
| 200 |
| 201 { |
| 202 int32_t len = uldn_variantDisplayName(ldn, "PRE_EURO", result, kMaxResultSiz
e, &status); |
| 203 UnicodeString str(result, len, kMaxResultSize); |
| 204 test_assert_equal("PRE_EURO", str); |
| 205 } |
| 206 |
| 207 { |
| 208 int32_t len = uldn_keyDisplayName(ldn, "calendar", result, kMaxResultSize, &
status); |
| 209 UnicodeString str(result, len, kMaxResultSize); |
| 210 test_assert_equal("Kalender", str); |
| 211 } |
| 212 |
| 213 { |
| 214 int32_t len = uldn_keyValueDisplayName(ldn, "calendar", "gregorian", result,
|
| 215 kMaxResultSize, &status); |
| 216 UnicodeString str(result, len, kMaxResultSize); |
| 217 test_assert_equal("Gregorianischer Kalender", str); |
| 218 } |
| 219 |
| 220 uldn_close(ldn); |
| 221 } |
| 222 |
| 223 void LocaleDisplayNamesTest::TestRootEtc() { |
| 224 UnicodeString temp; |
| 225 LocaleDisplayNames *ldn = LocaleDisplayNames::createInstance(Locale::getUS()); |
| 226 const char *locname = "@collation=phonebook"; |
| 227 const char *target = "Root (Collation=Phonebook Sort Order)"; |
| 228 ldn->localeDisplayName(locname, temp); |
| 229 test_assert_equal(target, temp); |
| 230 |
| 231 ldn->languageDisplayName("root", temp); |
| 232 test_assert_equal("root", temp); |
| 233 |
| 234 ldn->languageDisplayName("en_GB", temp); |
| 235 test_assert_equal("en_GB", temp); |
| 236 |
| 237 delete ldn; |
| 238 } |
| 239 |
| 240 #endif /* UCONFIG_NO_FORMATTING */ |
| 241 |
OLD | NEW |