forked from mirrors/qmk_userspace
		
	More natural interface for setting keyboard leds
This commit is contained in:
		
					parent
					
						
							
								36f820be7e
							
						
					
				
			
			
				commit
				
					
						43d8fa5bf1
					
				
			
		
					 4 changed files with 4 additions and 8 deletions
				
			
		| 
						 | 
					@ -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();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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));
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue