@ -24,7 +24,7 @@ class KeyPress : public TestFixture {};
TEST_F ( KeyPress , SendKeyboardIsNotCalledWhenNoKeyIsPressed ) {
TestDriver driver ;
EXPECT_CALL ( driver , send_keyboard_mock ( _ ) ) . Times ( 0 ) ;
EXPECT_NO_REPORT ( driver ) ;
keyboard_task ( ) ;
}
@ -35,11 +35,11 @@ TEST_F(KeyPress, CorrectKeyIsReportedWhenPressed) {
set_keymap ( { key } ) ;
key . press ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( key . report_code ) ) ) ;
EXPECT_REPORT ( driver , ( key . report_code ) ) ;
keyboard_task ( ) ;
key . release ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( ) ) ) ;
EXPECT_EMPTY_REPORT ( driver ) ;
keyboard_task ( ) ;
}
@ -50,7 +50,7 @@ TEST_F(KeyPress, ANonMappedKeyDoesNothing) {
set_keymap ( { key } ) ;
key . press ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( _ ) ) . Times ( 0 ) ;
EXPECT_NO_REPORT ( driver ) ;
keyboard_task ( ) ;
keyboard_task ( ) ;
}
@ -66,19 +66,19 @@ TEST_F(KeyPress, CorrectKeysAreReportedWhenTwoKeysArePressed) {
key_c . press ( ) ;
// Note that QMK only processes one key at a time
// See issue #1476 for more information
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( key_b . report_code ) ) ) ;
EXPECT_REPORT ( driver , ( key_b . report_code ) ) ;
keyboard_task ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( key_b . report_code , key_c . report_code ) ) ) ;
EXPECT_REPORT ( driver , ( key_b . report_code , key_c . report_code ) ) ;
keyboard_task ( ) ;
key_b . release ( ) ;
key_c . release ( ) ;
// Note that the first key released is the first one in the matrix order
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( key_c . report_code ) ) ) ;
EXPECT_REPORT ( driver , ( key_c . report_code ) ) ;
keyboard_task ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( ) ) ) ;
EXPECT_EMPTY_REPORT ( driver ) ;
keyboard_task ( ) ;
}
@ -94,17 +94,17 @@ TEST_F(KeyPress, LeftShiftIsReportedCorrectly) {
// Unfortunately modifiers are also processed in the wrong order
// See issue #1476 for more information
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( key_a . report_code ) ) ) ;
EXPECT_REPORT ( driver , ( key_a . report_code ) ) ;
keyboard_task ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( key_a . report_code , key_lsft . report_code ) ) ) ;
EXPECT_REPORT ( driver , ( key_a . report_code , key_lsft . report_code ) ) ;
keyboard_task ( ) ;
key_a . release ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( key_lsft . report_code ) ) ) ;
EXPECT_REPORT ( driver , ( key_lsft . report_code ) ) ;
keyboard_task ( ) ;
key_lsft . release ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( ) ) ) ;
EXPECT_EMPTY_REPORT ( driver ) ;
keyboard_task ( ) ;
}
@ -120,19 +120,19 @@ TEST_F(KeyPress, PressLeftShiftAndControl) {
// Unfortunately modifiers are also processed in the wrong order
// See issue #1476 for more information
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( key_lsft . report_code ) ) ) ;
EXPECT_REPORT ( driver , ( key_lsft . report_code ) ) ;
keyboard_task ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( key_lsft . report_code , key_lctrl . report_code ) ) ) ;
EXPECT_REPORT ( driver , ( key_lsft . report_code , key_lctrl . report_code ) ) ;
keyboard_task ( ) ;
key_lsft . release ( ) ;
key_lctrl . release ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( key_lctrl . report_code ) ) ) ;
EXPECT_REPORT ( driver , ( key_lctrl . report_code ) ) ;
keyboard_task ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( ) ) ) ;
EXPECT_EMPTY_REPORT ( driver ) ;
keyboard_task ( ) ;
}
@ -147,19 +147,19 @@ TEST_F(KeyPress, LeftAndRightShiftCanBePressedAtTheSameTime) {
key_rsft . press ( ) ;
// Unfortunately modifiers are also processed in the wrong order
// See issue #1476 for more information
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( key_lsft . report_code ) ) ) ;
EXPECT_REPORT ( driver , ( key_lsft . report_code ) ) ;
keyboard_task ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( key_lsft . report_code , key_rsft . report_code ) ) ) ;
EXPECT_REPORT ( driver , ( key_lsft . report_code , key_rsft . report_code ) ) ;
keyboard_task ( ) ;
key_lsft . release ( ) ;
key_rsft . release ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( key_rsft . report_code ) ) ) ;
EXPECT_REPORT ( driver , ( key_rsft . report_code ) ) ;
keyboard_task ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( ) ) ) ;
EXPECT_EMPTY_REPORT ( driver ) ;
keyboard_task ( ) ;
}
@ -175,13 +175,13 @@ 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_RIGHT_SHIFT , KC_RIGHT_CTRL ) ) ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( KC_RIGHT_SHIFT , KC_RIGHT_CTRL , KC_O ) ) ) ;
EXPECT_REPORT ( driver , ( KC_RIGHT_SHIFT , KC_RIGHT_CTRL ) ) ;
EXPECT_REPORT ( driver , ( KC_RIGHT_SHIFT , KC_RIGHT_CTRL , KC_O ) ) ;
keyboard_task ( ) ;
combo_key . release ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( KC_RIGHT_SHIFT , KC_RIGHT_CTRL ) ) ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( ) ) ) ;
EXPECT_REPORT ( driver , ( KC_RIGHT_SHIFT , KC_RIGHT_CTRL ) ) ;
EXPECT_EMPTY_REPORT ( driver ) ;
keyboard_task ( ) ;
}
@ -194,24 +194,24 @@ TEST_F(KeyPress, PressPlusEqualReleaseBeforePress) {
set_keymap ( { key_plus , key_eql } ) ;
key_plus . press ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( KC_LEFT_SHIFT ) ) ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( KC_LEFT_SHIFT , KC_EQUAL ) ) ) ;
EXPECT_REPORT ( driver , ( KC_LEFT_SHIFT ) ) ;
EXPECT_REPORT ( driver , ( KC_LEFT_SHIFT , KC_EQUAL ) ) ;
run_one_scan_loop ( ) ;
testing : : Mock : : VerifyAndClearExpectations ( & driver ) ;
key_plus . release ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( KC_LEFT_SHIFT ) ) ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( ) ) ) ;
EXPECT_REPORT ( driver , ( KC_LEFT_SHIFT ) ) ;
EXPECT_EMPTY_REPORT ( driver ) ;
run_one_scan_loop ( ) ;
testing : : Mock : : VerifyAndClearExpectations ( & driver ) ;
key_eql . press ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( key_eql . report_code ) ) ) ;
EXPECT_REPORT ( driver , ( key_eql . report_code ) ) ;
run_one_scan_loop ( ) ;
testing : : Mock : : VerifyAndClearExpectations ( & driver ) ;
key_eql . release ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( ) ) ) ;
EXPECT_EMPTY_REPORT ( driver ) ;
run_one_scan_loop ( ) ;
testing : : Mock : : VerifyAndClearExpectations ( & driver ) ;
}
@ -225,25 +225,25 @@ TEST_F(KeyPress, PressPlusEqualDontReleaseBeforePress) {
set_keymap ( { key_plus , key_eql } ) ;
key_plus . press ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( KC_LEFT_SHIFT ) ) ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( KC_LEFT_SHIFT , KC_EQUAL ) ) ) ;
EXPECT_REPORT ( driver , ( KC_LEFT_SHIFT ) ) ;
EXPECT_REPORT ( driver , ( KC_LEFT_SHIFT , KC_EQUAL ) ) ;
run_one_scan_loop ( ) ;
testing : : Mock : : VerifyAndClearExpectations ( & driver ) ;
key_eql . press ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( ) ) ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( KC_EQUAL ) ) ) ;
EXPECT_EMPTY_REPORT ( driver ) ;
EXPECT_REPORT ( driver , ( KC_EQUAL ) ) ;
run_one_scan_loop ( ) ;
testing : : Mock : : VerifyAndClearExpectations ( & driver ) ;
key_plus . release ( ) ;
// BUG: Should really still return KC_EQUAL, but this is fine too
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( ) ) ) . Times ( 1 ) ;
EXPECT_EMPTY_REPORT ( driver ) ;
run_one_scan_loop ( ) ;
testing : : Mock : : VerifyAndClearExpectations ( & driver ) ;
key_eql . release ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( _ ) ) . Times ( 0 ) ;
EXPECT_NO_REPORT ( driver ) ;
run_one_scan_loop ( ) ;
testing : : Mock : : VerifyAndClearExpectations ( & driver ) ;
}
@ -257,24 +257,24 @@ TEST_F(KeyPress, PressEqualPlusReleaseBeforePress) {
set_keymap ( { key_plus , key_eql } ) ;
key_eql . press ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( KC_EQUAL ) ) ) ;
EXPECT_REPORT ( driver , ( KC_EQUAL ) ) ;
run_one_scan_loop ( ) ;
testing : : Mock : : VerifyAndClearExpectations ( & driver ) ;
key_eql . release ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( ) ) ) ;
EXPECT_EMPTY_REPORT ( driver ) ;
run_one_scan_loop ( ) ;
testing : : Mock : : VerifyAndClearExpectations ( & driver ) ;
key_plus . press ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( KC_LEFT_SHIFT ) ) ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( KC_LEFT_SHIFT , KC_EQUAL ) ) ) ;
EXPECT_REPORT ( driver , ( KC_LEFT_SHIFT ) ) ;
EXPECT_REPORT ( driver , ( KC_LEFT_SHIFT , KC_EQUAL ) ) ;
run_one_scan_loop ( ) ;
testing : : Mock : : VerifyAndClearExpectations ( & driver ) ;
key_plus . release ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( KC_LEFT_SHIFT ) ) ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( ) ) ) ;
EXPECT_REPORT ( driver , ( KC_LEFT_SHIFT ) ) ;
EXPECT_EMPTY_REPORT ( driver ) ;
run_one_scan_loop ( ) ;
testing : : Mock : : VerifyAndClearExpectations ( & driver ) ;
}
@ -288,27 +288,27 @@ TEST_F(KeyPress, PressEqualPlusDontReleaseBeforePress) {
set_keymap ( { key_plus , key_eql } ) ;
key_eql . press ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( KC_EQUAL ) ) ) ;
EXPECT_REPORT ( driver , ( KC_EQUAL ) ) ;
run_one_scan_loop ( ) ;
testing : : Mock : : VerifyAndClearExpectations ( & driver ) ;
key_plus . press ( ) ;
// BUG: The sequence is a bit strange, but it works, the end result is that
// KC_PLUS is sent
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( KC_LEFT_SHIFT , KC_EQUAL ) ) ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( KC_LEFT_SHIFT ) ) ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( KC_LEFT_SHIFT , KC_EQUAL ) ) ) ;
EXPECT_REPORT ( driver , ( KC_LEFT_SHIFT , KC_EQUAL ) ) ;
EXPECT_REPORT ( driver , ( KC_LEFT_SHIFT ) ) ;
EXPECT_REPORT ( driver , ( KC_LEFT_SHIFT , KC_EQUAL ) ) ;
run_one_scan_loop ( ) ;
testing : : Mock : : VerifyAndClearExpectations ( & driver ) ;
key_eql . release ( ) ;
// I guess it's fine to still report shift here
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( KC_LEFT_SHIFT ) ) ) ;
EXPECT_REPORT ( driver , ( KC_LEFT_SHIFT ) ) ;
run_one_scan_loop ( ) ;
testing : : Mock : : VerifyAndClearExpectations ( & driver ) ;
key_plus . release ( ) ;
EXPECT_CALL ( driver , send_keyboard_mock ( KeyboardReport ( ) ) ) ;
EXPECT_EMPTY_REPORT ( driver ) ;
run_one_scan_loop ( ) ;
testing : : Mock : : VerifyAndClearExpectations ( & driver ) ;
}