summary refs log tree commit diff
path: root/tests/basic
diff options
context:
space:
mode:
authorzvecr <git@zvecr.com>2022-02-25 23:45:40 +0000
committerzvecr <git@zvecr.com>2022-02-25 23:45:40 +0000
commite7931289918221081cbe2a7ea5df27a5d86324db (patch)
tree0b06145520f8aaf5ff5cb928aa5176fc2dd23619 /tests/basic
parentc0ee3d2c79388187883b1b1b1d1a0b6842acf741 (diff)
parentcf31355f08dca311a013168eb3eb995e2fc6a3d1 (diff)
Merge remote-tracking branch 'origin/develop'
Diffstat (limited to 'tests/basic')
-rw-r--r--tests/basic/test_action_layer.cpp33
-rw-r--r--tests/basic/test_keypress.cpp55
-rw-r--r--tests/basic/test_macro.cpp88
-rw-r--r--tests/basic/test_one_shot_keys.cpp8
4 files changed, 40 insertions, 144 deletions
diff --git a/tests/basic/test_action_layer.cpp b/tests/basic/test_action_layer.cpp
index 1b12d13642..fe5c729f7c 100644
--- a/tests/basic/test_action_layer.cpp
+++ b/tests/basic/test_action_layer.cpp
@@ -131,14 +131,12 @@ TEST_F(ActionLayer, MomentaryLayerDoesNothing) {
     set_keymap({layer_key});
 
     /* Press and release MO, nothing should happen. */
-    /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1);
+    EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
     layer_key.press();
     run_one_scan_loop();
     testing::Mock::VerifyAndClearExpectations(&driver);
 
-    /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1);
+    EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
     layer_key.release();
     run_one_scan_loop();
     testing::Mock::VerifyAndClearExpectations(&driver);
@@ -153,8 +151,7 @@ TEST_F(ActionLayer, MomentaryLayerWithKeypress) {
     set_keymap({layer_key, regular_key, KeymapKey{1, 1, 0, KC_B}});
 
     /* Press MO. */
-    /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1);
+    EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
     layer_key.press();
     run_one_scan_loop();
     EXPECT_TRUE(layer_state_is(1));
@@ -175,8 +172,7 @@ TEST_F(ActionLayer, MomentaryLayerWithKeypress) {
     testing::Mock::VerifyAndClearExpectations(&driver);
 
     /* Release MO */
-    /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1);
+    EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
     layer_key.release();
     run_one_scan_loop();
     EXPECT_TRUE(layer_state_is(0));
@@ -199,8 +195,7 @@ TEST_F(ActionLayer, ToggleLayerDoesNothing) {
     testing::Mock::VerifyAndClearExpectations(&driver);
 
     /* Release TG. */
-    /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1);
+    EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
     layer_key.release();
     run_one_scan_loop();
     EXPECT_TRUE(layer_state_is(1));
@@ -223,8 +218,7 @@ TEST_F(ActionLayer, ToggleLayerUpAndDown) {
     EXPECT_TRUE(layer_state_is(1));
     testing::Mock::VerifyAndClearExpectations(&driver);
 
-    /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1);
+    EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
     toggle_layer_1_on_layer_0.release();
     run_one_scan_loop();
     EXPECT_TRUE(layer_state_is(1));
@@ -237,8 +231,7 @@ TEST_F(ActionLayer, ToggleLayerUpAndDown) {
     EXPECT_TRUE(layer_state_is(0));
     testing::Mock::VerifyAndClearExpectations(&driver);
 
-    /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1);
+    EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
     toggle_layer_0_on_layer_1.release();
     run_one_scan_loop();
     EXPECT_TRUE(layer_state_is(0));
@@ -254,14 +247,13 @@ TEST_F(ActionLayer, LayerTapToggleDoesNothing) {
     set_keymap({layer_key});
 
     /* Press and release TT. */
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(0);
+    EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
     layer_key.press();
     run_one_scan_loop();
     EXPECT_TRUE(layer_state_is(1));
     testing::Mock::VerifyAndClearExpectations(&driver);
 
-    /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(2);
+    EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
     layer_key.release();
     run_one_scan_loop();
     EXPECT_TRUE(layer_state_is(0));
@@ -279,7 +271,6 @@ TEST_F(ActionLayer, LayerTapToggleWithKeypress) {
     set_keymap({layer_key, regular_key, KeymapKey{1, 1, 0, KC_B}});
 
     /* Press TT. */
-    /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */
     EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(0);
     layer_key.press();
     run_one_scan_loop();
@@ -298,8 +289,7 @@ TEST_F(ActionLayer, LayerTapToggleWithKeypress) {
     EXPECT_TRUE(layer_state_is(1));
     testing::Mock::VerifyAndClearExpectations(&driver);
 
-    /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1);
+    EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
     layer_key.release();
     run_one_scan_loop();
     EXPECT_TRUE(layer_state_is(0));
@@ -317,8 +307,7 @@ TEST_F(ActionLayer, LayerTapToggleWithToggleWithKeypress) {
     set_keymap({layer_key, regular_key, KeymapKey{1, 1, 0, KC_B}});
 
     /* Tap TT five times . */
-    /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(9);
+    EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
 
     layer_key.press();
     run_one_scan_loop();
diff --git a/tests/basic/test_keypress.cpp b/tests/basic/test_keypress.cpp
index 1c175c9d56..044fc29378 100644
--- a/tests/basic/test_keypress.cpp
+++ b/tests/basic/test_keypress.cpp
@@ -85,7 +85,7 @@ TEST_F(KeyPress, CorrectKeysAreReportedWhenTwoKeysArePressed) {
 TEST_F(KeyPress, LeftShiftIsReportedCorrectly) {
     TestDriver driver;
     auto       key_a    = KeymapKey(0, 0, 0, KC_A);
-    auto       key_lsft = KeymapKey(0, 3, 0, KC_LSFT);
+    auto       key_lsft = KeymapKey(0, 3, 0, KC_LEFT_SHIFT);
 
     set_keymap({key_a, key_lsft});
 
@@ -110,8 +110,8 @@ TEST_F(KeyPress, LeftShiftIsReportedCorrectly) {
 
 TEST_F(KeyPress, PressLeftShiftAndControl) {
     TestDriver driver;
-    auto       key_lsft  = KeymapKey(0, 3, 0, KC_LSFT);
-    auto       key_lctrl = KeymapKey(0, 5, 0, KC_LCTRL);
+    auto       key_lsft  = KeymapKey(0, 3, 0, KC_LEFT_SHIFT);
+    auto       key_lctrl = KeymapKey(0, 5, 0, KC_LEFT_CTRL);
 
     set_keymap({key_lctrl, key_lsft});
 
@@ -138,8 +138,8 @@ TEST_F(KeyPress, PressLeftShiftAndControl) {
 
 TEST_F(KeyPress, LeftAndRightShiftCanBePressedAtTheSameTime) {
     TestDriver driver;
-    auto       key_lsft = KeymapKey(0, 3, 0, KC_LSFT);
-    auto       key_rsft = KeymapKey(0, 4, 0, KC_RSFT);
+    auto       key_lsft = KeymapKey(0, 3, 0, KC_LEFT_SHIFT);
+    auto       key_rsft = KeymapKey(0, 4, 0, KC_RIGHT_SHIFT);
 
     set_keymap({key_rsft, key_lsft});
 
@@ -175,12 +175,12 @@ TEST_F(KeyPress, RightShiftLeftControlAndCharWithTheSameKey) {
     // The underlying cause is that we use only one bit to represent the right hand
     // modifiers.
     combo_key.press();
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_RSFT, KC_RCTRL)));
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_RSFT, KC_RCTRL, KC_O)));
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_RIGHT_SHIFT, KC_RIGHT_CTRL)));
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_RIGHT_SHIFT, KC_RIGHT_CTRL, KC_O)));
     keyboard_task();
 
     combo_key.release();
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_RSFT, KC_RCTRL)));
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_RIGHT_SHIFT, KC_RIGHT_CTRL)));
     EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
     keyboard_task();
 }
@@ -189,18 +189,18 @@ TEST_F(KeyPress, PressPlusEqualReleaseBeforePress) {
     TestDriver driver;
     InSequence s;
     auto       key_plus = KeymapKey(0, 1, 1, KC_PLUS);
-    auto       key_eql  = KeymapKey(0, 0, 1, KC_EQL);
+    auto       key_eql  = KeymapKey(0, 0, 1, KC_EQUAL);
 
     set_keymap({key_plus, key_eql});
 
     key_plus.press();
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT)));
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_EQL)));
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT)));
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT, KC_EQUAL)));
     run_one_scan_loop();
     testing::Mock::VerifyAndClearExpectations(&driver);
 
     key_plus.release();
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT)));
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT)));
     EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
     run_one_scan_loop();
     testing::Mock::VerifyAndClearExpectations(&driver);
@@ -220,13 +220,13 @@ TEST_F(KeyPress, PressPlusEqualDontReleaseBeforePress) {
     TestDriver driver;
     InSequence s;
     auto       key_plus = KeymapKey(0, 1, 1, KC_PLUS);
-    auto       key_eql  = KeymapKey(0, 0, 1, KC_EQL);
+    auto       key_eql  = KeymapKey(0, 0, 1, KC_EQUAL);
 
     set_keymap({key_plus, key_eql});
 
     key_plus.press();
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT)));
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_EQL)));
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT)));
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT, KC_EQUAL)));
     run_one_scan_loop();
     testing::Mock::VerifyAndClearExpectations(&driver);
 
@@ -237,14 +237,13 @@ TEST_F(KeyPress, PressPlusEqualDontReleaseBeforePress) {
     testing::Mock::VerifyAndClearExpectations(&driver);
 
     key_plus.release();
-    // BUG: Should really still return KC_EQL, but this is fine too
-    // It's also called twice for some reason
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(2);
+    // BUG: Should really still return KC_EQUAL, but this is fine too
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1);
     run_one_scan_loop();
     testing::Mock::VerifyAndClearExpectations(&driver);
 
     key_eql.release();
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
+    EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
     run_one_scan_loop();
     testing::Mock::VerifyAndClearExpectations(&driver);
 }
@@ -253,12 +252,12 @@ TEST_F(KeyPress, PressEqualPlusReleaseBeforePress) {
     TestDriver driver;
     InSequence s;
     auto       key_plus = KeymapKey(0, 1, 1, KC_PLUS);
-    auto       key_eql  = KeymapKey(0, 0, 1, KC_EQL);
+    auto       key_eql  = KeymapKey(0, 0, 1, KC_EQUAL);
 
     set_keymap({key_plus, key_eql});
 
     key_eql.press();
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_EQL)));
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_EQUAL)));
     run_one_scan_loop();
     testing::Mock::VerifyAndClearExpectations(&driver);
 
@@ -268,13 +267,13 @@ TEST_F(KeyPress, PressEqualPlusReleaseBeforePress) {
     testing::Mock::VerifyAndClearExpectations(&driver);
 
     key_plus.press();
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT)));
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_EQL)));
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT)));
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT, KC_EQUAL)));
     run_one_scan_loop();
     testing::Mock::VerifyAndClearExpectations(&driver);
 
     key_plus.release();
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT)));
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT)));
     EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
     run_one_scan_loop();
     testing::Mock::VerifyAndClearExpectations(&driver);
@@ -284,12 +283,12 @@ TEST_F(KeyPress, PressEqualPlusDontReleaseBeforePress) {
     TestDriver driver;
     InSequence s;
     auto       key_plus = KeymapKey(0, 1, 1, KC_PLUS);
-    auto       key_eql  = KeymapKey(0, 0, 1, KC_EQL);
+    auto       key_eql  = KeymapKey(0, 0, 1, KC_EQUAL);
 
     set_keymap({key_plus, key_eql});
 
     key_eql.press();
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_EQL)));
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_EQUAL)));
     run_one_scan_loop();
     testing::Mock::VerifyAndClearExpectations(&driver);
 
@@ -309,9 +308,7 @@ TEST_F(KeyPress, PressEqualPlusDontReleaseBeforePress) {
     testing::Mock::VerifyAndClearExpectations(&driver);
 
     key_plus.release();
-    // This report is not needed
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT)));
     EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
     run_one_scan_loop();
     testing::Mock::VerifyAndClearExpectations(&driver);
-}
\ No newline at end of file
+}
diff --git a/tests/basic/test_macro.cpp b/tests/basic/test_macro.cpp
deleted file mode 100644
index ae2f3b32e3..0000000000
--- a/tests/basic/test_macro.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-/* Copyright 2017 Fred Sundvik
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "test_common.hpp"
-#include "time.h"
-
-using testing::InSequence;
-using testing::InvokeWithoutArgs;
-
-class Macro : public TestFixture {};
-
-#define AT_TIME(t) WillOnce(InvokeWithoutArgs([current_time]() { EXPECT_EQ(timer_elapsed32(current_time), t); }))
-
-extern "C" const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
-    if (record->event.pressed) {
-        switch (id) {
-            case 0:
-                return MACRO(D(LSFT), T(H), U(LSFT), T(E), T(L), T(L), T(O), T(SPACE), W(100), D(LSFT), T(W), U(LSFT), I(10), T(O), T(R), T(L), T(D), D(LSFT), T(1), U(LSFT), END);
-        }
-    }
-    return MACRO_NONE;
-};
-
-TEST_F(Macro, PlayASimpleMacro) {
-    TestDriver driver;
-    InSequence s;
-    auto       key_macro = KeymapKey(0, 8, 0, M(0));
-
-    set_keymap({key_macro});
-
-    key_macro.press();
-
-    uint32_t current_time = timer_read32();
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT))).AT_TIME(0);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT, KC_H))).AT_TIME(0);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT))).AT_TIME(0);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(0);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_E))).AT_TIME(0);
-    // The macro system could actually skip these empty keyboard reports
-    // it should be enough to just send a report with the next key down
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(0);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_L))).AT_TIME(0);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(0);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_L))).AT_TIME(0);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(0);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_O))).AT_TIME(0);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(0);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_SPACE))).AT_TIME(0);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(0);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT))).AT_TIME(100);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT, KC_W))).AT_TIME(100);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT))).AT_TIME(100);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(100);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_O)))
-        // BUG: The timer should not really have advanced 10 ms here
-        // See issue #1477
-        .AT_TIME(110);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()))
-        // BUG: The timer should not advance on both keydown and key-up
-        // See issue #1477
-        .AT_TIME(120);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_R))).AT_TIME(130);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(140);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_L))).AT_TIME(150);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(160);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_D))).AT_TIME(170);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(180);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT))).AT_TIME(190);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT, KC_1))).AT_TIME(200);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT))).AT_TIME(210);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(220);
-    run_one_scan_loop();
-
-    key_macro.release();
-}
diff --git a/tests/basic/test_one_shot_keys.cpp b/tests/basic/test_one_shot_keys.cpp
index 98178912e4..43fc3e1ba3 100644
--- a/tests/basic/test_one_shot_keys.cpp
+++ b/tests/basic/test_one_shot_keys.cpp
@@ -175,22 +175,20 @@ TEST_F(OneShot, OSLWithAdditionalKeypress) {
     testing::Mock::VerifyAndClearExpectations(&driver);
 
     /* Release OSL key */
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(2);
+    EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
     osl_key.release();
     run_one_scan_loop();
     testing::Mock::VerifyAndClearExpectations(&driver);
 
     /* Press regular key */
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(regular_key.report_code))).Times(2);
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
+    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(regular_key.report_code))).Times(1);
     EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
     regular_key.press();
     run_one_scan_loop();
     testing::Mock::VerifyAndClearExpectations(&driver);
 
     /* Release regular key */
-    EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
+    EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
     regular_key.release();
     run_one_scan_loop();
     testing::Mock::VerifyAndClearExpectations(&driver);