input_method_menu_unittest.cc revision 72a454cd3513ac24fbdd0e0cb9ad70b86a99b801
1// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/chromeos/status/input_method_menu.h"
6
7#include "base/utf_string_conversions.h"
8#include "chrome/browser/chromeos/cros/cros_library.h"
9#include "testing/gtest/include/gtest/gtest.h"
10
11namespace chromeos {
12
13TEST(InputMethodMenuTest, GetTextForIndicatorTest) {
14  ScopedStubCrosEnabler enabler;
15  // Test normal cases. Two-letter language code should be returned.
16  {
17    InputMethodDescriptor desc("m17n:fa:isiri",  // input method engine id
18                               "isiri (m17n)",  // input method name
19                               "us",  // keyboard layout name
20                               "fa");  // language name
21    EXPECT_EQ(L"FA", InputMethodMenu::GetTextForIndicator(desc));
22  }
23  {
24    InputMethodDescriptor desc("hangul", "Korean", "us", "ko");
25    EXPECT_EQ(UTF8ToWide("\xed\x95\x9c"),
26              InputMethodMenu::GetTextForIndicator(desc));
27  }
28  {
29    InputMethodDescriptor desc("invalid-id", "unregistered string", "us", "xx");
30    // Upper-case string of the unknown language code, "xx", should be returned.
31    EXPECT_EQ(L"XX", InputMethodMenu::GetTextForIndicator(desc));
32  }
33
34  // Test special cases.
35  {
36    InputMethodDescriptor desc("xkb:us:dvorak:eng", "Dvorak", "us", "eng");
37    EXPECT_EQ(L"DV", InputMethodMenu::GetTextForIndicator(desc));
38  }
39  {
40    InputMethodDescriptor desc("xkb:us:colemak:eng", "Colemak", "us", "eng");
41    EXPECT_EQ(L"CO", InputMethodMenu::GetTextForIndicator(desc));
42  }
43  {
44    InputMethodDescriptor desc("xkb:us:altgr-intl:eng", "US extd", "us", "eng");
45    EXPECT_EQ(L"EXTD", InputMethodMenu::GetTextForIndicator(desc));
46  }
47  {
48    InputMethodDescriptor desc("xkb:us:intl:eng", "US intl", "us", "eng");
49    EXPECT_EQ(L"INTL", InputMethodMenu::GetTextForIndicator(desc));
50  }
51  {
52    InputMethodDescriptor desc("xkb:de:neo:ger", "Germany - Neo 2", "de(neo)",
53                               "ger");
54    EXPECT_EQ(L"NEO", InputMethodMenu::GetTextForIndicator(desc));
55  }
56  {
57    InputMethodDescriptor desc("mozc", "Mozc", "us", "ja");
58    EXPECT_EQ(UTF8ToWide("\xe3\x81\x82"),
59              InputMethodMenu::GetTextForIndicator(desc));
60  }
61  {
62    InputMethodDescriptor desc("mozc-jp", "Mozc", "jp", "ja");
63    EXPECT_EQ(UTF8ToWide("\xe3\x81\x82"),
64              InputMethodMenu::GetTextForIndicator(desc));
65  }
66  {
67    InputMethodDescriptor desc("pinyin", "Pinyin", "us", "zh-CN");
68    EXPECT_EQ(UTF8ToWide("\xe6\x8b\xbc"),
69              InputMethodMenu::GetTextForIndicator(desc));
70  }
71  {
72    InputMethodDescriptor desc("chewing", "Chewing", "us", "zh-TW");
73    EXPECT_EQ(UTF8ToWide("\xe9\x85\xb7"),
74              InputMethodMenu::GetTextForIndicator(desc));
75  }
76  {
77    InputMethodDescriptor desc("m17n:zh:cangjie", "Cangjie", "us", "zh-TW");
78    EXPECT_EQ(UTF8ToWide("\xe5\x80\x89"),
79              InputMethodMenu::GetTextForIndicator(desc));
80  }
81  {
82    InputMethodDescriptor desc("m17n:zh:quick", "Quick", "us", "zh-TW");
83    EXPECT_EQ(UTF8ToWide("\xe9\x80\x9f"),
84              InputMethodMenu::GetTextForIndicator(desc));
85  }
86}
87
88
89// Test whether the function returns language name for non-ambiguous languages.
90TEST(InputMethodMenuTest, GetTextForMenuTest) {
91  // For most languages input method or keyboard layout name is returned.
92  // See below for exceptions.
93  {
94    InputMethodDescriptor desc("m17n:fa:isiri", "isiri (m17n)", "us", "fa");
95    EXPECT_EQ(L"Persian input method (ISIRI 2901 layout)",
96              InputMethodMenu::GetTextForMenu(desc));
97  }
98  {
99    InputMethodDescriptor desc("hangul", "Korean", "us", "ko");
100    EXPECT_EQ(L"Korean input method",
101              InputMethodMenu::GetTextForMenu(desc));
102  }
103  {
104    InputMethodDescriptor desc("m17n:vi:tcvn", "tcvn (m17n)", "us", "vi");
105    EXPECT_EQ(L"Vietnamese input method (TCVN6064)",
106              InputMethodMenu::GetTextForMenu(desc));
107  }
108  {
109    InputMethodDescriptor desc("mozc", "Mozc (US keyboard layout)", "us", "ja");
110    EXPECT_EQ(L"Japanese input method (for US keyboard)",
111              InputMethodMenu::GetTextForMenu(desc));
112  }
113  {
114    InputMethodDescriptor desc("xkb:jp::jpn", "Japan", "jp", "jpn");
115    EXPECT_EQ(L"Japanese keyboard layout",
116              InputMethodMenu::GetTextForMenu(desc));
117  }
118  {
119    InputMethodDescriptor desc("xkb:us:dvorak:eng", "USA - Dvorak",
120                               "us(dvorak)", "eng");
121    EXPECT_EQ(L"English (Dvorak)",
122              InputMethodMenu::GetTextForMenu(desc));
123  }
124
125  // For Arabic, Dutch, French, German and Hindi,
126  // "language - keyboard layout" pair is returned.
127  {
128    InputMethodDescriptor desc("m17n:ar:kbd", "kbd (m17n)", "us", "ar");
129    EXPECT_EQ(L"Arabic - Standard input method",
130              InputMethodMenu::GetTextForMenu(desc));
131  }
132  {
133    InputMethodDescriptor desc("xkb:nl::nld", "Netherlands", "nl", "nld");
134    EXPECT_EQ(L"Dutch - Dutch keyboard layout",
135              InputMethodMenu::GetTextForMenu(desc));
136  }
137  {
138    InputMethodDescriptor desc("xkb:be::nld", "Belgium", "be", "nld");
139    EXPECT_EQ(L"Dutch - Belgian keyboard layout",
140              InputMethodMenu::GetTextForMenu(desc));
141  }
142  {
143    InputMethodDescriptor desc("xkb:fr::fra", "France", "fr", "fra");
144    EXPECT_EQ(L"French - French keyboard layout",
145              InputMethodMenu::GetTextForMenu(desc));
146  }
147  {
148    InputMethodDescriptor desc("xkb:be::fra", "Belgium", "be", "fra");
149    EXPECT_EQ(L"French - Belgian keyboard layout",
150              InputMethodMenu::GetTextForMenu(desc));
151  }
152  {
153    InputMethodDescriptor desc("xkb:de::ger", "Germany", "de", "ger");
154    EXPECT_EQ(L"German - German keyboard layout",
155              InputMethodMenu::GetTextForMenu(desc));
156  }
157  {
158    InputMethodDescriptor desc("xkb:be::ger", "Belgium", "be", "ger");
159    EXPECT_EQ(L"German - Belgian keyboard layout",
160              InputMethodMenu::GetTextForMenu(desc));
161  }
162  {
163    InputMethodDescriptor desc("m17n:hi:itrans", "itrans (m17n)", "us", "hi");
164    EXPECT_EQ(L"Hindi - Standard input method",
165              InputMethodMenu::GetTextForMenu(desc));
166  }
167
168  {
169    InputMethodDescriptor desc("invalid-id", "unregistered string", "us", "xx");
170    // You can safely ignore the "Resouce ID is not found for: unregistered
171    // string" error.
172    EXPECT_EQ(L"unregistered string",
173              InputMethodMenu::GetTextForMenu(desc));
174  }
175}
176
177}  // namespace chromeos
178