More natural interface for setting keyboard leds

This commit is contained in:
Fred Sundvik 2017-06-19 00:19:09 +03:00
parent 36f820be7e
commit 43d8fa5bf1
4 changed files with 4 additions and 8 deletions

View file

@ -37,7 +37,6 @@ class KeyPress : public TestFixture {};
TEST_F(KeyPress, SendKeyboardIsNotCalledWhenNoKeyIsPressed) { TEST_F(KeyPress, SendKeyboardIsNotCalledWhenNoKeyIsPressed) {
TestDriver driver; TestDriver driver;
EXPECT_CALL(driver, keyboard_leds_mock()).WillRepeatedly(Return(0));
EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
keyboard_task(); keyboard_task();
} }
@ -45,7 +44,6 @@ TEST_F(KeyPress, SendKeyboardIsNotCalledWhenNoKeyIsPressed) {
TEST_F(KeyPress, CorrectKeyIsReportedWhenPressed) { TEST_F(KeyPress, CorrectKeyIsReportedWhenPressed) {
TestDriver driver; TestDriver driver;
press_key(0, 0); press_key(0, 0);
EXPECT_CALL(driver, keyboard_leds_mock()).WillRepeatedly(Return(0));
EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_A))); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_A)));
keyboard_task(); keyboard_task();
} }
@ -54,7 +52,6 @@ TEST_F(KeyPress, CorrectKeysAreReportedWhenTwoKeysArePressed) {
TestDriver driver; TestDriver driver;
press_key(1, 0); press_key(1, 0);
press_key(0, 1); press_key(0, 1);
EXPECT_CALL(driver, keyboard_leds_mock()).WillRepeatedly(Return(0));
//Note that QMK only processes one key at a time //Note that QMK only processes one key at a time
EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_B))); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_B)));
keyboard_task(); keyboard_task();

View file

@ -27,7 +27,6 @@ TestDriver::TestDriver()
&TestDriver::send_consumer &TestDriver::send_consumer
} }
{ {
host_set_driver(&m_driver); host_set_driver(&m_driver);
m_this = this; m_this = this;
} }
@ -37,7 +36,7 @@ TestDriver::~TestDriver() {
} }
uint8_t TestDriver::keyboard_leds(void) { uint8_t TestDriver::keyboard_leds(void) {
return m_this->keyboard_leds_mock(); return m_this->m_leds;
} }
void TestDriver::send_keyboard(report_keyboard_t* report) { void TestDriver::send_keyboard(report_keyboard_t* report) {

View file

@ -27,7 +27,8 @@ class TestDriver {
public: public:
TestDriver(); TestDriver();
~TestDriver(); ~TestDriver();
MOCK_METHOD0(keyboard_leds_mock, uint8_t ()); void set_leds(uint8_t leds) { m_leds = leds; }
MOCK_METHOD1(send_keyboard_mock, void (report_keyboard_t&)); MOCK_METHOD1(send_keyboard_mock, void (report_keyboard_t&));
MOCK_METHOD1(send_mouse_mock, void (report_mouse_t&)); MOCK_METHOD1(send_mouse_mock, void (report_mouse_t&));
MOCK_METHOD1(send_system_mock, void (uint16_t)); MOCK_METHOD1(send_system_mock, void (uint16_t));
@ -39,6 +40,7 @@ private:
static void send_system(uint16_t data); static void send_system(uint16_t data);
static void send_consumer(uint16_t data); static void send_consumer(uint16_t data);
host_driver_t m_driver; host_driver_t m_driver;
uint8_t m_leds = 0;
static TestDriver* m_this; static TestDriver* m_this;
}; };

View file

@ -27,12 +27,10 @@ TestFixture::~TestFixture() {
// Run for a while to make sure all keys are completely released // Run for a while to make sure all keys are completely released
// Should probably wait until tapping term etc, has timed out // Should probably wait until tapping term etc, has timed out
EXPECT_CALL(driver, send_keyboard_mock(_)).Times(AnyNumber()); EXPECT_CALL(driver, send_keyboard_mock(_)).Times(AnyNumber());
EXPECT_CALL(driver, keyboard_leds_mock()).WillRepeatedly(Return(0));
for (int i=0; i<100; i++) { for (int i=0; i<100; i++) {
keyboard_task(); keyboard_task();
} }
testing::Mock::VerifyAndClearExpectations(&driver); testing::Mock::VerifyAndClearExpectations(&driver);
// Verify that the matrix really is cleared // Verify that the matrix really is cleared
EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(Between(0, 1)); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(Between(0, 1));
EXPECT_CALL(driver, keyboard_leds_mock()).WillRepeatedly(Return(0));
} }