From e85b1857968d4c0378b9778650c30b9d2bca3ea9 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 18 Jun 2017 14:40:22 +0300 Subject: [PATCH] Test two keys pressed at once --- tests/basic/test.cpp | 16 +++++++++++- tests/test_common/keyboard_report_util.cpp | 30 ++++++++++++++++++++-- tests/test_common/matrix.c | 2 ++ 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/tests/basic/test.cpp b/tests/basic/test.cpp index 804642ea..398063fc 100644 --- a/tests/basic/test.cpp +++ b/tests/basic/test.cpp @@ -51,6 +51,20 @@ TEST(KeyPress, CorrectKeyIsReportedWhenPressed) { EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_A))); keyboard_task(); } - EXPECT_CALL(driver, send_keyboard_mock(_)); + +TEST(KeyPress, CorrectKeysAreReportedWhenTwoKeysArePressed) { + TestDriver driver; + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + keyboard_init(); + press_key(1, 0); + press_key(0, 1); + EXPECT_CALL(driver, keyboard_leds_mock()).WillRepeatedly(Return(0)); + //TODO: This is a left-over from the previous test and need to be fixed + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + keyboard_task(); + //Note that QMK only processes one key at a time + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_B))); + keyboard_task(); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_B, KC_C))); keyboard_task(); } diff --git a/tests/test_common/keyboard_report_util.cpp b/tests/test_common/keyboard_report_util.cpp index 70fc1c04..34e53cd4 100644 --- a/tests/test_common/keyboard_report_util.cpp +++ b/tests/test_common/keyboard_report_util.cpp @@ -15,15 +15,41 @@ */ #include "keyboard_report_util.h" + #include + #include using namespace testing; + namespace + { + std::vector get_keys(const report_keyboard_t& report) { + std::vector result; + #if defined(NKRO_ENABLE) + #error NKRO support not implemented yet + #elif defined(USB_6KRO_ENABLE) + #error 6KRO support not implemented yet + #else + for(size_t i=0; i static matrix_row_t matrix[MATRIX_ROWS] = {}; void matrix_init(void) { + memset(matrix, 0, sizeof(matrix)); matrix_init_quantum(); }