2 *******************************************************************************
\r
3 * Copyright (C) 2008, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 *******************************************************************************
\r
7 package com.ibm.icu.dev.test.localespi;
\r
9 import java.util.Locale;
\r
11 import com.ibm.icu.dev.test.TestFmwk;
\r
12 import com.ibm.icu.util.ULocale;
\r
14 public class LocaleNameTest extends TestFmwk {
\r
15 public static void main(String[] args) throws Exception {
\r
16 new LocaleNameTest().run(args);
\r
19 public void TestLanguageNames() {
\r
20 Locale[] locales = Locale.getAvailableLocales();
\r
21 StringBuffer icuid = new StringBuffer();
\r
22 for (Locale inLocale : locales) {
\r
23 if (TestUtil.isProblematicIBMLocale(inLocale)) {
\r
24 logln("Skipped " + inLocale);
\r
28 ULocale inULocale = ULocale.forLocale(inLocale);
\r
29 Locale inLocaleICU = TestUtil.toICUExtendedLocale(inLocale);
\r
30 for (Locale forLocale : locales) {
\r
31 if (forLocale.getLanguage().length() == 0) {
\r
35 icuid.append(forLocale.getLanguage());
\r
36 String country = forLocale.getCountry();
\r
37 String variant = forLocale.getVariant();
\r
38 if (country.length() != 0) {
\r
40 icuid.append(country);
\r
42 if (variant.length() != 0) {
\r
43 if (country.length() == 0) {
\r
47 icuid.append(variant);
\r
49 ULocale forULocale = new ULocale(icuid.toString());
\r
50 String icuname = ULocale.getDisplayLanguage(forULocale.getLanguage(), inULocale);
\r
51 if (icuname.equals(forULocale.getLanguage()) || icuname.length() == 0) {
\r
55 String name = forLocale.getDisplayLanguage(inLocale);
\r
56 if (TestUtil.isICUExtendedLocale(inLocale)) {
\r
57 // The name should be taken from ICU
\r
58 if (!name.equals(icuname)) {
\r
59 errln("FAIL: Language name by ICU is " + icuname + ", but got " + name
\r
60 + " for locale " + forLocale + " in locale " + inLocale);
\r
63 if (!name.equals(icuname)) {
\r
64 logln("INFO: Language name by JDK is " + name + ", but " + icuname +
\r
65 " by ICU, for locale " + forLocale + " in locale " + inLocale);
\r
67 // Try explicit ICU locale (xx_yy_ICU)
\r
68 name = forLocale.getDisplayLanguage(inLocaleICU);
\r
69 if (!name.equals(icuname)) {
\r
70 errln("FAIL: Language name by ICU is " + icuname + ", but got " + name
\r
71 + " for locale " + forLocale + " in locale " + inLocaleICU);
\r
78 public void TestCountryNames() {
\r
79 Locale[] locales = Locale.getAvailableLocales();
\r
80 for (Locale inLocale : locales) {
\r
81 if (TestUtil.isProblematicIBMLocale(inLocale)) {
\r
82 logln("Skipped " + inLocale);
\r
86 ULocale inULocale = ULocale.forLocale(inLocale);
\r
87 Locale inLocaleICU = TestUtil.toICUExtendedLocale(inLocale);
\r
88 for (Locale forLocale : locales) {
\r
89 if (forLocale.getCountry().length() == 0) {
\r
92 // ULocale#forLocale preserves country always
\r
93 ULocale forULocale = ULocale.forLocale(forLocale);
\r
94 String icuname = ULocale.getDisplayCountry(forULocale.getCountry(), inULocale);
\r
95 if (icuname.equals(forULocale.getCountry()) || icuname.length() == 0) {
\r
99 String name = forLocale.getDisplayCountry(inLocale);
\r
100 if (TestUtil.isICUExtendedLocale(inLocale)) {
\r
101 // The name should be taken from ICU
\r
102 if (!name.equals(icuname)) {
\r
103 errln("FAIL: Country name by ICU is " + icuname + ", but got " + name
\r
104 + " for locale " + forLocale + " in locale " + inLocale);
\r
107 // The name might be taken from JDK
\r
108 if (!name.equals(icuname)) {
\r
109 logln("INFO: Country name by JDK is " + name + ", but " + icuname +
\r
110 " in ICU, for locale " + forLocale + " in locale " + inLocale);
\r
112 // Try explicit ICU locale (xx_yy_ICU)
\r
113 name = forLocale.getDisplayCountry(inLocaleICU);
\r
114 if (!name.equals(icuname)) {
\r
115 errln("FAIL: Country name by ICU is " + icuname + ", but got " + name
\r
116 + " for locale " + forLocale + " in locale " + inLocaleICU);
\r
123 public void TestVariantNames() {
\r
124 Locale[] locales = Locale.getAvailableLocales();
\r
125 StringBuffer icuid = new StringBuffer();
\r
126 for (Locale inLocale : locales) {
\r
127 if (TestUtil.isProblematicIBMLocale(inLocale)) {
\r
128 logln("Skipped " + inLocale);
\r
132 ULocale inULocale = ULocale.forLocale(inLocale);
\r
133 Locale inLocaleICU = TestUtil.toICUExtendedLocale(inLocale);
\r
134 for (Locale forLocale : locales) {
\r
135 if (forLocale.getVariant().length() == 0) {
\r
138 icuid.setLength(0);
\r
139 icuid.append(forLocale.getLanguage());
\r
140 String country = forLocale.getCountry();
\r
141 String variant = forLocale.getVariant();
\r
142 if (country.length() != 0) {
\r
144 icuid.append(country);
\r
146 if (variant.length() != 0) {
\r
147 if (country.length() == 0) {
\r
151 icuid.append(variant);
\r
153 ULocale forULocale = new ULocale(icuid.toString());
\r
154 String icuname = ULocale.getDisplayVariant(forULocale.getVariant(), inULocale);
\r
155 if (icuname.equals(forULocale.getVariant()) || icuname.length() == 0) {
\r
159 String name = forLocale.getDisplayVariant(inLocale);
\r
160 if (TestUtil.isICUExtendedLocale(inLocale)) {
\r
161 // The name should be taken from ICU
\r
162 if (!name.equals(icuname)) {
\r
163 errln("FAIL: Variant name by ICU is " + icuname + ", but got " + name
\r
164 + " for locale " + forLocale + " in locale " + inLocale);
\r
167 if (!name.equals(icuname)) {
\r
168 logln("INFO: Variant name by JDK is " + name + ", but " + icuname +
\r
169 " in ICU, for locale " + forLocale + " in locale " + inLocale);
\r
171 // Try explicit ICU locale (xx_yy_ICU)
\r
172 name = forLocale.getDisplayVariant(inLocaleICU);
\r
173 if (!name.equals(icuname)) {
\r
174 errln("FAIL: Variant name by ICU is " + icuname + ", but got " + name
\r
175 + " for locale " + forLocale + " in locale " + inLocaleICU);
\r