OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "ui/events/keycodes/dom/keycode_converter.h" | 5 #include "ui/events/keycodes/dom/keycode_converter.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
123 if (entry->code) { | 123 if (entry->code) { |
124 EXPECT_STREQ(entry->code, | 124 EXPECT_STREQ(entry->code, |
125 ui::KeycodeConverter::DomCodeToCodeString(code)); | 125 ui::KeycodeConverter::DomCodeToCodeString(code)); |
126 } else { | 126 } else { |
127 EXPECT_EQ(static_cast<int>(ui::DomCode::NONE), | 127 EXPECT_EQ(static_cast<int>(ui::DomCode::NONE), |
128 static_cast<int>(code)); | 128 static_cast<int>(code)); |
129 } | 129 } |
130 } | 130 } |
131 } | 131 } |
132 | 132 |
133 TEST(KeycodeConverter, DomKey) { | 133 TEST(KeycodeConverter, DomKey) { |
kpschoedel
2015/08/07 20:42:12
Added cases for Unicode characters.
| |
134 // Test invalid and unknown arguments to KeyStringToDomKey() | 134 static const struct { |
135 EXPECT_EQ(ui::DomKey::NONE, ui::KeycodeConverter::KeyStringToDomKey(nullptr)); | 135 ui::DomKey key; |
136 EXPECT_EQ(ui::DomKey::NONE, ui::KeycodeConverter::KeyStringToDomKey("-")); | 136 bool is_unicode; |
137 // Round-trip test DOM Level 3 .key strings. | 137 bool is_dead; |
138 bool test_to_string; | |
139 const char *const string; | |
140 } test_cases[] = { | |
141 // Invalid arguments to KeyStringToDomKey(). | |
142 {ui::DomKey::NONE, false, false, false, nullptr}, | |
143 {ui::DomKey::NONE, false, false, true, ""}, | |
144 {ui::DomKey::NONE, false, false, false, "?!?"}, | |
145 {ui::DomKey::NONE, false, false, false, "\x61\xCC\x81"}, | |
146 // Some single Unicode characters. | |
147 {'-', true, false, true, "-" }, | |
148 {'A', true, false, true, "A"}, | |
149 {0xE1, true, false, true, "\xC3\xA1"}, | |
150 {0x1F648, true, false, true, "\xF0\x9F\x99\x88"}, | |
151 // Unicode-equivalent named values. | |
152 {ui::DomKey::BACKSPACE, true, false, true, "Backspace"}, | |
153 {ui::DomKey::TAB, true, false, true, "Tab"}, | |
154 {ui::DomKey::ENTER, true, false, true, "Enter"}, | |
155 {ui::DomKey::ESCAPE, true, false, true, "Escape"}, | |
156 {ui::DomKey::DEL, true, false, true, "Delete"}, | |
157 {ui::DomKey::BACKSPACE, true, false, false, "\b"}, | |
158 {ui::DomKey::TAB, true, false, false, "\t"}, | |
159 {ui::DomKey::ENTER, true, false, false, "\r"}, | |
160 {ui::DomKey::ESCAPE, true, false, false, "\x1B"}, | |
161 {ui::DomKey::DEL, true, false, false, "\x7F"}, | |
162 {'\b', true, false, true, "Backspace"}, | |
163 {'\t', true, false, true, "Tab"}, | |
164 {'\r', true, false, true, "Enter"}, | |
165 {0x1B, true, false, true, "Escape"}, | |
166 {0x7F, true, false, true, "Delete"}, | |
167 // 'Dead' key. | |
168 {ui::DomKey::Dead(0xFFFF), false, true, true, "Dead"}, | |
169 // Sample non-Unicode key names. | |
170 {ui::DomKey::SHIFT, false, false, true, "Shift"}, | |
171 {ui::DomKey::F16, false, false, true, "F16"}, | |
172 {ui::DomKey::ZOOM_IN, false, false, true, "ZoomIn"}, | |
173 {ui::DomKey::UNIDENTIFIED, false, false, true, "Unidentified"}, | |
174 }; | |
175 for (const auto& test : test_cases) { | |
176 // Check KeyStringToDomKey(). | |
177 ui::DomKey key = ui::KeycodeConverter::KeyStringToDomKey(test.string); | |
178 EXPECT_EQ(test.is_unicode, key.IsUnicode()); | |
179 EXPECT_EQ(test.is_dead, key.IsDead()); | |
180 EXPECT_EQ(test.key, key); | |
181 // Check |DomKeyToKeyString()|. | |
182 if (test.test_to_string) { | |
183 std::string s(ui::KeycodeConverter::DomKeyToKeyString(test.key)); | |
184 EXPECT_STREQ(test.string, s.c_str()); | |
185 } | |
186 } | |
187 // Round-trip test all UI Events KeyboardEvent.key strings. | |
138 const char* s = nullptr; | 188 const char* s = nullptr; |
139 for (size_t i = 0; | 189 for (size_t i = 0; |
140 (s = ui::KeycodeConverter::DomKeyStringForTest(i)) != nullptr; | 190 (s = ui::KeycodeConverter::DomKeyStringForTest(i)) != nullptr; ++i) { |
141 ++i) { | |
142 SCOPED_TRACE(i); | 191 SCOPED_TRACE(i); |
143 ui::DomKey key = ui::KeycodeConverter::KeyStringToDomKey(s); | 192 ui::DomKey key = ui::KeycodeConverter::KeyStringToDomKey(s); |
144 if (s) { | 193 if (s) { |
145 EXPECT_STREQ(s, ui::KeycodeConverter::DomKeyToKeyString(key)); | 194 EXPECT_STREQ(s, ui::KeycodeConverter::DomKeyToKeyString(key).c_str()); |
146 } else { | 195 } else { |
147 EXPECT_EQ(ui::DomKey::NONE, key); | 196 EXPECT_EQ(ui::DomKey::NONE, key); |
148 } | 197 } |
149 } | 198 } |
150 } | 199 } |
151 | 200 |
152 } // namespace | 201 } // namespace |
OLD | NEW |