]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/LocaleNameTest.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / tests / localespi / src / com / ibm / icu / dev / test / localespi / LocaleNameTest.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 2008, International Business Machines Corporation and         *\r
4  * others. All Rights Reserved.                                                *\r
5  *******************************************************************************\r
6  */\r
7 package com.ibm.icu.dev.test.localespi;\r
8 \r
9 import java.util.Locale;\r
10 \r
11 import com.ibm.icu.dev.test.TestFmwk;\r
12 import com.ibm.icu.util.ULocale;\r
13 \r
14 public class LocaleNameTest extends TestFmwk {\r
15     public static void main(String[] args) throws Exception {\r
16         new LocaleNameTest().run(args);\r
17     }\r
18 \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
25                 continue;\r
26             }\r
27 \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
32                     continue;\r
33                 }\r
34                 icuid.setLength(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
39                     icuid.append("_");\r
40                     icuid.append(country);\r
41                 }\r
42                 if (variant.length() != 0) {\r
43                     if (country.length() == 0) {\r
44                         icuid.append("_");\r
45                     }\r
46                     icuid.append("_");\r
47                     icuid.append(variant);\r
48                 }\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
52                     continue;\r
53                 }\r
54 \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
61                     }\r
62                 } else {\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
66                     }\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
72                     }\r
73                 }\r
74             }\r
75         }\r
76     }\r
77 \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
83                 continue;\r
84             }\r
85 \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
90                     continue;\r
91                 }\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
96                     continue;\r
97                 }\r
98 \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
105                     }\r
106                 } else {\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
111                     }\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
117                     }\r
118                 }\r
119             }\r
120         }\r
121     }\r
122 \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
129                 continue;\r
130             }\r
131 \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
136                     continue;\r
137                 }\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
143                     icuid.append("_");\r
144                     icuid.append(country);\r
145                 }\r
146                 if (variant.length() != 0) {\r
147                     if (country.length() == 0) {\r
148                         icuid.append("_");\r
149                     }\r
150                     icuid.append("_");\r
151                     icuid.append(variant);\r
152                 }\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
156                     continue;\r
157                 }\r
158 \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
165                     }\r
166                 } else {\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
170                     }\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
176                     }\r
177                 }\r
178             }\r
179         }\r
180     }\r
181 }\r