diff options
Diffstat (limited to 'tests/test_common')
| -rw-r--r-- | tests/test_common/matrix.c | 13 | ||||
| -rw-r--r-- | tests/test_common/test_driver.cpp | 58 | ||||
| -rw-r--r-- | tests/test_common/test_driver.h | 45 | ||||
| -rw-r--r-- | tests/test_common/test_matrix.h | 31 |
4 files changed, 146 insertions, 1 deletions
diff --git a/tests/test_common/matrix.c b/tests/test_common/matrix.c index 940f28f35..85556e2c4 100644 --- a/tests/test_common/matrix.c +++ b/tests/test_common/matrix.c | |||
| @@ -16,6 +16,9 @@ | |||
| 16 | 16 | ||
| 17 | 17 | ||
| 18 | #include "matrix.h" | 18 | #include "matrix.h" |
| 19 | #include "test_matrix.h" | ||
| 20 | |||
| 21 | static matrix_row_t matrix[MATRIX_ROWS] = {}; | ||
| 19 | 22 | ||
| 20 | void matrix_init(void) { | 23 | void matrix_init(void) { |
| 21 | matrix_init_quantum(); | 24 | matrix_init_quantum(); |
| @@ -27,7 +30,7 @@ uint8_t matrix_scan(void) { | |||
| 27 | } | 30 | } |
| 28 | 31 | ||
| 29 | matrix_row_t matrix_get_row(uint8_t row) { | 32 | matrix_row_t matrix_get_row(uint8_t row) { |
| 30 | return 0; | 33 | return matrix[row]; |
| 31 | } | 34 | } |
| 32 | 35 | ||
| 33 | void matrix_print(void) { | 36 | void matrix_print(void) { |
| @@ -41,3 +44,11 @@ void matrix_init_kb(void) { | |||
| 41 | void matrix_scan_kb(void) { | 44 | void matrix_scan_kb(void) { |
| 42 | 45 | ||
| 43 | } | 46 | } |
| 47 | |||
| 48 | void press_key(uint8_t col, uint8_t row) { | ||
| 49 | matrix[row] |= 1 << col; | ||
| 50 | } | ||
| 51 | |||
| 52 | void release_key(uint8_t col, uint8_t row) { | ||
| 53 | matrix[row] &= ~(1 << col); | ||
| 54 | } | ||
diff --git a/tests/test_common/test_driver.cpp b/tests/test_common/test_driver.cpp new file mode 100644 index 000000000..7c67f5776 --- /dev/null +++ b/tests/test_common/test_driver.cpp | |||
| @@ -0,0 +1,58 @@ | |||
| 1 | /* Copyright 2017 Fred Sundvik | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #include "test_driver.h" | ||
| 18 | |||
| 19 | TestDriver* TestDriver::m_this = nullptr; | ||
| 20 | |||
| 21 | TestDriver::TestDriver() | ||
| 22 | : m_driver{ | ||
| 23 | &TestDriver::keyboard_leds, | ||
| 24 | &TestDriver::send_keyboard, | ||
| 25 | &TestDriver::send_mouse, | ||
| 26 | &TestDriver::send_system, | ||
| 27 | &TestDriver::send_consumer | ||
| 28 | } | ||
| 29 | { | ||
| 30 | |||
| 31 | host_set_driver(&m_driver); | ||
| 32 | m_this = this; | ||
| 33 | } | ||
| 34 | |||
| 35 | TestDriver::~TestDriver() { | ||
| 36 | m_this = nullptr; | ||
| 37 | } | ||
| 38 | |||
| 39 | uint8_t TestDriver::keyboard_leds(void) { | ||
| 40 | return m_this->keyboard_leds_mock(); | ||
| 41 | } | ||
| 42 | |||
| 43 | void TestDriver::send_keyboard(report_keyboard_t* report) { | ||
| 44 | m_this->send_keyboard_mock(report); | ||
| 45 | |||
| 46 | } | ||
| 47 | |||
| 48 | void TestDriver::send_mouse(report_mouse_t* report) { | ||
| 49 | m_this->send_mouse_mock(report); | ||
| 50 | } | ||
| 51 | |||
| 52 | void TestDriver::send_system(uint16_t data) { | ||
| 53 | m_this->send_system_mock(data); | ||
| 54 | } | ||
| 55 | |||
| 56 | void TestDriver::send_consumer(uint16_t data) { | ||
| 57 | m_this->send_consumer_mock(data); | ||
| 58 | } | ||
diff --git a/tests/test_common/test_driver.h b/tests/test_common/test_driver.h new file mode 100644 index 000000000..d5b831884 --- /dev/null +++ b/tests/test_common/test_driver.h | |||
| @@ -0,0 +1,45 @@ | |||
| 1 | /* Copyright 2017 Fred Sundvik | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #ifndef TESTS_TEST_COMMON_TEST_DRIVER_H_ | ||
| 18 | #define TESTS_TEST_COMMON_TEST_DRIVER_H_ | ||
| 19 | |||
| 20 | #include "gmock/gmock.h" | ||
| 21 | #include <stdint.h> | ||
| 22 | #include "host.h" | ||
| 23 | |||
| 24 | |||
| 25 | class TestDriver { | ||
| 26 | public: | ||
| 27 | TestDriver(); | ||
| 28 | ~TestDriver(); | ||
| 29 | MOCK_METHOD0(keyboard_leds_mock, uint8_t ()); | ||
| 30 | MOCK_METHOD1(send_keyboard_mock, void (report_keyboard_t*)); | ||
| 31 | MOCK_METHOD1(send_mouse_mock, void (report_mouse_t*)); | ||
| 32 | MOCK_METHOD1(send_system_mock, void (uint16_t)); | ||
| 33 | MOCK_METHOD1(send_consumer_mock, void (uint16_t)); | ||
| 34 | private: | ||
| 35 | static uint8_t keyboard_leds(void); | ||
| 36 | static void send_keyboard(report_keyboard_t *report); | ||
| 37 | static void send_mouse(report_mouse_t* report); | ||
| 38 | static void send_system(uint16_t data); | ||
| 39 | static void send_consumer(uint16_t data); | ||
| 40 | host_driver_t m_driver; | ||
| 41 | static TestDriver* m_this; | ||
| 42 | }; | ||
| 43 | |||
| 44 | |||
| 45 | #endif /* TESTS_TEST_COMMON_TEST_DRIVER_H_ */ | ||
diff --git a/tests/test_common/test_matrix.h b/tests/test_common/test_matrix.h new file mode 100644 index 000000000..afc65c556 --- /dev/null +++ b/tests/test_common/test_matrix.h | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | /* Copyright 2017 Fred Sundvik | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #ifndef TESTS_TEST_COMMON_TEST_MATRIX_H_ | ||
| 18 | #define TESTS_TEST_COMMON_TEST_MATRIX_H_ | ||
| 19 | |||
| 20 | #ifdef __cplusplus | ||
| 21 | extern "C" { | ||
| 22 | #endif | ||
| 23 | |||
| 24 | void press_key(uint8_t col, uint8_t row); | ||
| 25 | void release_key(uint8_t col, uint8_t row); | ||
| 26 | |||
| 27 | #ifdef __cplusplus | ||
| 28 | } | ||
| 29 | #endif | ||
| 30 | |||
| 31 | #endif /* TESTS_TEST_COMMON_TEST_MATRIX_H_ */ | ||
