OLD | NEW |
| (Empty) |
1 // Copyright 2010 Google Inc. | |
2 // | |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | |
4 // you may not use this file except in compliance with the License. | |
5 // You may obtain a copy of the License at | |
6 // | |
7 // http://www.apache.org/licenses/LICENSE-2.0 | |
8 // | |
9 // Unless required by applicable law or agreed to in writing, software | |
10 // distributed under the License is distributed on an "AS IS" BASIS, | |
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
12 // See the License for the specific language governing permissions and | |
13 // limitations under the License. | |
14 // ======================================================================== | |
15 // | |
16 #include <map> | |
17 #include <vector> | |
18 #include "omaha/base/app_util.h" | |
19 #include "omaha/base/constants.h" | |
20 #include "omaha/base/debug.h" | |
21 #include "omaha/base/file.h" | |
22 #include "omaha/base/path.h" | |
23 #include "omaha/base/string.h" | |
24 #include "omaha/common/config_manager.h" | |
25 #include "omaha/common/lang.h" | |
26 #include "omaha/testing/unit_test.h" | |
27 | |
28 namespace omaha { | |
29 | |
30 namespace { | |
31 | |
32 const int kNumberOfLanguages = 56; | |
33 | |
34 } // namespace | |
35 | |
36 class LanguageManagerTest : public testing::Test { | |
37 protected: | |
38 CString GetLang(LANGID langid) { | |
39 return lang::GetLanguageForLangID(langid); | |
40 } | |
41 }; | |
42 | |
43 TEST_F(LanguageManagerTest, GetLanguageForLangID_NoLangID) { | |
44 EXPECT_STREQ(_T("en"), lang::GetLanguageForLangID(0xFFFF)); | |
45 } | |
46 | |
47 TEST_F(LanguageManagerTest, IsLanguageSupported) { | |
48 EXPECT_TRUE(lang::IsLanguageSupported(_T("en"))); | |
49 | |
50 EXPECT_FALSE(lang::IsLanguageSupported(_T(""))); | |
51 EXPECT_FALSE(lang::IsLanguageSupported(_T("non-existing lang"))); | |
52 EXPECT_FALSE(lang::IsLanguageSupported(_T("en-US"))); | |
53 } | |
54 | |
55 TEST_F(LanguageManagerTest, GetLanguageForLangID_SupportedIds) { | |
56 EXPECT_STREQ(_T("am"), GetLang(MAKELANGID(LANG_AMHARIC, SUBLANG_DEFAULT))); | |
57 EXPECT_STREQ(_T("ar"), GetLang(MAKELANGID(LANG_ARABIC, SUBLANG_DEFAULT))); | |
58 EXPECT_STREQ(_T("bg"), GetLang(MAKELANGID(LANG_BULGARIAN, SUBLANG_DEFAULT))); | |
59 EXPECT_STREQ(_T("ca"), GetLang(MAKELANGID(LANG_CATALAN, SUBLANG_DEFAULT))); | |
60 EXPECT_STREQ(_T("cs"), GetLang(MAKELANGID(LANG_CZECH, SUBLANG_DEFAULT))); | |
61 EXPECT_STREQ(_T("da"), GetLang(MAKELANGID(LANG_DANISH, SUBLANG_DEFAULT))); | |
62 EXPECT_STREQ(_T("de"), GetLang(MAKELANGID(LANG_GERMAN, SUBLANG_DEFAULT))); | |
63 EXPECT_STREQ(_T("el"), GetLang(MAKELANGID(LANG_GREEK, SUBLANG_DEFAULT))); | |
64 EXPECT_STREQ(_T("en"), GetLang(MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT))); | |
65 EXPECT_STREQ(_T("en-GB"), GetLang(MAKELANGID(LANG_ENGLISH, | |
66 SUBLANG_ENGLISH_UK))); | |
67 EXPECT_STREQ(_T("es"), GetLang(MAKELANGID(LANG_SPANISH, | |
68 SUBLANG_DEFAULT))); | |
69 EXPECT_STREQ(_T("es"), GetLang(MAKELANGID(LANG_SPANISH, | |
70 SUBLANG_SPANISH))); | |
71 EXPECT_STREQ(_T("es-419"), GetLang(MAKELANGID(LANG_SPANISH, | |
72 SUBLANG_SPANISH_MEXICAN))); | |
73 EXPECT_STREQ(_T("es"), GetLang(MAKELANGID(LANG_SPANISH, | |
74 SUBLANG_SPANISH_MODERN))); | |
75 EXPECT_STREQ(_T("es-419"), GetLang(MAKELANGID(LANG_SPANISH, | |
76 SUBLANG_SPANISH_GUATEMALA))); | |
77 EXPECT_STREQ(_T("es-419"), GetLang(MAKELANGID(LANG_SPANISH, | |
78 SUBLANG_SPANISH_COSTA_RICA))); | |
79 EXPECT_STREQ(_T("es-419"), GetLang(MAKELANGID(LANG_SPANISH, | |
80 SUBLANG_SPANISH_PANAMA))); | |
81 EXPECT_STREQ(_T("es-419"), GetLang(MAKELANGID( | |
82 LANG_SPANISH, | |
83 SUBLANG_SPANISH_DOMINICAN_REPUBLIC))); | |
84 EXPECT_STREQ(_T("es-419"), GetLang(MAKELANGID(LANG_SPANISH, | |
85 SUBLANG_SPANISH_VENEZUELA))); | |
86 EXPECT_STREQ(_T("es-419"), GetLang(MAKELANGID(LANG_SPANISH, | |
87 SUBLANG_SPANISH_COLOMBIA))); | |
88 EXPECT_STREQ(_T("es-419"), GetLang(MAKELANGID(LANG_SPANISH, | |
89 SUBLANG_SPANISH_PERU))); | |
90 EXPECT_STREQ(_T("es-419"), GetLang(MAKELANGID(LANG_SPANISH, | |
91 SUBLANG_SPANISH_ARGENTINA))); | |
92 EXPECT_STREQ(_T("es-419"), GetLang(MAKELANGID(LANG_SPANISH, | |
93 SUBLANG_SPANISH_ECUADOR))); | |
94 EXPECT_STREQ(_T("es-419"), GetLang(MAKELANGID(LANG_SPANISH, | |
95 SUBLANG_SPANISH_CHILE))); | |
96 EXPECT_STREQ(_T("es-419"), GetLang(MAKELANGID(LANG_SPANISH, | |
97 SUBLANG_SPANISH_URUGUAY))); | |
98 EXPECT_STREQ(_T("es-419"), GetLang(MAKELANGID(LANG_SPANISH, | |
99 SUBLANG_SPANISH_PARAGUAY))); | |
100 EXPECT_STREQ(_T("es-419"), GetLang(MAKELANGID(LANG_SPANISH, | |
101 SUBLANG_SPANISH_BOLIVIA))); | |
102 EXPECT_STREQ(_T("es-419"), GetLang(MAKELANGID(LANG_SPANISH, | |
103 SUBLANG_SPANISH_EL_SALVADOR))); | |
104 EXPECT_STREQ(_T("es-419"), GetLang(MAKELANGID(LANG_SPANISH, | |
105 SUBLANG_SPANISH_HONDURAS))); | |
106 EXPECT_STREQ(_T("es-419"), GetLang(MAKELANGID(LANG_SPANISH, | |
107 SUBLANG_SPANISH_NICARAGUA))); | |
108 EXPECT_STREQ(_T("es-419"), GetLang(MAKELANGID(LANG_SPANISH, | |
109 SUBLANG_SPANISH_PUERTO_RICO))); | |
110 EXPECT_STREQ(_T("et"), GetLang(MAKELANGID(LANG_ESTONIAN, | |
111 SUBLANG_ESTONIAN_ESTONIA))); | |
112 EXPECT_STREQ(_T("fi"), GetLang(MAKELANGID(LANG_FINNISH, SUBLANG_DEFAULT))); | |
113 EXPECT_STREQ(_T("fil"), GetLang(MAKELANGID(LANG_FILIPINO, SUBLANG_DEFAULT))); | |
114 EXPECT_STREQ(_T("fr"), GetLang(MAKELANGID(LANG_FRENCH, SUBLANG_DEFAULT))); | |
115 EXPECT_STREQ(_T("hi"), GetLang(MAKELANGID(LANG_HINDI, SUBLANG_DEFAULT))); | |
116 EXPECT_STREQ(_T("hr"), GetLang(MAKELANGID(LANG_CROATIAN, SUBLANG_DEFAULT))); | |
117 EXPECT_STREQ(_T("hr"), GetLang(MAKELANGID(LANG_SERBIAN, | |
118 SUBLANG_SERBIAN_CROATIA))); | |
119 EXPECT_STREQ(_T("hu"), GetLang(MAKELANGID(LANG_HUNGARIAN, SUBLANG_DEFAULT))); | |
120 EXPECT_STREQ(_T("id"), GetLang(MAKELANGID(LANG_INDONESIAN, SUBLANG_DEFAULT))); | |
121 EXPECT_STREQ(_T("it"), GetLang(MAKELANGID(LANG_ITALIAN, SUBLANG_DEFAULT))); | |
122 EXPECT_STREQ(_T("iw"), GetLang(MAKELANGID(LANG_HEBREW, SUBLANG_DEFAULT))); | |
123 EXPECT_STREQ(_T("ja"), GetLang(MAKELANGID(LANG_JAPANESE, SUBLANG_DEFAULT))); | |
124 EXPECT_STREQ(_T("ko"), GetLang(MAKELANGID(LANG_KOREAN, SUBLANG_DEFAULT))); | |
125 EXPECT_STREQ(_T("lt"), GetLang(MAKELANGID(LANG_LITHUANIAN, SUBLANG_DEFAULT))); | |
126 EXPECT_STREQ(_T("lv"), GetLang(MAKELANGID(LANG_LATVIAN, SUBLANG_DEFAULT))); | |
127 EXPECT_STREQ(_T("nl"), GetLang(MAKELANGID(LANG_DUTCH, SUBLANG_DEFAULT))); | |
128 EXPECT_STREQ(_T("no"), GetLang(MAKELANGID(LANG_NORWEGIAN, SUBLANG_DEFAULT))); | |
129 EXPECT_STREQ(_T("pl"), GetLang(MAKELANGID(LANG_POLISH, SUBLANG_DEFAULT))); | |
130 EXPECT_STREQ(_T("pt-BR"), GetLang(MAKELANGID(LANG_PORTUGUESE, | |
131 SUBLANG_PORTUGUESE_BRAZILIAN))); | |
132 EXPECT_STREQ(_T("pt-PT"), GetLang(MAKELANGID(LANG_PORTUGUESE, | |
133 SUBLANG_PORTUGUESE))); | |
134 EXPECT_STREQ(_T("ro"), GetLang(MAKELANGID(LANG_ROMANIAN, SUBLANG_DEFAULT))); | |
135 EXPECT_STREQ(_T("ru"), GetLang(MAKELANGID(LANG_RUSSIAN, SUBLANG_DEFAULT))); | |
136 EXPECT_STREQ(_T("sk"), GetLang(MAKELANGID(LANG_SLOVAK, SUBLANG_DEFAULT))); | |
137 EXPECT_STREQ(_T("sl"), GetLang(MAKELANGID(LANG_SLOVENIAN, SUBLANG_DEFAULT))); | |
138 EXPECT_STREQ(_T("sr"), GetLang( | |
139 MAKELANGID(LANG_SERBIAN, SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC))); | |
140 EXPECT_STREQ(_T("sr"), GetLang( | |
141 MAKELANGID(LANG_SERBIAN, SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN))); | |
142 EXPECT_STREQ(_T("sr"), GetLang(MAKELANGID(LANG_SERBIAN, | |
143 SUBLANG_SERBIAN_CYRILLIC))); | |
144 EXPECT_STREQ(_T("sr"), GetLang(MAKELANGID(LANG_SERBIAN, | |
145 SUBLANG_SERBIAN_LATIN))); | |
146 EXPECT_STREQ(_T("sv"), GetLang(MAKELANGID(LANG_SWEDISH, SUBLANG_DEFAULT))); | |
147 EXPECT_STREQ(_T("sw"), GetLang(MAKELANGID(LANG_SWAHILI, SUBLANG_DEFAULT))); | |
148 EXPECT_STREQ(_T("th"), GetLang(MAKELANGID(LANG_THAI, SUBLANG_DEFAULT))); | |
149 EXPECT_STREQ(_T("tr"), GetLang(MAKELANGID(LANG_TURKISH, SUBLANG_DEFAULT))); | |
150 EXPECT_STREQ(_T("uk"), GetLang(MAKELANGID(LANG_UKRAINIAN, SUBLANG_DEFAULT))); | |
151 EXPECT_STREQ(_T("vi"), GetLang(MAKELANGID(LANG_VIETNAMESE, SUBLANG_DEFAULT))); | |
152 EXPECT_STREQ(_T("zh-HK"), GetLang(MAKELANGID(LANG_CHINESE, | |
153 SUBLANG_CHINESE_HONGKONG))); | |
154 EXPECT_STREQ(_T("zh-TW"), GetLang(MAKELANGID(LANG_CHINESE, | |
155 SUBLANG_CHINESE_MACAU))); | |
156 EXPECT_STREQ(_T("zh-CN"), GetLang(MAKELANGID(LANG_CHINESE, | |
157 SUBLANG_CHINESE_SIMPLIFIED))); | |
158 EXPECT_STREQ(_T("zh-CN"), GetLang(MAKELANGID(LANG_CHINESE, | |
159 SUBLANG_CHINESE_SINGAPORE))); | |
160 EXPECT_STREQ(_T("zh-TW"), GetLang(MAKELANGID(LANG_CHINESE, | |
161 SUBLANG_CHINESE_TRADITIONAL))); | |
162 } | |
163 | |
164 // Unsupported languages and sublanguages fall back to "en". | |
165 TEST_F(LanguageManagerTest, GetLanguageForLangID_UnsupportedSubLang) { | |
166 // LANG_NEUTRAL is unsupported. | |
167 EXPECT_STREQ(_T("en"), GetLang(MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT))); | |
168 // LANG_AFRIKAANS is unsupported. | |
169 EXPECT_STREQ(_T("en"), GetLang(MAKELANGID(LANG_AFRIKAANS, SUBLANG_NEUTRAL))); | |
170 // SUBLANG_NEUTRAL is unsupported. | |
171 EXPECT_STREQ(_T("en"), GetLang(MAKELANGID(LANG_SPANISH, SUBLANG_NEUTRAL))); | |
172 // SUBLANG_SYS_DEFAULT is unsupported. It happens to be 2, which is not | |
173 // supported for Hungarian but is for English, Spanish, and others/ | |
174 EXPECT_STREQ(_T("en"), | |
175 GetLang(MAKELANGID(LANG_HUNGARIAN, SUBLANG_SYS_DEFAULT))); | |
176 EXPECT_STREQ(_T("es-419"), | |
177 GetLang(MAKELANGID(LANG_SPANISH, SUBLANG_SYS_DEFAULT))); | |
178 // 0x3f is an invalid sublang. There is a "es" file. | |
179 EXPECT_STREQ(_T("en"), GetLang(MAKELANGID(LANG_SPANISH, 0x3f))); | |
180 // 0x3f is an invalid sublang. There is not a "zh" file. | |
181 EXPECT_STREQ(_T("en"), GetLang(MAKELANGID(LANG_CHINESE, 0x3f))); | |
182 } | |
183 | |
184 TEST_F(LanguageManagerTest, TestCountLanguagesInTranslationTable) { | |
185 std::vector<CString> languages; | |
186 lang::GetSupportedLanguages(&languages); | |
187 EXPECT_EQ(kNumberOfLanguages, languages.size()); | |
188 } | |
189 | |
190 TEST_F(LanguageManagerTest, TestAppropriateLanguagesInTranslationTable) { | |
191 EXPECT_TRUE(lang::IsLanguageSupported(_T("am"))); | |
192 EXPECT_TRUE(lang::IsLanguageSupported(_T("ar"))); | |
193 EXPECT_TRUE(lang::IsLanguageSupported(_T("bg"))); | |
194 EXPECT_TRUE(lang::IsLanguageSupported(_T("bn"))); | |
195 EXPECT_TRUE(lang::IsLanguageSupported(_T("ca"))); | |
196 EXPECT_TRUE(lang::IsLanguageSupported(_T("cs"))); | |
197 EXPECT_TRUE(lang::IsLanguageSupported(_T("da"))); | |
198 EXPECT_TRUE(lang::IsLanguageSupported(_T("de"))); | |
199 EXPECT_TRUE(lang::IsLanguageSupported(_T("el"))); | |
200 EXPECT_TRUE(lang::IsLanguageSupported(_T("en-GB"))); | |
201 EXPECT_TRUE(lang::IsLanguageSupported(_T("en"))); | |
202 EXPECT_TRUE(lang::IsLanguageSupported(_T("es-419"))); | |
203 EXPECT_TRUE(lang::IsLanguageSupported(_T("es"))); | |
204 EXPECT_TRUE(lang::IsLanguageSupported(_T("et"))); | |
205 EXPECT_TRUE(lang::IsLanguageSupported(_T("fa"))); | |
206 EXPECT_TRUE(lang::IsLanguageSupported(_T("fi"))); | |
207 EXPECT_TRUE(lang::IsLanguageSupported(_T("fil"))); | |
208 EXPECT_TRUE(lang::IsLanguageSupported(_T("fr"))); | |
209 EXPECT_TRUE(lang::IsLanguageSupported(_T("gu"))); | |
210 EXPECT_TRUE(lang::IsLanguageSupported(_T("hi"))); | |
211 EXPECT_TRUE(lang::IsLanguageSupported(_T("hr"))); | |
212 EXPECT_TRUE(lang::IsLanguageSupported(_T("hu"))); | |
213 EXPECT_TRUE(lang::IsLanguageSupported(_T("id"))); | |
214 EXPECT_TRUE(lang::IsLanguageSupported(_T("is"))); | |
215 EXPECT_TRUE(lang::IsLanguageSupported(_T("it"))); | |
216 EXPECT_TRUE(lang::IsLanguageSupported(_T("iw"))); | |
217 EXPECT_TRUE(lang::IsLanguageSupported(_T("ja"))); | |
218 EXPECT_TRUE(lang::IsLanguageSupported(_T("kn"))); | |
219 EXPECT_TRUE(lang::IsLanguageSupported(_T("ko"))); | |
220 EXPECT_TRUE(lang::IsLanguageSupported(_T("lt"))); | |
221 EXPECT_TRUE(lang::IsLanguageSupported(_T("lv"))); | |
222 EXPECT_TRUE(lang::IsLanguageSupported(_T("ml"))); | |
223 EXPECT_TRUE(lang::IsLanguageSupported(_T("mr"))); | |
224 EXPECT_TRUE(lang::IsLanguageSupported(_T("ms"))); | |
225 EXPECT_TRUE(lang::IsLanguageSupported(_T("nl"))); | |
226 EXPECT_TRUE(lang::IsLanguageSupported(_T("no"))); | |
227 EXPECT_FALSE(lang::IsLanguageSupported(_T("or"))); | |
228 EXPECT_TRUE(lang::IsLanguageSupported(_T("pl"))); | |
229 EXPECT_TRUE(lang::IsLanguageSupported(_T("pt-BR"))); | |
230 EXPECT_TRUE(lang::IsLanguageSupported(_T("pt-PT"))); | |
231 EXPECT_TRUE(lang::IsLanguageSupported(_T("ro"))); | |
232 EXPECT_TRUE(lang::IsLanguageSupported(_T("ru"))); | |
233 EXPECT_TRUE(lang::IsLanguageSupported(_T("sk"))); | |
234 EXPECT_TRUE(lang::IsLanguageSupported(_T("sl"))); | |
235 EXPECT_TRUE(lang::IsLanguageSupported(_T("sr"))); | |
236 EXPECT_TRUE(lang::IsLanguageSupported(_T("sv"))); | |
237 EXPECT_TRUE(lang::IsLanguageSupported(_T("sw"))); | |
238 EXPECT_TRUE(lang::IsLanguageSupported(_T("ta"))); | |
239 EXPECT_TRUE(lang::IsLanguageSupported(_T("te"))); | |
240 EXPECT_TRUE(lang::IsLanguageSupported(_T("th"))); | |
241 EXPECT_TRUE(lang::IsLanguageSupported(_T("tr"))); | |
242 EXPECT_TRUE(lang::IsLanguageSupported(_T("uk"))); | |
243 EXPECT_TRUE(lang::IsLanguageSupported(_T("ur"))); | |
244 EXPECT_TRUE(lang::IsLanguageSupported(_T("vi"))); | |
245 EXPECT_TRUE(lang::IsLanguageSupported(_T("zh-CN"))); | |
246 EXPECT_TRUE(lang::IsLanguageSupported(_T("zh-HK"))); | |
247 EXPECT_TRUE(lang::IsLanguageSupported(_T("zh-TW"))); | |
248 } | |
249 | |
250 } // namespace omaha | |
OLD | NEW |