From dd6590a0fda614fa2fb0ca9e4ad11b086393372e Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sun, 16 Mar 2025 20:53:33 +0530 Subject: Add simple key sequence parser --- spec/KeySeqParserSpec.cpp | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 spec/KeySeqParserSpec.cpp (limited to 'spec') diff --git a/spec/KeySeqParserSpec.cpp b/spec/KeySeqParserSpec.cpp new file mode 100644 index 0000000..a29c97e --- /dev/null +++ b/spec/KeySeqParserSpec.cpp @@ -0,0 +1,52 @@ +#include "testUtils.h" +#include +#include + +#include "keymap/KeySeqParser.hpp" + +class KeySeqParserSpec : public QObject { + Q_OBJECT + +private slots: + void testThings() { + context("when mix of upper/lower cases"); + it("parses keys ignoring the casing") { + KeySeqParser parser; + + QList keys = parser.parse(""); + + QList expectedKeys = { + {.mod = Qt::ControlModifier, .key = Qt::Key_Tab}, + {.mod = Qt::ControlModifier, .key = Qt::Key_Tab}, + {.mod = Qt::ControlModifier, .key = Qt::Key_Tab}, + }; + QCOMPARE(keys, expectedKeys); + } + + context("when input contains individual keys"); + it("parses the characters") { + KeySeqParser parser; + + QList keys = parser.parse("abz"); + + for (auto &k : keys) { + qDebug() << k.key << k.mod; + } + + QList expectedKeys = { + {.mod = Qt::NoModifier, .key = Qt::Key_A}, + {.mod = Qt::NoModifier, .key = Qt::Key_B}, + {.mod = Qt::NoModifier, .key = Qt::Key_C}, + {.mod = Qt::NoModifier, .key = Qt::Key_S}, + {.mod = Qt::NoModifier, .key = Qt::Key_Space}, + {.mod = Qt::NoModifier, .key = Qt::Key_Tab}, + {.mod = Qt::NoModifier, .key = Qt::Key_Escape}, + {.mod = Qt::NoModifier, .key = Qt::Key_Z}, + }; + QCOMPARE(keys, expectedKeys); + } + } +}; + +QTEST_REGISTER(KeySeqParserSpec) +#include "KeySeqParserSpec.moc" -- cgit v1.3.1