]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Add test for a combo key
authorFred Sundvik <fsundvik@gmail.com>
Fri, 30 Jun 2017 23:43:32 +0000 (02:43 +0300)
committerJack Humbert <jack.humb@gmail.com>
Sun, 9 Jul 2017 01:59:51 +0000 (21:59 -0400)
tests/basic/keymap.c
tests/basic/keypress.cpp

index a3e1aaf6696192178130cb5ccdca596904eb0d26..e3a60ccc4521b98204a796a80fdf275d5a590b12 100644 (file)
 
 // Don't rearrange keys as existing tests might rely on the order
 // Col2, Row 0 has to be KC_NO, because tests rely on it
+
+#define COMBO1 RSFT(LCTL(KC_O))
+
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        [0] = {
-               // 0    1      2      3        4        5        6      7      8      9
-           {KC_A,  KC_B,  KC_NO, KC_LSFT, KC_RSFT, KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO},
-           {KC_NO, KC_NO, KC_NO, KC_NO,   KC_NO,   KC_NO,   KC_NO, KC_NO, KC_NO, KC_NO},
-           {KC_NO, KC_NO, KC_NO, KC_NO,   KC_NO,   KC_NO,   KC_NO, KC_NO, KC_NO, KC_NO},
-           {KC_C,  KC_D,  KC_NO, KC_NO,   KC_NO,   KC_NO,   KC_NO, KC_NO, KC_NO, KC_NO},
+               // 0    1      2      3        4        5        6       7      8      9
+           {KC_A,  KC_B,  KC_NO, KC_LSFT, KC_RSFT, KC_LCTL, COMBO1, KC_NO, KC_NO, KC_NO},
+           {KC_NO, KC_NO, KC_NO, KC_NO,   KC_NO,   KC_NO,   KC_NO,  KC_NO, KC_NO, KC_NO},
+           {KC_NO, KC_NO, KC_NO, KC_NO,   KC_NO,   KC_NO,   KC_NO,  KC_NO, KC_NO, KC_NO},
+           {KC_C,  KC_D,  KC_NO, KC_NO,   KC_NO,   KC_NO,   KC_NO,  KC_NO, KC_NO, KC_NO},
        },
 };
index 4424e86965df90be0a9b5ab9441ce250de037973..2bb029d884d4b41cd185d9db428502b6c4cb8e14 100644 (file)
@@ -85,4 +85,40 @@ TEST_F(KeyPress, LeftShiftIsReportedCorrectly) {
     release_key(3, 0);
     EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
     keyboard_task();
+}
+
+TEST_F(KeyPress, PressLeftShiftAndControl) {
+    TestDriver driver;
+    press_key(3, 0);
+    press_key(5, 0);
+    // Unfortunately modifiers are also processed in the wrong order
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT)));
+    keyboard_task();
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_LCTRL)));
+    keyboard_task();
+}
+
+TEST_F(KeyPress, LeftAndRightShiftCanBePressedAtTheSameTime) {
+    TestDriver driver;
+    press_key(3, 0);
+    press_key(4, 0);
+    // Unfortunately modifiers are also processed in the wrong order
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT)));
+    keyboard_task();
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_RSFT)));
+    keyboard_task();
+}
+
+TEST_F(KeyPress, RightShiftLeftControlAndCharWithTheSameKey) {
+    TestDriver driver;
+    press_key(6, 0);
+    // BUG: The press is split into two reports
+    // BUG: It reports RSFT instead of LSFT
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_RSFT, KC_RCTRL)));
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_RSFT, KC_RCTRL, KC_O)));
+    keyboard_task();
+    release_key(6, 0);
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_RSFT, KC_RCTRL)));
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
+    keyboard_task();
 }
\ No newline at end of file