Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(124)

Side by Side Diff: chrome/browser/chromeos/input_method/input_method_util_unittest.cc

Issue 150723006: Make input_methods.txt to be able to specify indicator string. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more consistent Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/chromeos/input_method/input_method_util.h" 5 #include "chrome/browser/chromeos/input_method/input_method_util.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 virtual void SetUp() OVERRIDE { 59 virtual void SetUp() OVERRIDE {
60 InputMethodDescriptors input_methods; 60 InputMethodDescriptors input_methods;
61 61
62 std::vector<std::string> layouts; 62 std::vector<std::string> layouts;
63 std::vector<std::string> languages; 63 std::vector<std::string> languages;
64 layouts.push_back("us"); 64 layouts.push_back("us");
65 languages.push_back("zh-CN"); 65 languages.push_back("zh-CN");
66 66
67 InputMethodDescriptor pinyin_ime(pinyin_ime_id, 67 InputMethodDescriptor pinyin_ime(pinyin_ime_id,
68 "Pinyin input for testing", 68 "Pinyin input for testing",
69 "CN",
69 layouts, 70 layouts,
70 languages, 71 languages,
71 false, 72 false,
72 GURL(""), 73 GURL(""),
73 GURL("")); 74 GURL(""));
74 input_methods.push_back(pinyin_ime); 75 input_methods.push_back(pinyin_ime);
75 76
76 languages.clear(); 77 languages.clear();
77 languages.push_back("zh-TW"); 78 languages.push_back("zh-TW");
78 InputMethodDescriptor zhuyin_ime(zhuyin_ime_id, 79 InputMethodDescriptor zhuyin_ime(zhuyin_ime_id,
79 "Zhuyin input for testing", 80 "Zhuyin input for testing",
81 "TW",
80 layouts, 82 layouts,
81 languages, 83 languages,
82 false, 84 false,
83 GURL(""), 85 GURL(""),
84 GURL("")); 86 GURL(""));
85 input_methods.push_back(zhuyin_ime); 87 input_methods.push_back(zhuyin_ime);
86 88
87 util_.SetComponentExtensions(input_methods); 89 util_.SetComponentExtensions(input_methods);
88 } 90 }
89 91
90 InputMethodDescriptor GetDesc(const std::string& id, 92 InputMethodDescriptor GetDesc(const std::string& id,
91 const std::string& raw_layout, 93 const std::string& raw_layout,
92 const std::string& language_code) { 94 const std::string& language_code,
95 const std::string& indicator) {
93 std::vector<std::string> layouts; 96 std::vector<std::string> layouts;
94 layouts.push_back(raw_layout); 97 layouts.push_back(raw_layout);
95 std::vector<std::string> languages; 98 std::vector<std::string> languages;
96 languages.push_back(language_code); 99 languages.push_back(language_code);
97 return InputMethodDescriptor(id, 100 return InputMethodDescriptor(id,
98 "", 101 "", // Description.
102 indicator, // Short name used for indicator.
99 layouts, 103 layouts,
100 languages, 104 languages,
101 true, 105 true,
102 GURL(), // options page url 106 GURL(), // options page url
103 GURL()); // input view page url 107 GURL()); // input view page url
104 } 108 }
105 109
106 static base::string16 GetDisplayLanguageName(const std::string& language_code) { 110 static base::string16 GetDisplayLanguageName(const std::string& language_code) {
107 return l10n_util::GetDisplayNameForLocale(language_code, "en", true); 111 return l10n_util::GetDisplayNameForLocale(language_code, "en", true);
108 } 112 }
109 113
110 FakeInputMethodDelegate delegate_; 114 FakeInputMethodDelegate delegate_;
111 InputMethodWhitelist whitelist_; 115 InputMethodWhitelist whitelist_;
112 TestableInputMethodUtil util_; 116 TestableInputMethodUtil util_;
113 }; 117 };
114 118
115 TEST_F(InputMethodUtilTest, GetInputMethodShortNameTest) { 119 TEST_F(InputMethodUtilTest, GetInputMethodShortNameTest) {
116 // Test normal cases. Two-letter language code should be returned. 120 // Test normal cases. Two-letter language code should be returned.
117 { 121 {
118 InputMethodDescriptor desc = GetDesc("m17n:fa:isiri", // input method id 122 InputMethodDescriptor desc = GetDesc("m17n:fa:isiri", // input method id
119 "us", // keyboard layout name 123 "us", // keyboard layout name
120 "fa"); // language name 124 "fa", // language name
125 ""); // indicator
121 EXPECT_EQ(ASCIIToUTF16("FA"), util_.GetInputMethodShortName(desc)); 126 EXPECT_EQ(ASCIIToUTF16("FA"), util_.GetInputMethodShortName(desc));
122 } 127 }
123 { 128 {
124 InputMethodDescriptor desc = GetDesc("mozc-hangul", "us", "ko"); 129 InputMethodDescriptor desc = GetDesc("mozc-hangul", "us", "ko", "");
125 EXPECT_EQ(base::UTF8ToUTF16("\xed\x95\x9c"), 130 EXPECT_EQ(base::UTF8ToUTF16("\xed\x95\x9c"),
126 util_.GetInputMethodShortName(desc)); 131 util_.GetInputMethodShortName(desc));
127 } 132 }
128 { 133 {
129 InputMethodDescriptor desc = GetDesc("invalid-id", "us", "xx"); 134 InputMethodDescriptor desc = GetDesc("invalid-id", "us", "xx", "");
130 // Upper-case string of the unknown language code, "xx", should be returned. 135 // Upper-case string of the unknown language code, "xx", should be returned.
131 EXPECT_EQ(ASCIIToUTF16("XX"), util_.GetInputMethodShortName(desc)); 136 EXPECT_EQ(ASCIIToUTF16("XX"), util_.GetInputMethodShortName(desc));
132 } 137 }
133 138
134 // Test special cases. 139 // Test special cases.
135 { 140 {
136 InputMethodDescriptor desc = GetDesc("xkb:us:dvorak:eng", "us", "en-US"); 141 InputMethodDescriptor desc =
142 GetDesc("xkb:us:dvorak:eng", "us", "en-US", "DV");
137 EXPECT_EQ(ASCIIToUTF16("DV"), util_.GetInputMethodShortName(desc)); 143 EXPECT_EQ(ASCIIToUTF16("DV"), util_.GetInputMethodShortName(desc));
138 } 144 }
139 { 145 {
140 InputMethodDescriptor desc = GetDesc("xkb:us:colemak:eng", "us", "en-US"); 146 InputMethodDescriptor desc =
147 GetDesc("xkb:us:colemak:eng", "us", "en-US", "CO");
141 EXPECT_EQ(ASCIIToUTF16("CO"), util_.GetInputMethodShortName(desc)); 148 EXPECT_EQ(ASCIIToUTF16("CO"), util_.GetInputMethodShortName(desc));
142 } 149 }
143 { 150 {
144 InputMethodDescriptor desc = 151 InputMethodDescriptor desc =
145 GetDesc("xkb:us:altgr-intl:eng", "us", "en-US"); 152 GetDesc("xkb:us:altgr-intl:eng", "us", "en-US", "EXTD");
146 EXPECT_EQ(ASCIIToUTF16("EXTD"), util_.GetInputMethodShortName(desc)); 153 EXPECT_EQ(ASCIIToUTF16("EXTD"), util_.GetInputMethodShortName(desc));
147 } 154 }
148 { 155 {
149 InputMethodDescriptor desc = GetDesc("xkb:us:intl:eng", "us", "en-US"); 156 InputMethodDescriptor desc =
157 GetDesc("xkb:us:intl:eng", "us", "en-US", "INTL");
150 EXPECT_EQ(ASCIIToUTF16("INTL"), util_.GetInputMethodShortName(desc)); 158 EXPECT_EQ(ASCIIToUTF16("INTL"), util_.GetInputMethodShortName(desc));
151 } 159 }
152 { 160 {
153 InputMethodDescriptor desc = GetDesc("xkb:de:neo:ger", "de(neo)", "de"); 161 InputMethodDescriptor desc =
162 GetDesc("xkb:de:neo:ger", "de(neo)", "de", "NEO");
154 EXPECT_EQ(ASCIIToUTF16("NEO"), util_.GetInputMethodShortName(desc)); 163 EXPECT_EQ(ASCIIToUTF16("NEO"), util_.GetInputMethodShortName(desc));
155 } 164 }
156 { 165 {
157 InputMethodDescriptor desc = GetDesc("xkb:es:cat:cat", "es(cat)", "ca"); 166 InputMethodDescriptor desc =
167 GetDesc("xkb:es:cat:cat", "es(cat)", "ca", "CAS");
158 EXPECT_EQ(ASCIIToUTF16("CAS"), util_.GetInputMethodShortName(desc)); 168 EXPECT_EQ(ASCIIToUTF16("CAS"), util_.GetInputMethodShortName(desc));
159 } 169 }
160 { 170 {
161 InputMethodDescriptor desc = GetDesc(pinyin_ime_id, "us", "zh-CN"); 171 InputMethodDescriptor desc =
172 GetDesc(pinyin_ime_id, "us", "zh-CN", "");
162 EXPECT_EQ(base::UTF8ToUTF16("\xe6\x8b\xbc"), 173 EXPECT_EQ(base::UTF8ToUTF16("\xe6\x8b\xbc"),
163 util_.GetInputMethodShortName(desc)); 174 util_.GetInputMethodShortName(desc));
164 } 175 }
165 { 176 {
166 InputMethodDescriptor desc = GetDesc(zhuyin_ime_id, "us", "zh-TW"); 177 InputMethodDescriptor desc =
178 GetDesc(zhuyin_ime_id, "us", "zh-TW", "");
167 EXPECT_EQ(base::UTF8ToUTF16("\xE6\xB3\xA8"), 179 EXPECT_EQ(base::UTF8ToUTF16("\xE6\xB3\xA8"),
168 util_.GetInputMethodShortName(desc)); 180 util_.GetInputMethodShortName(desc));
169 } 181 }
170 } 182 }
171 183
172 TEST_F(InputMethodUtilTest, GetInputMethodMediumNameTest) { 184 TEST_F(InputMethodUtilTest, GetInputMethodMediumNameTest) {
173 { 185 {
174 // input methods with medium name equal to short name 186 // input methods with medium name equal to short name
175 const char * input_method_id[] = { 187 const char * input_method_id[] = {
176 "xkb:us:altgr-intl:eng", 188 "xkb:us:altgr-intl:eng",
177 "xkb:us:dvorak:eng", 189 "xkb:us:dvorak:eng",
178 "xkb:us:intl:eng", 190 "xkb:us:intl:eng",
179 "xkb:us:colemak:eng", 191 "xkb:us:colemak:eng",
180 "english-m",
181 "xkb:de:neo:ger", 192 "xkb:de:neo:ger",
182 "xkb:es:cat:cat", 193 "xkb:es:cat:cat",
183 "xkb:gb:dvorak:eng", 194 "xkb:gb:dvorak:eng",
184 }; 195 };
185 const int len = ARRAYSIZE_UNSAFE(input_method_id); 196 const int len = ARRAYSIZE_UNSAFE(input_method_id);
186 for (int i=0; i<len; ++i) { 197 for (int i=0; i<len; ++i) {
187 InputMethodDescriptor desc = GetDesc(input_method_id[i], "", ""); 198 InputMethodDescriptor desc = GetDesc(input_method_id[i], "", "", "");
188 base::string16 medium_name = util_.GetInputMethodMediumName(desc); 199 base::string16 medium_name = util_.GetInputMethodMediumName(desc);
189 base::string16 short_name = util_.GetInputMethodShortName(desc); 200 base::string16 short_name = util_.GetInputMethodShortName(desc);
190 EXPECT_EQ(medium_name,short_name); 201 EXPECT_EQ(medium_name,short_name);
191 } 202 }
192 } 203 }
193 { 204 {
194 // input methods with medium name not equal to short name 205 // input methods with medium name not equal to short name
195 const char * input_method_id[] = { 206 const char * input_method_id[] = {
196 "m17n:zh:cangjie", 207 "m17n:zh:cangjie",
197 "m17n:zh:quick", 208 "m17n:zh:quick",
198 pinyin_ime_id, 209 pinyin_ime_id,
199 zhuyin_ime_id, 210 zhuyin_ime_id,
200 "mozc-hangul", 211 "mozc-hangul",
201 pinyin_ime_id, 212 pinyin_ime_id,
202 pinyin_ime_id, 213 pinyin_ime_id,
203 }; 214 };
204 const int len = ARRAYSIZE_UNSAFE(input_method_id); 215 const int len = ARRAYSIZE_UNSAFE(input_method_id);
205 for (int i=0; i<len; ++i) { 216 for (int i=0; i<len; ++i) {
206 InputMethodDescriptor desc = GetDesc(input_method_id[i], "", ""); 217 InputMethodDescriptor desc = GetDesc(input_method_id[i], "", "", "");
207 base::string16 medium_name = util_.GetInputMethodMediumName(desc); 218 base::string16 medium_name = util_.GetInputMethodMediumName(desc);
208 base::string16 short_name = util_.GetInputMethodShortName(desc); 219 base::string16 short_name = util_.GetInputMethodShortName(desc);
209 EXPECT_NE(medium_name,short_name); 220 EXPECT_NE(medium_name,short_name);
210 } 221 }
211 } 222 }
212 } 223 }
213 224
214 TEST_F(InputMethodUtilTest, GetInputMethodLongNameTest) { 225 TEST_F(InputMethodUtilTest, GetInputMethodLongNameTest) {
215 // For most languages input method or keyboard layout name is returned. 226 // For most languages input method or keyboard layout name is returned.
216 // See below for exceptions. 227 // See below for exceptions.
217 { 228 {
218 InputMethodDescriptor desc = GetDesc("m17n:fa:isiri", "us", "fa"); 229 InputMethodDescriptor desc = GetDesc("m17n:fa:isiri", "us", "fa", "");
219 EXPECT_EQ(ASCIIToUTF16("Persian input method (ISIRI 2901 layout)"), 230 EXPECT_EQ(ASCIIToUTF16("Persian input method (ISIRI 2901 layout)"),
220 util_.GetInputMethodLongName(desc)); 231 util_.GetInputMethodLongName(desc));
221 } 232 }
222 { 233 {
223 InputMethodDescriptor desc = GetDesc("mozc-hangul", "us", "ko"); 234 InputMethodDescriptor desc = GetDesc("mozc-hangul", "us", "ko", "");
224 EXPECT_EQ(ASCIIToUTF16("Korean input method"), 235 EXPECT_EQ(ASCIIToUTF16("Korean input method"),
225 util_.GetInputMethodLongName(desc)); 236 util_.GetInputMethodLongName(desc));
226 } 237 }
227 { 238 {
228 InputMethodDescriptor desc = GetDesc("m17n:vi:tcvn", "us", "vi"); 239 InputMethodDescriptor desc = GetDesc("m17n:vi:tcvn", "us", "vi", "");
229 EXPECT_EQ(ASCIIToUTF16("Vietnamese input method (TCVN6064)"), 240 EXPECT_EQ(ASCIIToUTF16("Vietnamese input method (TCVN6064)"),
230 util_.GetInputMethodLongName(desc)); 241 util_.GetInputMethodLongName(desc));
231 } 242 }
232 { 243 {
233 InputMethodDescriptor desc = GetDesc("xkb:jp::jpn", "jp", "ja"); 244 InputMethodDescriptor desc = GetDesc("xkb:jp::jpn", "jp", "ja", "");
234 EXPECT_EQ(ASCIIToUTF16("Japanese keyboard"), 245 EXPECT_EQ(ASCIIToUTF16("Japanese keyboard"),
235 util_.GetInputMethodLongName(desc)); 246 util_.GetInputMethodLongName(desc));
236 } 247 }
237 { 248 {
238 InputMethodDescriptor desc = 249 InputMethodDescriptor desc =
239 GetDesc("xkb:us:dvorak:eng", "us(dvorak)", "en-US"); 250 GetDesc("xkb:us:dvorak:eng", "us(dvorak)", "en-US", "");
240 EXPECT_EQ(ASCIIToUTF16("US Dvorak keyboard"), 251 EXPECT_EQ(ASCIIToUTF16("US Dvorak keyboard"),
241 util_.GetInputMethodLongName(desc)); 252 util_.GetInputMethodLongName(desc));
242 } 253 }
243 { 254 {
244 InputMethodDescriptor desc = 255 InputMethodDescriptor desc =
245 GetDesc("xkb:gb:dvorak:eng", "gb(dvorak)", "en-US"); 256 GetDesc("xkb:gb:dvorak:eng", "gb(dvorak)", "en-US", "");
246 EXPECT_EQ(ASCIIToUTF16("UK Dvorak keyboard"), 257 EXPECT_EQ(ASCIIToUTF16("UK Dvorak keyboard"),
247 util_.GetInputMethodLongName(desc)); 258 util_.GetInputMethodLongName(desc));
248 } 259 }
249 260
250 // For Arabic, Dutch, French, German and Hindi, 261 // For Arabic, Dutch, French, German and Hindi,
251 // "language - keyboard layout" pair is returned. 262 // "language - keyboard layout" pair is returned.
252 { 263 {
253 InputMethodDescriptor desc = GetDesc("m17n:ar:kbd", "us", "ar"); 264 InputMethodDescriptor desc = GetDesc("m17n:ar:kbd", "us", "ar", "");
254 EXPECT_EQ(ASCIIToUTF16("Arabic - Standard input method"), 265 EXPECT_EQ(ASCIIToUTF16("Arabic - Standard input method"),
255 util_.GetInputMethodLongName(desc)); 266 util_.GetInputMethodLongName(desc));
256 } 267 }
257 { 268 {
258 InputMethodDescriptor desc = GetDesc("xkb:be::nld", "be", "nl"); 269 InputMethodDescriptor desc = GetDesc("xkb:be::nld", "be", "nl", "");
259 EXPECT_EQ(ASCIIToUTF16("Dutch - Belgian keyboard"), 270 EXPECT_EQ(ASCIIToUTF16("Dutch - Belgian keyboard"),
260 util_.GetInputMethodLongName(desc)); 271 util_.GetInputMethodLongName(desc));
261 } 272 }
262 { 273 {
263 InputMethodDescriptor desc = GetDesc("xkb:fr::fra", "fr", "fr"); 274 InputMethodDescriptor desc = GetDesc("xkb:fr::fra", "fr", "fr", "");
264 EXPECT_EQ(ASCIIToUTF16("French - French keyboard"), 275 EXPECT_EQ(ASCIIToUTF16("French - French keyboard"),
265 util_.GetInputMethodLongName(desc)); 276 util_.GetInputMethodLongName(desc));
266 } 277 }
267 { 278 {
268 InputMethodDescriptor desc = GetDesc("xkb:be::fra", "be", "fr"); 279 InputMethodDescriptor desc = GetDesc("xkb:be::fra", "be", "fr", "");
269 EXPECT_EQ(ASCIIToUTF16("French - Belgian keyboard"), 280 EXPECT_EQ(ASCIIToUTF16("French - Belgian keyboard"),
270 util_.GetInputMethodLongName(desc)); 281 util_.GetInputMethodLongName(desc));
271 } 282 }
272 { 283 {
273 InputMethodDescriptor desc = GetDesc("xkb:de::ger", "de", "de"); 284 InputMethodDescriptor desc = GetDesc("xkb:de::ger", "de", "de", "");
274 EXPECT_EQ(ASCIIToUTF16("German - German keyboard"), 285 EXPECT_EQ(ASCIIToUTF16("German - German keyboard"),
275 util_.GetInputMethodLongName(desc)); 286 util_.GetInputMethodLongName(desc));
276 } 287 }
277 { 288 {
278 InputMethodDescriptor desc = GetDesc("xkb:be::ger", "be", "de"); 289 InputMethodDescriptor desc = GetDesc("xkb:be::ger", "be", "de", "");
279 EXPECT_EQ(ASCIIToUTF16("German - Belgian keyboard"), 290 EXPECT_EQ(ASCIIToUTF16("German - Belgian keyboard"),
280 util_.GetInputMethodLongName(desc)); 291 util_.GetInputMethodLongName(desc));
281 } 292 }
282 { 293 {
283 InputMethodDescriptor desc = GetDesc("m17n:hi:itrans", "us", "hi"); 294 InputMethodDescriptor desc = GetDesc("m17n:hi:itrans", "us", "hi", "");
284 EXPECT_EQ(ASCIIToUTF16("Hindi - Standard input method"), 295 EXPECT_EQ(ASCIIToUTF16("Hindi - Standard input method"),
285 util_.GetInputMethodLongName(desc)); 296 util_.GetInputMethodLongName(desc));
286 } 297 }
287 298
288 { 299 {
289 InputMethodDescriptor desc = GetDesc("invalid-id", "us", "xx"); 300 InputMethodDescriptor desc = GetDesc("invalid-id", "us", "xx", "");
290 // You can safely ignore the "Resouce ID is not found for: invalid-id" 301 // You can safely ignore the "Resouce ID is not found for: invalid-id"
291 // error. 302 // error.
292 EXPECT_EQ(ASCIIToUTF16("invalid-id"), 303 EXPECT_EQ(ASCIIToUTF16("invalid-id"),
293 util_.GetInputMethodLongName(desc)); 304 util_.GetInputMethodLongName(desc));
294 } 305 }
295 } 306 }
296 307
297 TEST_F(InputMethodUtilTest, TestIsValidInputMethodId) { 308 TEST_F(InputMethodUtilTest, TestIsValidInputMethodId) {
298 EXPECT_TRUE(util_.IsValidInputMethodId("xkb:us:colemak:eng")); 309 EXPECT_TRUE(util_.IsValidInputMethodId("xkb:us:colemak:eng"));
299 EXPECT_TRUE(util_.IsValidInputMethodId(pinyin_ime_id)); 310 EXPECT_TRUE(util_.IsValidInputMethodId(pinyin_ime_id));
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 EXPECT_FALSE(display_name.empty()) 491 EXPECT_FALSE(display_name.empty())
481 << "Invalid language code " << language_code; 492 << "Invalid language code " << language_code;
482 // On error, GetDisplayNameForLocale() returns the |language_code| as-is. 493 // On error, GetDisplayNameForLocale() returns the |language_code| as-is.
483 EXPECT_NE(language_code, base::UTF16ToUTF8(display_name)) 494 EXPECT_NE(language_code, base::UTF16ToUTF8(display_name))
484 << "Invalid language code " << language_code; 495 << "Invalid language code " << language_code;
485 } 496 }
486 } 497 }
487 498
488 } // namespace input_method 499 } // namespace input_method
489 } // namespace chromeos 500 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698