// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include #include 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)); }