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