diff options
| author | Ryan <fauxpark@gmail.com> | 2023-02-13 03:19:02 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-13 03:19:02 +1100 |
| commit | bbf7a20b33de2d203518687cb5cd1aa85005ea27 (patch) | |
| tree | ee1a5c412a02021d085c81a26321c3424eca7022 /tests | |
| parent | d10350cd2ceb2b9d80522cdec3ea908118f7fd35 (diff) | |
Refactor Leader key feature (#19632)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/leader/config.h | 6 | ||||
| -rw-r--r-- | tests/leader/leader_no_initial_timeout/config.h | 8 | ||||
| -rw-r--r-- | tests/leader/leader_no_initial_timeout/test.mk | 7 | ||||
| -rw-r--r-- | tests/leader/leader_no_initial_timeout/test_leader_no_initial_timeout.cpp | 48 | ||||
| -rw-r--r-- | tests/leader/leader_per_key_timeout/config.h | 5 | ||||
| -rw-r--r-- | tests/leader/leader_per_key_timeout/test.mk | 7 | ||||
| -rw-r--r-- | tests/leader/leader_per_key_timeout/test_leader_per_key_timeout.cpp | 40 | ||||
| -rw-r--r-- | tests/leader/leader_sequences.c | 26 | ||||
| -rw-r--r-- | tests/leader/leader_strict_key_processing/config.h | 8 | ||||
| -rw-r--r-- | tests/leader/leader_strict_key_processing/test.mk | 7 | ||||
| -rw-r--r-- | tests/leader/leader_strict_key_processing/test_leader_strict_key_processing.cpp | 45 | ||||
| -rw-r--r-- | tests/leader/test.mk | 7 | ||||
| -rw-r--r-- | tests/leader/test_leader.cpp | 224 |
13 files changed, 438 insertions, 0 deletions
diff --git a/tests/leader/config.h b/tests/leader/config.h new file mode 100644 index 0000000000..e8005d4b6d --- /dev/null +++ b/tests/leader/config.h | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | // Copyright 2023 QMK | ||
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
| 3 | |||
| 4 | #pragma once | ||
| 5 | |||
| 6 | #include "test_common.h" | ||
diff --git a/tests/leader/leader_no_initial_timeout/config.h b/tests/leader/leader_no_initial_timeout/config.h new file mode 100644 index 0000000000..73b280bce9 --- /dev/null +++ b/tests/leader/leader_no_initial_timeout/config.h | |||
| @@ -0,0 +1,8 @@ | |||
| 1 | // Copyright 2023 QMK | ||
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
| 3 | |||
| 4 | #pragma once | ||
| 5 | |||
| 6 | #include "test_common.h" | ||
| 7 | |||
| 8 | #define LEADER_NO_TIMEOUT | ||
diff --git a/tests/leader/leader_no_initial_timeout/test.mk b/tests/leader/leader_no_initial_timeout/test.mk new file mode 100644 index 0000000000..635c04ee92 --- /dev/null +++ b/tests/leader/leader_no_initial_timeout/test.mk | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | # -------------------------------------------------------------------------------- | ||
| 2 | # Keep this file, even if it is empty, as a marker that this folder contains tests | ||
| 3 | # -------------------------------------------------------------------------------- | ||
| 4 | |||
| 5 | LEADER_ENABLE = yes | ||
| 6 | |||
| 7 | SRC += ../leader_sequences.c | ||
diff --git a/tests/leader/leader_no_initial_timeout/test_leader_no_initial_timeout.cpp b/tests/leader/leader_no_initial_timeout/test_leader_no_initial_timeout.cpp new file mode 100644 index 0000000000..c23af65344 --- /dev/null +++ b/tests/leader/leader_no_initial_timeout/test_leader_no_initial_timeout.cpp | |||
| @@ -0,0 +1,48 @@ | |||
| 1 | // Copyright 2023 QMK | ||
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
| 3 | |||
| 4 | #include "keyboard_report_util.hpp" | ||
| 5 | #include "keycode.h" | ||
| 6 | #include "test_common.hpp" | ||
| 7 | #include "test_keymap_key.hpp" | ||
| 8 | |||
| 9 | using testing::_; | ||
| 10 | |||
| 11 | class Leader : public TestFixture {}; | ||
| 12 | |||
| 13 | TEST_F(Leader, does_not_timeout_until_next_key_pressed) { | ||
| 14 | TestDriver driver; | ||
| 15 | |||
| 16 | auto key_leader = KeymapKey(0, 0, 0, QK_LEADER); | ||
| 17 | auto key_a = KeymapKey(0, 1, 0, KC_A); | ||
| 18 | |||
| 19 | set_keymap({key_leader, key_a}); | ||
| 20 | |||
| 21 | EXPECT_EQ(leader_sequence_active(), false); | ||
| 22 | |||
| 23 | EXPECT_NO_REPORT(driver); | ||
| 24 | tap_key(key_leader); | ||
| 25 | |||
| 26 | EXPECT_EQ(leader_sequence_active(), true); | ||
| 27 | |||
| 28 | idle_for(1000); | ||
| 29 | |||
| 30 | EXPECT_EQ(leader_sequence_active(), true); | ||
| 31 | EXPECT_EQ(leader_sequence_timed_out(), false); | ||
| 32 | |||
| 33 | EXPECT_REPORT(driver, (KC_1)); | ||
| 34 | EXPECT_EMPTY_REPORT(driver); | ||
| 35 | tap_key(key_a); | ||
| 36 | |||
| 37 | EXPECT_EQ(leader_sequence_active(), true); | ||
| 38 | EXPECT_EQ(leader_sequence_timed_out(), false); | ||
| 39 | |||
| 40 | idle_for(300); | ||
| 41 | |||
| 42 | EXPECT_EQ(leader_sequence_active(), false); | ||
| 43 | EXPECT_EQ(leader_sequence_timed_out(), true); | ||
| 44 | |||
| 45 | EXPECT_REPORT(driver, (KC_A)); | ||
| 46 | EXPECT_EMPTY_REPORT(driver); | ||
| 47 | tap_key(key_a); | ||
| 48 | } | ||
diff --git a/tests/leader/leader_per_key_timeout/config.h b/tests/leader/leader_per_key_timeout/config.h new file mode 100644 index 0000000000..045e7c1a57 --- /dev/null +++ b/tests/leader/leader_per_key_timeout/config.h | |||
| @@ -0,0 +1,5 @@ | |||
| 1 | #pragma once | ||
| 2 | |||
| 3 | #include "test_common.h" | ||
| 4 | |||
| 5 | #define LEADER_PER_KEY_TIMING | ||
diff --git a/tests/leader/leader_per_key_timeout/test.mk b/tests/leader/leader_per_key_timeout/test.mk new file mode 100644 index 0000000000..635c04ee92 --- /dev/null +++ b/tests/leader/leader_per_key_timeout/test.mk | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | # -------------------------------------------------------------------------------- | ||
| 2 | # Keep this file, even if it is empty, as a marker that this folder contains tests | ||
| 3 | # -------------------------------------------------------------------------------- | ||
| 4 | |||
| 5 | LEADER_ENABLE = yes | ||
| 6 | |||
| 7 | SRC += ../leader_sequences.c | ||
diff --git a/tests/leader/leader_per_key_timeout/test_leader_per_key_timeout.cpp b/tests/leader/leader_per_key_timeout/test_leader_per_key_timeout.cpp new file mode 100644 index 0000000000..a1e9eb3c77 --- /dev/null +++ b/tests/leader/leader_per_key_timeout/test_leader_per_key_timeout.cpp | |||
| @@ -0,0 +1,40 @@ | |||
| 1 | // Copyright 2023 QMK | ||
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
| 3 | |||
| 4 | #include "keyboard_report_util.hpp" | ||
| 5 | #include "keycode.h" | ||
| 6 | #include "test_common.hpp" | ||
| 7 | #include "test_keymap_key.hpp" | ||
| 8 | |||
| 9 | using testing::_; | ||
| 10 | |||
| 11 | class Leader : public TestFixture {}; | ||
| 12 | |||
| 13 | TEST_F(Leader, does_not_timeout_during_sequence) { | ||
| 14 | TestDriver driver; | ||
| 15 | |||
| 16 | auto key_leader = KeymapKey(0, 0, 0, QK_LEADER); | ||
| 17 | auto key_a = KeymapKey(0, 1, 0, KC_A); | ||
| 18 | auto key_b = KeymapKey(0, 2, 0, KC_B); | ||
| 19 | auto key_c = KeymapKey(0, 3, 0, KC_C); | ||
| 20 | |||
| 21 | set_keymap({key_leader, key_a, key_b, key_c}); | ||
| 22 | |||
| 23 | tap_key(key_leader); | ||
| 24 | |||
| 25 | EXPECT_NO_REPORT(driver); | ||
| 26 | tap_key(key_a); | ||
| 27 | |||
| 28 | idle_for(150); | ||
| 29 | |||
| 30 | EXPECT_NO_REPORT(driver); | ||
| 31 | tap_key(key_b); | ||
| 32 | |||
| 33 | idle_for(150); | ||
| 34 | |||
| 35 | EXPECT_REPORT(driver, (KC_3)); | ||
| 36 | EXPECT_EMPTY_REPORT(driver); | ||
| 37 | tap_key(key_c); | ||
| 38 | |||
| 39 | idle_for(300); | ||
| 40 | } | ||
diff --git a/tests/leader/leader_sequences.c b/tests/leader/leader_sequences.c new file mode 100644 index 0000000000..39e23623b3 --- /dev/null +++ b/tests/leader/leader_sequences.c | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | // Copyright 2023 QMK | ||
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
| 3 | |||
| 4 | #include "quantum.h" | ||
| 5 | |||
| 6 | void leader_end_user(void) { | ||
| 7 | if (leader_sequence_one_key(KC_A)) { | ||
| 8 | tap_code(KC_1); | ||
| 9 | } | ||
| 10 | |||
| 11 | if (leader_sequence_two_keys(KC_A, KC_B)) { | ||
| 12 | tap_code(KC_2); | ||
| 13 | } | ||
| 14 | |||
| 15 | if (leader_sequence_three_keys(KC_A, KC_B, KC_C)) { | ||
| 16 | tap_code(KC_3); | ||
| 17 | } | ||
| 18 | |||
| 19 | if (leader_sequence_four_keys(KC_A, KC_B, KC_C, KC_D)) { | ||
| 20 | tap_code(KC_4); | ||
| 21 | } | ||
| 22 | |||
| 23 | if (leader_sequence_five_keys(KC_A, KC_B, KC_C, KC_D, KC_E)) { | ||
| 24 | tap_code(KC_5); | ||
| 25 | } | ||
| 26 | } | ||
diff --git a/tests/leader/leader_strict_key_processing/config.h b/tests/leader/leader_strict_key_processing/config.h new file mode 100644 index 0000000000..cca5ed0458 --- /dev/null +++ b/tests/leader/leader_strict_key_processing/config.h | |||
| @@ -0,0 +1,8 @@ | |||
| 1 | // Copyright 2023 QMK | ||
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
| 3 | |||
| 4 | #pragma once | ||
| 5 | |||
| 6 | #include "test_common.h" | ||
| 7 | |||
| 8 | #define LEADER_KEY_STRICT_KEY_PROCESSING | ||
diff --git a/tests/leader/leader_strict_key_processing/test.mk b/tests/leader/leader_strict_key_processing/test.mk new file mode 100644 index 0000000000..635c04ee92 --- /dev/null +++ b/tests/leader/leader_strict_key_processing/test.mk | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | # -------------------------------------------------------------------------------- | ||
| 2 | # Keep this file, even if it is empty, as a marker that this folder contains tests | ||
| 3 | # -------------------------------------------------------------------------------- | ||
| 4 | |||
| 5 | LEADER_ENABLE = yes | ||
| 6 | |||
| 7 | SRC += ../leader_sequences.c | ||
diff --git a/tests/leader/leader_strict_key_processing/test_leader_strict_key_processing.cpp b/tests/leader/leader_strict_key_processing/test_leader_strict_key_processing.cpp new file mode 100644 index 0000000000..de6bcf0fce --- /dev/null +++ b/tests/leader/leader_strict_key_processing/test_leader_strict_key_processing.cpp | |||
| @@ -0,0 +1,45 @@ | |||
| 1 | // Copyright 2023 QMK | ||
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
| 3 | |||
| 4 | #include "keyboard_report_util.hpp" | ||
| 5 | #include "keycode.h" | ||
| 6 | #include "test_common.hpp" | ||
| 7 | #include "test_keymap_key.hpp" | ||
| 8 | |||
| 9 | using testing::_; | ||
| 10 | |||
| 11 | class Leader : public TestFixture {}; | ||
| 12 | |||
| 13 | TEST_F(Leader, does_not_extract_mod_tap_keycode) { | ||
| 14 | TestDriver driver; | ||
| 15 | |||
| 16 | auto key_leader = KeymapKey(0, 0, 0, QK_LEADER); | ||
| 17 | auto key_mt = KeymapKey(0, 1, 0, LSFT_T(KC_A)); | ||
| 18 | |||
| 19 | set_keymap({key_leader, key_mt}); | ||
| 20 | |||
| 21 | tap_key(key_leader); | ||
| 22 | |||
| 23 | EXPECT_NO_REPORT(driver); | ||
| 24 | tap_key(key_mt); | ||
| 25 | |||
| 26 | EXPECT_EQ(leader_sequence_one_key(KC_A), false); | ||
| 27 | EXPECT_EQ(leader_sequence_one_key(LSFT_T(KC_A)), true); | ||
| 28 | } | ||
| 29 | |||
| 30 | TEST_F(Leader, does_not_extract_layer_tap_keycode) { | ||
| 31 | TestDriver driver; | ||
| 32 | |||
| 33 | auto key_leader = KeymapKey(0, 0, 0, QK_LEADER); | ||
| 34 | auto key_lt = KeymapKey(0, 1, 0, LT(1, KC_A)); | ||
| 35 | |||
| 36 | set_keymap({key_leader, key_lt}); | ||
| 37 | |||
| 38 | tap_key(key_leader); | ||
| 39 | |||
| 40 | EXPECT_NO_REPORT(driver); | ||
| 41 | tap_key(key_lt); | ||
| 42 | |||
| 43 | EXPECT_EQ(leader_sequence_one_key(KC_A), false); | ||
| 44 | EXPECT_EQ(leader_sequence_one_key(LT(1, KC_A)), true); | ||
| 45 | } | ||
diff --git a/tests/leader/test.mk b/tests/leader/test.mk new file mode 100644 index 0000000000..bae8bfcc41 --- /dev/null +++ b/tests/leader/test.mk | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | # -------------------------------------------------------------------------------- | ||
| 2 | # Keep this file, even if it is empty, as a marker that this folder contains tests | ||
| 3 | # -------------------------------------------------------------------------------- | ||
| 4 | |||
| 5 | LEADER_ENABLE = yes | ||
| 6 | |||
| 7 | SRC += leader_sequences.c | ||
diff --git a/tests/leader/test_leader.cpp b/tests/leader/test_leader.cpp new file mode 100644 index 0000000000..7349d2f89f --- /dev/null +++ b/tests/leader/test_leader.cpp | |||
| @@ -0,0 +1,224 @@ | |||
| 1 | // Copyright 2023 QMK | ||
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
| 3 | |||
| 4 | #include "keyboard_report_util.hpp" | ||
| 5 | #include "keycode.h" | ||
| 6 | #include "test_common.hpp" | ||
| 7 | #include "test_keymap_key.hpp" | ||
| 8 | |||
| 9 | using testing::_; | ||
| 10 | |||
| 11 | class Leader : public TestFixture {}; | ||
| 12 | |||
| 13 | TEST_F(Leader, triggers_one_key_sequence) { | ||
| 14 | TestDriver driver; | ||
| 15 | |||
| 16 | auto key_leader = KeymapKey(0, 0, 0, QK_LEADER); | ||
| 17 | auto key_a = KeymapKey(0, 1, 0, KC_A); | ||
| 18 | |||
| 19 | set_keymap({key_leader, key_a}); | ||
| 20 | |||
| 21 | EXPECT_EQ(leader_sequence_active(), false); | ||
| 22 | |||
| 23 | EXPECT_NO_REPORT(driver); | ||
| 24 | tap_key(key_leader); | ||
| 25 | |||
| 26 | EXPECT_EQ(leader_sequence_active(), true); | ||
| 27 | |||
| 28 | EXPECT_REPORT(driver, (KC_1)); | ||
| 29 | EXPECT_EMPTY_REPORT(driver); | ||
| 30 | tap_key(key_a); | ||
| 31 | |||
| 32 | EXPECT_EQ(leader_sequence_timed_out(), false); | ||
| 33 | |||
| 34 | idle_for(300); | ||
| 35 | |||
| 36 | EXPECT_EQ(leader_sequence_active(), false); | ||
| 37 | EXPECT_EQ(leader_sequence_timed_out(), true); | ||
| 38 | |||
| 39 | EXPECT_REPORT(driver, (KC_A)); | ||
| 40 | EXPECT_EMPTY_REPORT(driver); | ||
| 41 | tap_key(key_a); | ||
| 42 | } | ||
| 43 | |||
| 44 | TEST_F(Leader, triggers_two_key_sequence) { | ||
| 45 | TestDriver driver; | ||
| 46 | |||
| 47 | auto key_leader = KeymapKey(0, 0, 0, QK_LEADER); | ||
| 48 | auto key_a = KeymapKey(0, 1, 0, KC_A); | ||
| 49 | auto key_b = KeymapKey(0, 2, 0, KC_B); | ||
| 50 | |||
| 51 | set_keymap({key_leader, key_a, key_b}); | ||
| 52 | |||
| 53 | EXPECT_EQ(leader_sequence_active(), false); | ||
| 54 | |||
| 55 | EXPECT_NO_REPORT(driver); | ||
| 56 | tap_key(key_leader); | ||
| 57 | |||
| 58 | EXPECT_EQ(leader_sequence_active(), true); | ||
| 59 | |||
| 60 | EXPECT_REPORT(driver, (KC_2)); | ||
| 61 | EXPECT_EMPTY_REPORT(driver); | ||
| 62 | tap_key(key_a); | ||
| 63 | tap_key(key_b); | ||
| 64 | |||
| 65 | EXPECT_EQ(leader_sequence_timed_out(), false); | ||
| 66 | |||
| 67 | idle_for(300); | ||
| 68 | |||
| 69 | EXPECT_EQ(leader_sequence_active(), false); | ||
| 70 | EXPECT_EQ(leader_sequence_timed_out(), true); | ||
| 71 | |||
| 72 | EXPECT_REPORT(driver, (KC_A)); | ||
| 73 | EXPECT_EMPTY_REPORT(driver); | ||
| 74 | tap_key(key_a); | ||
| 75 | } | ||
| 76 | |||
| 77 | TEST_F(Leader, triggers_three_key_sequence) { | ||
| 78 | TestDriver driver; | ||
| 79 | |||
| 80 | auto key_leader = KeymapKey(0, 0, 0, QK_LEADER); | ||
| 81 | auto key_a = KeymapKey(0, 1, 0, KC_A); | ||
| 82 | auto key_b = KeymapKey(0, 2, 0, KC_B); | ||
| 83 | auto key_c = KeymapKey(0, 3, 0, KC_C); | ||
| 84 | |||
| 85 | set_keymap({key_leader, key_a, key_b, key_c}); | ||
| 86 | |||
| 87 | EXPECT_EQ(leader_sequence_active(), false); | ||
| 88 | |||
| 89 | EXPECT_NO_REPORT(driver); | ||
| 90 | tap_key(key_leader); | ||
| 91 | |||
| 92 | EXPECT_EQ(leader_sequence_active(), true); | ||
| 93 | |||
| 94 | EXPECT_REPORT(driver, (KC_3)); | ||
| 95 | EXPECT_EMPTY_REPORT(driver); | ||
| 96 | tap_key(key_a); | ||
| 97 | tap_key(key_b); | ||
| 98 | tap_key(key_c); | ||
| 99 | |||
| 100 | EXPECT_EQ(leader_sequence_timed_out(), false); | ||
| 101 | |||
| 102 | idle_for(300); | ||
| 103 | |||
| 104 | EXPECT_EQ(leader_sequence_active(), false); | ||
| 105 | EXPECT_EQ(leader_sequence_timed_out(), true); | ||
| 106 | |||
| 107 | EXPECT_REPORT(driver, (KC_A)); | ||
| 108 | EXPECT_EMPTY_REPORT(driver); | ||
| 109 | tap_key(key_a); | ||
| 110 | } | ||
| 111 | |||
| 112 | TEST_F(Leader, triggers_four_key_sequence) { | ||
| 113 | TestDriver driver; | ||
| 114 | |||
| 115 | auto key_leader = KeymapKey(0, 0, 0, QK_LEADER); | ||
| 116 | auto key_a = KeymapKey(0, 1, 0, KC_A); | ||
| 117 | auto key_b = KeymapKey(0, 2, 0, KC_B); | ||
| 118 | auto key_c = KeymapKey(0, 3, 0, KC_C); | ||
| 119 | auto key_d = KeymapKey(0, 4, 0, KC_D); | ||
| 120 | |||
| 121 | set_keymap({key_leader, key_a, key_b, key_c, key_d}); | ||
| 122 | |||
| 123 | EXPECT_EQ(leader_sequence_active(), false); | ||
| 124 | |||
| 125 | EXPECT_NO_REPORT(driver); | ||
| 126 | tap_key(key_leader); | ||
| 127 | |||
| 128 | EXPECT_EQ(leader_sequence_active(), true); | ||
| 129 | |||
| 130 | EXPECT_REPORT(driver, (KC_4)); | ||
| 131 | EXPECT_EMPTY_REPORT(driver); | ||
| 132 | tap_key(key_a); | ||
| 133 | tap_key(key_b); | ||
| 134 | tap_key(key_c); | ||
| 135 | tap_key(key_d); | ||
| 136 | |||
| 137 | EXPECT_EQ(leader_sequence_timed_out(), false); | ||
| 138 | |||
| 139 | idle_for(300); | ||
| 140 | |||
| 141 | EXPECT_EQ(leader_sequence_active(), false); | ||
| 142 | EXPECT_EQ(leader_sequence_timed_out(), true); | ||
| 143 | |||
| 144 | EXPECT_REPORT(driver, (KC_A)); | ||
| 145 | EXPECT_EMPTY_REPORT(driver); | ||
| 146 | tap_key(key_a); | ||
| 147 | } | ||
| 148 | |||
| 149 | TEST_F(Leader, triggers_five_key_sequence) { | ||
| 150 | TestDriver driver; | ||
| 151 | |||
| 152 | auto key_leader = KeymapKey(0, 0, 0, QK_LEADER); | ||
| 153 | auto key_a = KeymapKey(0, 1, 0, KC_A); | ||
| 154 | auto key_b = KeymapKey(0, 2, 0, KC_B); | ||
| 155 | auto key_c = KeymapKey(0, 3, 0, KC_C); | ||
| 156 | auto key_d = KeymapKey(0, 4, 0, KC_D); | ||
| 157 | auto key_e = KeymapKey(0, 5, 0, KC_E); | ||
| 158 | |||
| 159 | set_keymap({key_leader, key_a, key_b, key_c, key_d, key_e}); | ||
| 160 | |||
| 161 | EXPECT_EQ(leader_sequence_active(), false); | ||
| 162 | |||
| 163 | EXPECT_NO_REPORT(driver); | ||
| 164 | tap_key(key_leader); | ||
| 165 | |||
| 166 | EXPECT_EQ(leader_sequence_active(), true); | ||
| 167 | |||
| 168 | EXPECT_REPORT(driver, (KC_5)); | ||
| 169 | EXPECT_EMPTY_REPORT(driver); | ||
| 170 | tap_key(key_a); | ||
| 171 | tap_key(key_b); | ||
| 172 | tap_key(key_c); | ||
| 173 | tap_key(key_d); | ||
| 174 | tap_key(key_e); | ||
| 175 | |||
| 176 | EXPECT_EQ(leader_sequence_timed_out(), false); | ||
| 177 | |||
| 178 | idle_for(300); | ||
| 179 | |||
| 180 | EXPECT_EQ(leader_sequence_active(), false); | ||
| 181 | EXPECT_EQ(leader_sequence_timed_out(), true); | ||
| 182 | |||
| 183 | EXPECT_REPORT(driver, (KC_A)); | ||
| 184 | EXPECT_EMPTY_REPORT(driver); | ||
| 185 | tap_key(key_a); | ||
| 186 | } | ||
| 187 | |||
| 188 | TEST_F(Leader, extracts_mod_tap_keycode) { | ||
| 189 | TestDriver driver; | ||
| 190 | |||
| 191 | auto key_leader = KeymapKey(0, 0, 0, QK_LEADER); | ||
| 192 | auto key_mt = KeymapKey(0, 1, 0, LSFT_T(KC_A)); | ||
| 193 | |||
| 194 | set_keymap({key_leader, key_mt}); | ||
| 195 | |||
| 196 | tap_key(key_leader); | ||
| 197 | |||
| 198 | EXPECT_REPORT(driver, (KC_1)); | ||
| 199 | EXPECT_EMPTY_REPORT(driver); | ||
| 200 | tap_key(key_mt); | ||
| 201 | |||
| 202 | EXPECT_EQ(leader_sequence_one_key(KC_A), true); | ||
| 203 | |||
| 204 | idle_for(300); | ||
| 205 | } | ||
| 206 | |||
| 207 | TEST_F(Leader, extracts_layer_tap_keycode) { | ||
| 208 | TestDriver driver; | ||
| 209 | |||
| 210 | auto key_leader = KeymapKey(0, 0, 0, QK_LEADER); | ||
| 211 | auto key_lt = KeymapKey(0, 1, 0, LT(1, KC_A)); | ||
| 212 | |||
| 213 | set_keymap({key_leader, key_lt}); | ||
| 214 | |||
| 215 | tap_key(key_leader); | ||
| 216 | |||
| 217 | EXPECT_REPORT(driver, (KC_1)); | ||
| 218 | EXPECT_EMPTY_REPORT(driver); | ||
| 219 | tap_key(key_lt); | ||
| 220 | |||
| 221 | EXPECT_EQ(leader_sequence_one_key(KC_A), true); | ||
| 222 | |||
| 223 | idle_for(300); | ||
| 224 | } | ||
