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 |