| 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 |