summary refs log tree commit diff
path: root/tests/test_common
diff options
context:
space:
mode:
authorPascal Getreuer <50221757+getreuer@users.noreply.github.com>2022-08-13 06:48:51 -0700
committerGitHub <noreply@github.com>2022-08-13 23:48:51 +1000
commit6a0d90f81a9b9938591b32f9321530e68e5cea0b (patch)
tree138714ab3bc8e6f7c373a73f67424e6c3d7711a0 /tests/test_common
parent4eeafbebabfac04eada98f75dedbecdbbd16298c (diff)
Fix Caps Word capitalization when used with Combos + Auto Shift. (#17549)
Diffstat (limited to 'tests/test_common')
-rw-r--r--tests/test_common/test_fixture.cpp16
-rw-r--r--tests/test_common/test_fixture.hpp7
2 files changed, 23 insertions, 0 deletions
diff --git a/tests/test_common/test_fixture.cpp b/tests/test_common/test_fixture.cpp
index 5fc6964054..44694cd390 100644
--- a/tests/test_common/test_fixture.cpp
+++ b/tests/test_common/test_fixture.cpp
@@ -108,6 +108,22 @@ void TestFixture::tap_key(KeymapKey key, unsigned delay_ms) {
     run_one_scan_loop();
 }
 
+void TestFixture::tap_combo(const std::vector<KeymapKey>& chord_keys, unsigned delay_ms) {
+    for (KeymapKey key : chord_keys) { // Press each key.
+        key.press();
+        run_one_scan_loop();
+    }
+
+    if (delay_ms > 1) {
+        idle_for(delay_ms - 1);
+    }
+
+    for (KeymapKey key : chord_keys) { // Release each key.
+        key.release();
+        run_one_scan_loop();
+    }
+}
+
 void TestFixture::set_keymap(std::initializer_list<KeymapKey> keys) {
     this->keymap.clear();
     for (auto& key : keys) {
diff --git a/tests/test_common/test_fixture.hpp b/tests/test_common/test_fixture.hpp
index 81906f76c7..2590acd006 100644
--- a/tests/test_common/test_fixture.hpp
+++ b/tests/test_common/test_fixture.hpp
@@ -53,6 +53,13 @@ class TestFixture : public testing::Test {
         }
     }
 
+    /**
+     * @brief Taps a combo with `delay_ms` delay between press and release.
+     *
+     * Example: `tap_combo({key_a, key_b})` to tap the chord A + B.
+     */
+    void tap_combo(const std::vector<KeymapKey>& chord_keys, unsigned delay_ms = 1);
+
     void run_one_scan_loop();
     void idle_for(unsigned ms);