OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 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 | 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/status/language_menu_button.h" | 5 #include "chrome/browser/chromeos/status/language_menu_button.h" |
6 | 6 |
7 #include "base/utf_string_conversions.h" | 7 #include "base/utf_string_conversions.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 | 9 |
10 namespace chromeos { | 10 namespace chromeos { |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 EXPECT_EQ(UTF8ToWide("\xe5\x80\x89"), | 58 EXPECT_EQ(UTF8ToWide("\xe5\x80\x89"), |
59 LanguageMenuButton::GetTextForIndicator(desc)); | 59 LanguageMenuButton::GetTextForIndicator(desc)); |
60 } | 60 } |
61 { | 61 { |
62 InputMethodDescriptor desc("m17n:zh:quick", "Quick", "us", "zh-TW"); | 62 InputMethodDescriptor desc("m17n:zh:quick", "Quick", "us", "zh-TW"); |
63 EXPECT_EQ(UTF8ToWide("TW"), | 63 EXPECT_EQ(UTF8ToWide("TW"), |
64 LanguageMenuButton::GetTextForIndicator(desc)); | 64 LanguageMenuButton::GetTextForIndicator(desc)); |
65 } | 65 } |
66 } | 66 } |
67 | 67 |
68 TEST(LanguageMenuButtonTest, GetTextForTooltipTest) { | 68 |
69 const bool kAddMethodName = true; | 69 // Test whether the function returns language name for non-ambiguous languages. |
| 70 TEST(LanguageMenuButtonTest, GetTextForMenuTest) { |
| 71 // For most languages input method or keyboard layout name is returned. |
| 72 // See below for exceptions. |
70 { | 73 { |
71 InputMethodDescriptor desc("m17n:fa:isiri", "isiri (m17n)", "us", "fa"); | 74 InputMethodDescriptor desc("m17n:fa:isiri", "isiri (m17n)", "us", "fa"); |
72 EXPECT_EQ(L"Persian - Persian input method (ISIRI 2901 layout)", | 75 EXPECT_EQ(L"Persian input method (ISIRI 2901 layout)", |
73 LanguageMenuButton::GetTextForMenu(desc, kAddMethodName)); | 76 LanguageMenuButton::GetTextForMenu(desc)); |
74 } | 77 } |
75 { | 78 { |
76 InputMethodDescriptor desc("hangul", "Korean", "us", "ko"); | 79 InputMethodDescriptor desc("hangul", "Korean", "us", "ko"); |
77 EXPECT_EQ(L"Korean - Korean input method", | 80 EXPECT_EQ(L"Korean input method", |
78 LanguageMenuButton::GetTextForMenu(desc, kAddMethodName)); | 81 LanguageMenuButton::GetTextForMenu(desc)); |
79 } | 82 } |
80 { | 83 { |
| 84 InputMethodDescriptor desc("m17n:vi:tcvn", "tcvn (m17n)", "us", "vi"); |
| 85 EXPECT_EQ(L"Vietnamese input method (TCVN6064)", |
| 86 LanguageMenuButton::GetTextForMenu(desc)); |
| 87 } |
| 88 { |
| 89 InputMethodDescriptor desc("mozc", "Mozc (US keyboard layout)", "us", "ja"); |
| 90 EXPECT_EQ(L"Japanese input method (for US keyboard)", |
| 91 LanguageMenuButton::GetTextForMenu(desc)); |
| 92 } |
| 93 { |
| 94 InputMethodDescriptor desc("xkb:jp::jpn", "Japan", "jp", "jpn"); |
| 95 EXPECT_EQ(L"Japanese keyboard layout", |
| 96 LanguageMenuButton::GetTextForMenu(desc)); |
| 97 } |
| 98 { |
| 99 InputMethodDescriptor desc("xkb:us:dvorak:eng", "USA - Dvorak", |
| 100 "us(dvorak)", "eng"); |
| 101 EXPECT_EQ(L"English (Dvorak)", |
| 102 LanguageMenuButton::GetTextForMenu(desc)); |
| 103 } |
| 104 |
| 105 // For Arabic, Dutch, French, German, Hebrew and Hindi, |
| 106 // "language - keyboard layout" pair is returned. |
| 107 { |
| 108 InputMethodDescriptor desc("m17n:ar:kbd", "kbd (m17n)", "us", "ar"); |
| 109 EXPECT_EQ(L"Arabic - Standard input method", |
| 110 LanguageMenuButton::GetTextForMenu(desc)); |
| 111 } |
| 112 { |
| 113 InputMethodDescriptor desc("xkb:nl::nld", "Netherlands", "nl", "nld"); |
| 114 EXPECT_EQ(L"Dutch - Dutch keyboard layout", |
| 115 LanguageMenuButton::GetTextForMenu(desc)); |
| 116 } |
| 117 { |
| 118 InputMethodDescriptor desc("xkb:be::nld", "Belgium", "be", "nld"); |
| 119 EXPECT_EQ(L"Dutch - Belgian keyboard layout", |
| 120 LanguageMenuButton::GetTextForMenu(desc)); |
| 121 } |
| 122 { |
| 123 InputMethodDescriptor desc("xkb:fr::fra", "France", "fr", "fra"); |
| 124 EXPECT_EQ(L"French - French keyboard layout", |
| 125 LanguageMenuButton::GetTextForMenu(desc)); |
| 126 } |
| 127 { |
| 128 InputMethodDescriptor desc("xkb:be::fra", "Belgium", "be", "fra"); |
| 129 EXPECT_EQ(L"French - Belgian keyboard layout", |
| 130 LanguageMenuButton::GetTextForMenu(desc)); |
| 131 } |
| 132 { |
| 133 InputMethodDescriptor desc("xkb:de::ger", "Germany", "de", "ger"); |
| 134 EXPECT_EQ(L"German - German keyboard layout", |
| 135 LanguageMenuButton::GetTextForMenu(desc)); |
| 136 } |
| 137 { |
| 138 InputMethodDescriptor desc("xkb:be::ger", "Belgium", "be", "ger"); |
| 139 EXPECT_EQ(L"German - Belgian keyboard layout", |
| 140 LanguageMenuButton::GetTextForMenu(desc)); |
| 141 } |
| 142 { |
| 143 InputMethodDescriptor desc("m17n:he:kbd", "kbd (m17n)", "us", "he"); |
| 144 EXPECT_EQ(L"Hebrew - Standard input method", |
| 145 LanguageMenuButton::GetTextForMenu(desc)); |
| 146 } |
| 147 { |
| 148 InputMethodDescriptor desc("m17n:hi:itrans", "itrans (m17n)", "us", "hi"); |
| 149 EXPECT_EQ(L"Hindi - Standard input method", |
| 150 LanguageMenuButton::GetTextForMenu(desc)); |
| 151 } |
| 152 |
| 153 { |
81 InputMethodDescriptor desc("invalid-id", "unregistered string", "us", "xx"); | 154 InputMethodDescriptor desc("invalid-id", "unregistered string", "us", "xx"); |
82 // You can safely ignore the "Resouce ID is not found for: unregistered | 155 // You can safely ignore the "Resouce ID is not found for: unregistered |
83 // string" error. | 156 // string" error. |
84 EXPECT_EQ(L"xx - unregistered string", | 157 EXPECT_EQ(L"unregistered string", |
85 LanguageMenuButton::GetTextForMenu(desc, kAddMethodName)); | 158 LanguageMenuButton::GetTextForMenu(desc)); |
86 } | 159 } |
87 } | 160 } |
88 | 161 |
89 TEST(LanguageMenuButtonTest, GetAmbiguousLanguageCodeSet) { | |
90 { | |
91 std::set<std::string> ambiguous_language_code_set; | |
92 InputMethodDescriptors descriptors; | |
93 descriptors.push_back(InputMethodDescriptor( | |
94 "xkb:us::eng", "USA", "us", "eng")); | |
95 LanguageMenuButton::GetAmbiguousLanguageCodeSet( | |
96 descriptors, &ambiguous_language_code_set); | |
97 // There is no ambituity. | |
98 EXPECT_TRUE(ambiguous_language_code_set.empty()); | |
99 } | |
100 { | |
101 std::set<std::string> ambiguous_language_code_set; | |
102 InputMethodDescriptors descriptors; | |
103 descriptors.push_back(InputMethodDescriptor( | |
104 "xkb:us::eng", "USA", "us", "eng")); | |
105 descriptors.push_back(InputMethodDescriptor( | |
106 "xkb:us:dvorak:eng", "Dvorak", "us", "eng")); | |
107 LanguageMenuButton::GetAmbiguousLanguageCodeSet( | |
108 descriptors, &ambiguous_language_code_set); | |
109 // This is ambiguous, as two input methods are present for "en-US". | |
110 EXPECT_EQ(1U, ambiguous_language_code_set.size()); | |
111 EXPECT_EQ(1U, ambiguous_language_code_set.count("en-US")); | |
112 } | |
113 { | |
114 std::set<std::string> ambiguous_language_code_set; | |
115 InputMethodDescriptors descriptors; | |
116 descriptors.push_back(InputMethodDescriptor( | |
117 "xkb:jp::jpn", "Japan", "jp", "jpn")); | |
118 LanguageMenuButton::GetAmbiguousLanguageCodeSet( | |
119 descriptors, &ambiguous_language_code_set); | |
120 // Japanese is special. Showing the language name alone for the | |
121 // Japanese keyboard layout is confusing, hence we consider it | |
122 // ambiguous. | |
123 EXPECT_EQ(1U, ambiguous_language_code_set.size()); | |
124 EXPECT_EQ(1U, ambiguous_language_code_set.count("ja")); | |
125 } | |
126 } | |
127 | |
128 } // namespace chromeos | 162 } // namespace chromeos |
OLD | NEW |