OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "build/build_config.h" | 5 #include "build/build_config.h" |
6 | 6 |
7 #include "app/app_paths.h" | 7 #include "app/app_paths.h" |
8 #include "app/l10n_util.h" | 8 #include "app/l10n_util.h" |
9 #if !defined(OS_MACOSX) | 9 #if !defined(OS_MACOSX) |
10 #include "app/test/data/resource.h" | 10 #include "app/test/data/resource.h" |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 EXPECT_EQ(L"f\x2026", l10n_util::TruncateString(string, 2)); | 77 EXPECT_EQ(L"f\x2026", l10n_util::TruncateString(string, 2)); |
78 | 78 |
79 // Test adds ... at right spot when there is not enough room to break at a | 79 // Test adds ... at right spot when there is not enough room to break at a |
80 // word boundary. | 80 // word boundary. |
81 EXPECT_EQ(L"foooooey\x2026", l10n_util::TruncateString(string, 11)); | 81 EXPECT_EQ(L"foooooey\x2026", l10n_util::TruncateString(string, 11)); |
82 | 82 |
83 // Test completely truncates string if break is on initial whitespace. | 83 // Test completely truncates string if break is on initial whitespace. |
84 EXPECT_EQ(L"\x2026", l10n_util::TruncateString(L" ", 2)); | 84 EXPECT_EQ(L"\x2026", l10n_util::TruncateString(L" ", 2)); |
85 } | 85 } |
86 | 86 |
87 void SetICUDefaultLocale(const std::wstring& locale_string) { | 87 void SetICUDefaultLocale(const std::string& locale_string) { |
88 Locale locale(WideToASCII(locale_string).c_str()); | 88 Locale locale(locale_string.c_str()); |
89 UErrorCode error_code = U_ZERO_ERROR; | 89 UErrorCode error_code = U_ZERO_ERROR; |
90 Locale::setDefault(locale, error_code); | 90 Locale::setDefault(locale, error_code); |
91 EXPECT_TRUE(U_SUCCESS(error_code)); | 91 EXPECT_TRUE(U_SUCCESS(error_code)); |
92 } | 92 } |
93 | 93 |
94 #if defined(OS_WIN) || defined(OS_LINUX) | 94 #if defined(OS_WIN) || defined(OS_LINUX) |
95 // We are disabling this test on MacOS because GetApplicationLocale() as an | 95 // We are disabling this test on MacOS because GetApplicationLocale() as an |
96 // API isn't something that we'll easily be able to unit test in this manner. | 96 // API isn't something that we'll easily be able to unit test in this manner. |
97 // The meaning of that API, on the Mac, is "the locale used by Cocoa's main | 97 // The meaning of that API, on the Mac, is "the locale used by Cocoa's main |
98 // nib file", which clearly can't be stubbed by a test app that doesn't use | 98 // nib file", which clearly can't be stubbed by a test app that doesn't use |
(...skipping 30 matching lines...) Expand all Loading... |
129 #endif | 129 #endif |
130 for (size_t i = 0; i < arraysize(filenames); ++i) { | 130 for (size_t i = 0; i < arraysize(filenames); ++i) { |
131 FilePath filename = new_locale_dir.AppendASCII( | 131 FilePath filename = new_locale_dir.AppendASCII( |
132 filenames[i] + kLocaleFileExtension); | 132 filenames[i] + kLocaleFileExtension); |
133 file_util::WriteFile(filename, "", 0); | 133 file_util::WriteFile(filename, "", 0); |
134 } | 134 } |
135 | 135 |
136 // Keep a copy of ICU's default locale before we overwrite it. | 136 // Keep a copy of ICU's default locale before we overwrite it. |
137 Locale locale = Locale::getDefault(); | 137 Locale locale = Locale::getDefault(); |
138 | 138 |
139 SetICUDefaultLocale(L"en-US"); | 139 SetICUDefaultLocale("en-US"); |
140 EXPECT_EQ(L"en-US", l10n_util::GetApplicationLocale(L"")); | 140 EXPECT_EQ("en-US", l10n_util::GetApplicationLocale(L"")); |
141 | 141 |
142 SetICUDefaultLocale(L"en-GB"); | 142 SetICUDefaultLocale("en-GB"); |
143 EXPECT_EQ(L"en-GB", l10n_util::GetApplicationLocale(L"")); | 143 EXPECT_EQ("en-GB", l10n_util::GetApplicationLocale(L"")); |
144 | 144 |
145 SetICUDefaultLocale(L"fr-CA"); | 145 SetICUDefaultLocale("fr-CA"); |
146 EXPECT_EQ(L"fr", l10n_util::GetApplicationLocale(L"")); | 146 EXPECT_EQ("fr", l10n_util::GetApplicationLocale(L"")); |
147 | 147 |
148 SetICUDefaultLocale(L"xx"); | 148 SetICUDefaultLocale("xx"); |
149 EXPECT_EQ(L"en-US", l10n_util::GetApplicationLocale(L"")); | 149 EXPECT_EQ("en-US", l10n_util::GetApplicationLocale(L"")); |
150 | 150 |
151 SetICUDefaultLocale(L"en-US"); | 151 SetICUDefaultLocale("en-US"); |
152 EXPECT_EQ(L"fr", l10n_util::GetApplicationLocale(L"fr")); | 152 EXPECT_EQ("fr", l10n_util::GetApplicationLocale(L"fr")); |
153 EXPECT_EQ(L"fr", l10n_util::GetApplicationLocale(L"fr-CA")); | 153 EXPECT_EQ("fr", l10n_util::GetApplicationLocale(L"fr-CA")); |
154 | 154 |
155 SetICUDefaultLocale(L"en-US"); | 155 SetICUDefaultLocale("en-US"); |
156 // Aliases iw, no, tl to he, nb, fil. | 156 // Aliases iw, no, tl to he, nb, fil. |
157 EXPECT_EQ(L"he", l10n_util::GetApplicationLocale(L"iw")); | 157 EXPECT_EQ("he", l10n_util::GetApplicationLocale(L"iw")); |
158 EXPECT_EQ(L"nb", l10n_util::GetApplicationLocale(L"no")); | 158 EXPECT_EQ("nb", l10n_util::GetApplicationLocale(L"no")); |
159 EXPECT_EQ(L"fil", l10n_util::GetApplicationLocale(L"tl")); | 159 EXPECT_EQ("fil", l10n_util::GetApplicationLocale(L"tl")); |
160 // es-419 and es-XX (where XX is not Spain) should be | 160 // es-419 and es-XX (where XX is not Spain) should be |
161 // mapped to es-419 (Latin American Spanish). | 161 // mapped to es-419 (Latin American Spanish). |
162 EXPECT_EQ(L"es-419", l10n_util::GetApplicationLocale(L"es-419")); | 162 EXPECT_EQ("es-419", l10n_util::GetApplicationLocale(L"es-419")); |
163 EXPECT_EQ(L"es", l10n_util::GetApplicationLocale(L"es-ES")); | 163 EXPECT_EQ("es", l10n_util::GetApplicationLocale(L"es-ES")); |
164 EXPECT_EQ(L"es-419", l10n_util::GetApplicationLocale(L"es-AR")); | 164 EXPECT_EQ("es-419", l10n_util::GetApplicationLocale(L"es-AR")); |
165 | 165 |
166 SetICUDefaultLocale(L"es-MX"); | 166 SetICUDefaultLocale("es-MX"); |
167 EXPECT_EQ(L"es-419", l10n_util::GetApplicationLocale(L"")); | 167 EXPECT_EQ("es-419", l10n_util::GetApplicationLocale(L"")); |
168 | 168 |
169 SetICUDefaultLocale(L"es-AR"); | 169 SetICUDefaultLocale("es-AR"); |
170 EXPECT_EQ(L"es-419", l10n_util::GetApplicationLocale(L"")); | 170 EXPECT_EQ("es-419", l10n_util::GetApplicationLocale(L"")); |
171 EXPECT_EQ(L"es", l10n_util::GetApplicationLocale(L"es")); | 171 EXPECT_EQ("es", l10n_util::GetApplicationLocale(L"es")); |
172 | 172 |
173 SetICUDefaultLocale(L"es-ES"); | 173 SetICUDefaultLocale("es-ES"); |
174 EXPECT_EQ(L"es", l10n_util::GetApplicationLocale(L"")); | 174 EXPECT_EQ("es", l10n_util::GetApplicationLocale(L"")); |
175 | 175 |
176 SetICUDefaultLocale(L"es"); | 176 SetICUDefaultLocale("es"); |
177 EXPECT_EQ(L"es", l10n_util::GetApplicationLocale(L"")); | 177 EXPECT_EQ("es", l10n_util::GetApplicationLocale(L"")); |
178 | 178 |
179 SetICUDefaultLocale(L"zh-HK"); | 179 SetICUDefaultLocale("zh-HK"); |
180 EXPECT_EQ(L"zh-TW", l10n_util::GetApplicationLocale(L"")); | 180 EXPECT_EQ("zh-TW", l10n_util::GetApplicationLocale(L"")); |
181 EXPECT_EQ(L"zh-CN", l10n_util::GetApplicationLocale(L"zh-CN")); | 181 EXPECT_EQ("zh-CN", l10n_util::GetApplicationLocale(L"zh-CN")); |
182 | 182 |
183 SetICUDefaultLocale(L"zh-MK"); | 183 SetICUDefaultLocale("zh-MK"); |
184 EXPECT_EQ(L"zh-TW", l10n_util::GetApplicationLocale(L"")); | 184 EXPECT_EQ("zh-TW", l10n_util::GetApplicationLocale(L"")); |
185 | 185 |
186 SetICUDefaultLocale(L"zh-SG"); | 186 SetICUDefaultLocale("zh-SG"); |
187 EXPECT_EQ(L"zh-CN", l10n_util::GetApplicationLocale(L"")); | 187 EXPECT_EQ("zh-CN", l10n_util::GetApplicationLocale(L"")); |
188 | 188 |
189 SetICUDefaultLocale(L"he"); | 189 SetICUDefaultLocale("he"); |
190 EXPECT_EQ(L"en-US", l10n_util::GetApplicationLocale(L"en")); | 190 EXPECT_EQ("en-US", l10n_util::GetApplicationLocale(L"en")); |
191 | 191 |
192 #if defined(OS_WIN) | 192 #if defined(OS_WIN) |
193 // Oriya should be blocked unless OS is Vista or newer. | 193 // Oriya should be blocked unless OS is Vista or newer. |
194 if (win_util::GetWinVersion() < win_util::WINVERSION_VISTA) { | 194 if (win_util::GetWinVersion() < win_util::WINVERSION_VISTA) { |
195 SetICUDefaultLocale(L"or"); | 195 SetICUDefaultLocale("or"); |
196 EXPECT_EQ(L"en-US", l10n_util::GetApplicationLocale(L"")); | 196 EXPECT_EQ("en-US", l10n_util::GetApplicationLocale(L"")); |
197 SetICUDefaultLocale(L"en-GB"); | 197 SetICUDefaultLocale("en-GB"); |
198 EXPECT_EQ(L"en-GB", l10n_util::GetApplicationLocale(L"or")); | 198 EXPECT_EQ("en-GB", l10n_util::GetApplicationLocale(L"or")); |
199 } else { | 199 } else { |
200 SetICUDefaultLocale(L"or"); | 200 SetICUDefaultLocale("or"); |
201 EXPECT_EQ(L"or", l10n_util::GetApplicationLocale(L"")); | 201 EXPECT_EQ("or", l10n_util::GetApplicationLocale(L"")); |
202 SetICUDefaultLocale(L"en-GB"); | 202 SetICUDefaultLocale("en-GB"); |
203 EXPECT_EQ(L"or", l10n_util::GetApplicationLocale(L"or")); | 203 EXPECT_EQ("or", l10n_util::GetApplicationLocale(L"or")); |
204 } | 204 } |
205 #endif | 205 #endif |
206 | 206 |
207 // Clean up. | 207 // Clean up. |
208 PathService::Override(app::DIR_LOCALES, orig_locale_dir.ToWStringHack()); | 208 PathService::Override(app::DIR_LOCALES, orig_locale_dir.ToWStringHack()); |
209 file_util::Delete(new_locale_dir, true); | 209 file_util::Delete(new_locale_dir, true); |
210 UErrorCode error_code = U_ZERO_ERROR; | 210 UErrorCode error_code = U_ZERO_ERROR; |
211 Locale::setDefault(locale, error_code); | 211 Locale::setDefault(locale, error_code); |
212 } | 212 } |
213 #endif | 213 #endif |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
427 EXPECT_EQ(l10n_util::LEFT_TO_RIGHT, GetTextDirection("en")); | 427 EXPECT_EQ(l10n_util::LEFT_TO_RIGHT, GetTextDirection("en")); |
428 // Chinese in China with '-'. | 428 // Chinese in China with '-'. |
429 EXPECT_EQ(l10n_util::LEFT_TO_RIGHT, GetTextDirection("zh-CN")); | 429 EXPECT_EQ(l10n_util::LEFT_TO_RIGHT, GetTextDirection("zh-CN")); |
430 // Filipino : 3-letter code | 430 // Filipino : 3-letter code |
431 EXPECT_EQ(l10n_util::LEFT_TO_RIGHT, GetTextDirection("fil")); | 431 EXPECT_EQ(l10n_util::LEFT_TO_RIGHT, GetTextDirection("fil")); |
432 // Russian | 432 // Russian |
433 EXPECT_EQ(l10n_util::LEFT_TO_RIGHT, GetTextDirection("ru")); | 433 EXPECT_EQ(l10n_util::LEFT_TO_RIGHT, GetTextDirection("ru")); |
434 // Japanese that uses multiple scripts | 434 // Japanese that uses multiple scripts |
435 EXPECT_EQ(l10n_util::LEFT_TO_RIGHT, GetTextDirection("ja")); | 435 EXPECT_EQ(l10n_util::LEFT_TO_RIGHT, GetTextDirection("ja")); |
436 } | 436 } |
OLD | NEW |