mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-01-07 21:38:30 -05:00
81 lines
2.2 KiB
C++
81 lines
2.2 KiB
C++
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#include <catch2/catch.hpp>
|
|
#include <Translator.hpp>
|
|
|
|
TEST_CASE("Regular key press and release")
|
|
{
|
|
gui::KeyBaseTranslation translator;
|
|
RawKey key;
|
|
|
|
key.state = RawKey::State::Pressed;
|
|
auto event = translator.set(key);
|
|
REQUIRE(event.getState() == gui::InputEvent::State::keyPressed);
|
|
|
|
key.state = RawKey::State::Released;
|
|
event = translator.set(key);
|
|
REQUIRE(event.getState() == gui::InputEvent::State::keyReleasedShort);
|
|
}
|
|
|
|
TEST_CASE("Key release before first key press")
|
|
{
|
|
gui::KeyBaseTranslation translator;
|
|
RawKey key;
|
|
|
|
key.state = RawKey::State::Released;
|
|
auto event = translator.set(key);
|
|
REQUIRE(event.getState() == gui::InputEvent::State::Undefined);
|
|
}
|
|
|
|
TEST_CASE("Key long release")
|
|
{
|
|
gui::KeyBaseTranslation translator;
|
|
RawKey key;
|
|
constexpr auto timeToLongRelease = 1001;
|
|
|
|
key.state = RawKey::State::Pressed;
|
|
key.timePress = 0;
|
|
auto event = translator.set(key);
|
|
REQUIRE(event.getState() == gui::InputEvent::State::keyPressed);
|
|
|
|
key.state = RawKey::State::Released;
|
|
key.timeRelease = timeToLongRelease;
|
|
event = translator.set(key);
|
|
REQUIRE(event.getState() == gui::InputEvent::State::keyReleasedLong);
|
|
}
|
|
|
|
TEST_CASE("Key Moved")
|
|
{
|
|
gui::KeyBaseTranslation translator;
|
|
RawKey key;
|
|
|
|
key.state = RawKey::State::Moved;
|
|
auto event = translator.set(key);
|
|
REQUIRE(event.getState() == gui::InputEvent::State::keyMoved);
|
|
}
|
|
|
|
TEST_CASE("Key Undefined")
|
|
{
|
|
gui::KeyBaseTranslation translator;
|
|
RawKey key;
|
|
|
|
auto event = translator.set(key);
|
|
REQUIRE(event.getState() == gui::InputEvent::State::Undefined);
|
|
}
|
|
|
|
TEST_CASE("External long press timeout check")
|
|
{
|
|
gui::KeyBaseTranslation translator;
|
|
RawKey key;
|
|
constexpr auto timeBeforeLongRelease = 500;
|
|
constexpr auto timeToLongRelease = 1001;
|
|
|
|
key.state = RawKey::State::Pressed;
|
|
key.timePress = 1;
|
|
translator.set(key);
|
|
|
|
REQUIRE(!translator.isKeyPressTimedOut(timeBeforeLongRelease));
|
|
REQUIRE(translator.isKeyPressTimedOut(timeToLongRelease));
|
|
}
|