aboutsummaryrefslogtreecommitdiff
path: root/tests/basic
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basic')
-rw-r--r--tests/basic/keymap.c13
-rw-r--r--tests/basic/keypress.cpp36
2 files changed, 44 insertions, 5 deletions
diff --git a/tests/basic/keymap.c b/tests/basic/keymap.c
index a3e1aaf66..e3a60ccc4 100644
--- a/tests/basic/keymap.c
+++ b/tests/basic/keymap.c
@@ -18,12 +18,15 @@
18 18
19// Don't rearrange keys as existing tests might rely on the order 19// Don't rearrange keys as existing tests might rely on the order
20// Col2, Row 0 has to be KC_NO, because tests rely on it 20// Col2, Row 0 has to be KC_NO, because tests rely on it
21
22#define COMBO1 RSFT(LCTL(KC_O))
23
21const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 24const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
22 [0] = { 25 [0] = {
23 // 0 1 2 3 4 5 6 7 8 9 26 // 0 1 2 3 4 5 6 7 8 9
24 {KC_A, KC_B, KC_NO, KC_LSFT, KC_RSFT, KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO}, 27 {KC_A, KC_B, KC_NO, KC_LSFT, KC_RSFT, KC_LCTL, COMBO1, KC_NO, KC_NO, KC_NO},
25 {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, 28 {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO},
26 {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, 29 {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO},
27 {KC_C, KC_D, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, 30 {KC_C, KC_D, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO},
28 }, 31 },
29}; 32};
diff --git a/tests/basic/keypress.cpp b/tests/basic/keypress.cpp
index 4424e8696..2bb029d88 100644
--- a/tests/basic/keypress.cpp
+++ b/tests/basic/keypress.cpp
@@ -85,4 +85,40 @@ TEST_F(KeyPress, LeftShiftIsReportedCorrectly) {
85 release_key(3, 0); 85 release_key(3, 0);
86 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); 86 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
87 keyboard_task(); 87 keyboard_task();
88}
89
90TEST_F(KeyPress, PressLeftShiftAndControl) {
91 TestDriver driver;
92 press_key(3, 0);
93 press_key(5, 0);
94 // Unfortunately modifiers are also processed in the wrong order
95 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT)));
96 keyboard_task();
97 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_LCTRL)));
98 keyboard_task();
99}
100
101TEST_F(KeyPress, LeftAndRightShiftCanBePressedAtTheSameTime) {
102 TestDriver driver;
103 press_key(3, 0);
104 press_key(4, 0);
105 // Unfortunately modifiers are also processed in the wrong order
106 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT)));
107 keyboard_task();
108 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_RSFT)));
109 keyboard_task();
110}
111
112TEST_F(KeyPress, RightShiftLeftControlAndCharWithTheSameKey) {
113 TestDriver driver;
114 press_key(6, 0);
115 // BUG: The press is split into two reports
116 // BUG: It reports RSFT instead of LSFT
117 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_RSFT, KC_RCTRL)));
118 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_RSFT, KC_RCTRL, KC_O)));
119 keyboard_task();
120 release_key(6, 0);
121 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_RSFT, KC_RCTRL)));
122 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
123 keyboard_task();
88} \ No newline at end of file 124} \ No newline at end of file