diff options
Diffstat (limited to 'tests/basic')
-rw-r--r-- | tests/basic/keymap.c | 13 | ||||
-rw-r--r-- | tests/basic/keypress.cpp | 36 |
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 | |||
21 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 24 | const 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 | |||
90 | TEST_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 | |||
101 | TEST_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 | |||
112 | TEST_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 |