2 *******************************************************************************
\r
3 * Copyright (C) 2009-2010, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 *******************************************************************************
\r
7 package com.ibm.icu.dev.test;
\r
9 import static com.ibm.icu.impl.LocaleDisplayNamesImpl.DataTableType.LANG;
\r
10 import static com.ibm.icu.impl.LocaleDisplayNamesImpl.DataTableType.REGION;
\r
12 import com.ibm.icu.impl.LocaleDisplayNamesImpl;
\r
13 import com.ibm.icu.text.LocaleDisplayNames;
\r
14 import com.ibm.icu.text.LocaleDisplayNames.DialectHandling;
\r
15 import com.ibm.icu.util.ULocale;
\r
17 public class TestLocaleNamePackaging extends TestFmwk {
\r
19 public static void main(String[] args) {
\r
20 new TestLocaleNamePackaging().run(args);
\r
23 public TestLocaleNamePackaging() {
\r
26 public boolean validate() {
\r
27 warnln("language data: " + LocaleDisplayNamesImpl.haveData(LANG));
\r
28 warnln(" region data: " + LocaleDisplayNamesImpl.haveData(REGION));
\r
32 private static ULocale[] locales = {
\r
33 ULocale.ROOT, ULocale.US, new ULocale("es_ES"), ULocale.GERMANY,
\r
34 new ULocale("und_TH")
\r
37 public void testRegionDisplayNames() {
\r
38 String[] expectedWithRegionData = {
\r
55 "Vereinigte Staaten",
\r
65 String[] expectedWithoutRegionData = {
\r
72 String[] expected = LocaleDisplayNamesImpl.haveData(REGION) ?
\r
73 expectedWithRegionData : expectedWithoutRegionData;
\r
76 for (ULocale displayLocale : locales) {
\r
77 LocaleDisplayNames dn = LocaleDisplayNames.getInstance(displayLocale);
\r
78 for (ULocale targetLocale : locales) {
\r
79 String result = dn.regionDisplayName(targetLocale.getCountry());
\r
80 assertEquals(targetLocale + " in " + displayLocale, expected[n++], result);
\r
81 if (n == expected.length) {
\r
88 public void testLanguageDisplayNames() {
\r
89 String[] expectedWithLanguageData = {
\r
99 "Unknown or Invalid Language",
\r
109 "Unbestimmte Sprache",
\r
114 "Unknown or Invalid Language",
\r
116 String[] expectedWithoutLanguageData = {
\r
123 String[] expected = LocaleDisplayNamesImpl.haveData(LANG) ?
\r
124 expectedWithLanguageData : expectedWithoutLanguageData;
\r
127 for (ULocale displayLocale : locales) {
\r
128 LocaleDisplayNames dn = LocaleDisplayNames.getInstance(displayLocale);
\r
129 for (ULocale targetLocale : locales) {
\r
130 String result = dn.languageDisplayName(targetLocale.getLanguage());
\r
131 assertEquals(targetLocale + " in " + displayLocale, expected[n++], result);
\r
132 if (n == expected.length) {
\r
139 // test a 'root' locale, with keywords
\r
140 public void testLocaleDisplayNameWithKeywords() {
\r
141 String[] expectedWithLanguageData = {
\r
142 "root (collation=phonebook)",
\r
143 "Root (collation=Phonebook Sort Order)",
\r
144 "ra\u00EDz (intercalaci\u00F3n=orden de list\u00EDn telef\u00F3nico)",
\r
145 "Root (Sortierung=Telefonbuch-Sortierregeln)",
\r
146 "Root (collation=Phonebook Sort Order)",
\r
148 String[] expectedWithoutLanguageData = {
\r
149 "root (collation=phonebook)",
\r
151 String[] expected = LocaleDisplayNamesImpl.haveData(LANG) ?
\r
152 expectedWithLanguageData : expectedWithoutLanguageData;
\r
154 ULocale kl = new ULocale("@collation=phonebook");
\r
157 for (ULocale displayLocale : locales) {
\r
158 LocaleDisplayNames dn = LocaleDisplayNames.getInstance(displayLocale);
\r
159 String result = dn.localeDisplayName(kl);
\r
160 assertEquals(kl + " in " + displayLocale, expected[n++], result);
\r
161 if (n == expected.length) {
\r
167 public void testLanguageDisplayNameDoesNotTranslateRoot() {
\r
168 // "root" is not a language code-- the fact that we have our data organized this
\r
169 // way is immaterial. "root" remains untranslated whether we have data or not.
\r
170 LocaleDisplayNames dn = LocaleDisplayNames.getInstance(ULocale.US);
\r
171 assertEquals("root", "root", dn.languageDisplayName("root"));
\r
174 public void testLanguageDisplayNameDoesNotTranslateDialects() {
\r
175 // Dialect ids are also not language codes.
\r
176 LocaleDisplayNames dn = LocaleDisplayNames.getInstance(ULocale.US,
\r
177 DialectHandling.DIALECT_NAMES);
\r
178 assertEquals("dialect", "en_GB", dn.languageDisplayName("en_GB"));
\r
180 String target = LocaleDisplayNamesImpl.haveData(LANG)
\r
181 ? "British English"
\r
182 : (LocaleDisplayNamesImpl.haveData(REGION)
\r
183 ? "en (United Kingdom)"
\r
185 assertEquals("dialect 2", target, dn.localeDisplayName("en_GB"));
\r