pywiq/tests/KeyMod.cpp

102 lines
2.4 KiB
C++

#include <catch2/catch.hpp>
#include "../src/KeyMod.hpp"
class KeyModTest
{
public:
explicit KeyModTest() {}
virtual ~KeyModTest() {}
protected:
};
TEST_CASE_METHOD(KeyModTest, "KeyMod_to_string")
{
SECTION("text, no mod")
{
pwq::KeyMod km {pwq::PWQ_KEY_TEXT, 'h'};
REQUIRE(L"h" == km.string());
}
SECTION("text, ctrl mod")
{
auto km = pwq::KeyMod(pwq::PWQ_KEY_TEXT, 'h')
.mod(pwq::PWQ_MOD_CTRL);
REQUIRE(L"C-h" == km.string());
}
SECTION("text, alt mod")
{
auto km = pwq::KeyMod(pwq::PWQ_KEY_TEXT, 'h')
.mod(pwq::PWQ_MOD_ALT);
REQUIRE(L"A-h" == km.string());
}
SECTION("text, ctrl + alt mod")
{
auto km = pwq::KeyMod(pwq::PWQ_KEY_TEXT, 'h')
.mod(pwq::PWQ_MOD_ALT)
.mod(pwq::PWQ_MOD_CTRL);
REQUIRE(L"C-A-h" == km.string());
}
SECTION("no text, no mod")
{
pwq::KeyMod km {pwq::PWQ_KEY_UP};
REQUIRE(L"UP" == km.string());
}
SECTION("no text, ctrl mod")
{
auto km = pwq::KeyMod(pwq::PWQ_KEY_DOWN)
.mod(pwq::PWQ_MOD_CTRL);
REQUIRE(L"C-DOWN" == km.string());
}
SECTION("no text, alt mod")
{
auto km = pwq::KeyMod(pwq::PWQ_KEY_LEFT)
.mod(pwq::PWQ_MOD_ALT);
REQUIRE(L"A-LEFT" == km.string());
}
SECTION("no text, alt mod")
{
auto km = pwq::KeyMod(pwq::PWQ_KEY_RIGHT)
.mod(pwq::PWQ_MOD_CTRL)
.mod(pwq::PWQ_MOD_ALT);
REQUIRE(L"C-A-RIGHT" == km.string());
}
}
TEST_CASE_METHOD(KeyModTest, "KeyMod_from_string")
{
REQUIRE(L"w" == pwq::KeyMod(L"w").string());
REQUIRE(L"t" == pwq::KeyMod(L" t ").string());
REQUIRE(L"C-w" == pwq::KeyMod(L"C-w ").string());
REQUIRE(L"A-w" == pwq::KeyMod(L" A-w").string());
REQUIRE(L"C-A-w" == pwq::KeyMod(L"C-A-w").string());
REQUIRE(L"C-A-w" == pwq::KeyMod(L" A-C-w ").string());
REQUIRE(L"UP" == pwq::KeyMod(L" UP ").string());
REQUIRE(L"C-DOWN" == pwq::KeyMod(L"C-DOWN ").string());
REQUIRE(L"A-LEFT" == pwq::KeyMod(L" A-LEFT ").string());
REQUIRE(L"C-A-RIGHT" == pwq::KeyMod(L"A-C-RIGHT").string());
REQUIRE(pwq::PWQ_KEY_TEXT == pwq::KeyMod(L" U ").key());
REQUIRE(pwq::PWQ_KEY_UP == pwq::KeyMod(L" UP ").key());
REQUIRE(pwq::PWQ_KEY_DOWN == pwq::KeyMod(L" DOWN ").key());
REQUIRE(pwq::PWQ_KEY_LEFT == pwq::KeyMod(L" LEFT ").key());
REQUIRE(pwq::PWQ_KEY_RIGHT == pwq::KeyMod(L" RIGHT ").key());
}