Chromium Code Reviews| Index: ui/events/keycodes/dom/keycode_converter_unittest.cc |
| diff --git a/ui/events/keycodes/dom/keycode_converter_unittest.cc b/ui/events/keycodes/dom/keycode_converter_unittest.cc |
| index f5da9a09226a447f0b7f82d77038ec84f134f507..6a719abe1d132a62ed6fd90baa22e1b476dab56e 100644 |
| --- a/ui/events/keycodes/dom/keycode_converter_unittest.cc |
| +++ b/ui/events/keycodes/dom/keycode_converter_unittest.cc |
| @@ -131,18 +131,67 @@ TEST(KeycodeConverter, DomCode) { |
| } |
| TEST(KeycodeConverter, DomKey) { |
|
kpschoedel
2015/08/07 20:42:12
Added cases for Unicode characters.
|
| - // Test invalid and unknown arguments to KeyStringToDomKey() |
| - EXPECT_EQ(ui::DomKey::NONE, ui::KeycodeConverter::KeyStringToDomKey(nullptr)); |
| - EXPECT_EQ(ui::DomKey::NONE, ui::KeycodeConverter::KeyStringToDomKey("-")); |
| - // Round-trip test DOM Level 3 .key strings. |
| + static const struct { |
| + ui::DomKey key; |
| + bool is_unicode; |
| + bool is_dead; |
| + bool test_to_string; |
| + const char *const string; |
| + } test_cases[] = { |
| + // Invalid arguments to KeyStringToDomKey(). |
| + {ui::DomKey::NONE, false, false, false, nullptr}, |
| + {ui::DomKey::NONE, false, false, true, ""}, |
| + {ui::DomKey::NONE, false, false, false, "?!?"}, |
| + {ui::DomKey::NONE, false, false, false, "\x61\xCC\x81"}, |
| + // Some single Unicode characters. |
| + {'-', true, false, true, "-" }, |
| + {'A', true, false, true, "A"}, |
| + {0xE1, true, false, true, "\xC3\xA1"}, |
| + {0x1F648, true, false, true, "\xF0\x9F\x99\x88"}, |
| + // Unicode-equivalent named values. |
| + {ui::DomKey::BACKSPACE, true, false, true, "Backspace"}, |
| + {ui::DomKey::TAB, true, false, true, "Tab"}, |
| + {ui::DomKey::ENTER, true, false, true, "Enter"}, |
| + {ui::DomKey::ESCAPE, true, false, true, "Escape"}, |
| + {ui::DomKey::DEL, true, false, true, "Delete"}, |
| + {ui::DomKey::BACKSPACE, true, false, false, "\b"}, |
| + {ui::DomKey::TAB, true, false, false, "\t"}, |
| + {ui::DomKey::ENTER, true, false, false, "\r"}, |
| + {ui::DomKey::ESCAPE, true, false, false, "\x1B"}, |
| + {ui::DomKey::DEL, true, false, false, "\x7F"}, |
| + {'\b', true, false, true, "Backspace"}, |
| + {'\t', true, false, true, "Tab"}, |
| + {'\r', true, false, true, "Enter"}, |
| + {0x1B, true, false, true, "Escape"}, |
| + {0x7F, true, false, true, "Delete"}, |
| + // 'Dead' key. |
| + {ui::DomKey::Dead(0xFFFF), false, true, true, "Dead"}, |
| + // Sample non-Unicode key names. |
| + {ui::DomKey::SHIFT, false, false, true, "Shift"}, |
| + {ui::DomKey::F16, false, false, true, "F16"}, |
| + {ui::DomKey::ZOOM_IN, false, false, true, "ZoomIn"}, |
| + {ui::DomKey::UNIDENTIFIED, false, false, true, "Unidentified"}, |
| + }; |
| + for (const auto& test : test_cases) { |
| + // Check KeyStringToDomKey(). |
| + ui::DomKey key = ui::KeycodeConverter::KeyStringToDomKey(test.string); |
| + EXPECT_EQ(test.is_unicode, key.IsUnicode()); |
| + EXPECT_EQ(test.is_dead, key.IsDead()); |
| + EXPECT_EQ(test.key, key); |
| + // Check |DomKeyToKeyString()|. |
| + if (test.test_to_string) { |
| + std::string s(ui::KeycodeConverter::DomKeyToKeyString(test.key)); |
| + EXPECT_STREQ(test.string, s.c_str()); |
| + } |
| + } |
| + // Round-trip test all UI Events KeyboardEvent.key strings. |
| const char* s = nullptr; |
| for (size_t i = 0; |
| - (s = ui::KeycodeConverter::DomKeyStringForTest(i)) != nullptr; |
| - ++i) { |
| + (s = ui::KeycodeConverter::DomKeyStringForTest(i)) != nullptr; ++i) { |
| SCOPED_TRACE(i); |
| ui::DomKey key = ui::KeycodeConverter::KeyStringToDomKey(s); |
| if (s) { |
| - EXPECT_STREQ(s, ui::KeycodeConverter::DomKeyToKeyString(key)); |
| + EXPECT_STREQ(s, ui::KeycodeConverter::DomKeyToKeyString(key).c_str()); |
| } else { |
| EXPECT_EQ(ui::DomKey::NONE, key); |
| } |