#include "ui/events/keycodes/keyboard_code_conversion_fuchsia.h"
#include <fidl/fuchsia.ui.input3/cpp/fidl.h>
#include <cstdint>
#include "base/logging.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/events/keycodes/dom/dom_key.h"
#include "ui/events/keycodes/dom/keycode_converter.h"
namespace {
using fuchsia_input::Key;
using fuchsia_ui_input3::KeyMeaning;
using fuchsia_ui_input3::NonPrintableKey;
#define EXPECT_CODEPOINT_MAPS(codepoint) \
EXPECT_EQ( \
ui::DomKey::FromCharacter(codepoint), \
ui::DomKeyFromFuchsiaKeyMeaning(KeyMeaning::WithCodepoint(codepoint))) \
<< " for codepoint " << codepoint;
void CheckConversionsInRange(int start, int size) {
for (int i = 0; i < size; i++)
EXPECT_CODEPOINT_MAPS(start + i);
}
TEST(FuchsiaKeyboardCodeConversion, FuchsiaKeyToDomKeyConversionRanges) {
CheckConversionsInRange(0x0030, 10);
CheckConversionsInRange(0x0041, 26);
CheckConversionsInRange(0x0061, 26);
}
TEST(FuchsiaKeyboardCodeConversion, FuchsiaKeyToDomKeySpecificValues) {
EXPECT_EQ(ui::DomKey::FromCharacter(0x00a5),
ui::DomKeyFromFuchsiaKeyMeaning(KeyMeaning::WithCodepoint(165)));
EXPECT_EQ(ui::DomKey::FromCharacter(0x007d),
ui::DomKeyFromFuchsiaKeyMeaning(KeyMeaning::WithCodepoint(125)));
EXPECT_EQ(ui::DomKey::FromCharacter(0x0109),
ui::DomKeyFromFuchsiaKeyMeaning(KeyMeaning::WithCodepoint(265)));
EXPECT_EQ(ui::DomKey::ENTER,
ui::DomKeyFromFuchsiaKeyMeaning(
KeyMeaning::WithNonPrintableKey(NonPrintableKey::kEnter)));
}
}