diff options
author | Fred Sundvik <fsundvik@gmail.com> | 2017-06-18 23:49:38 +0300 |
---|---|---|
committer | Fred Sundvik <fsundvik@gmail.com> | 2017-06-18 23:49:38 +0300 |
commit | 36f820be7e80bc8f1f5489373708356cf142c269 (patch) | |
tree | cf3561b80650e536a2c41f0e3bb4bc70635b6435 /tests/test_common | |
parent | e85b1857968d4c0378b9778650c30b9d2bca3ea9 (diff) | |
download | qmk_firmware-36f820be7e80bc8f1f5489373708356cf142c269.tar.gz qmk_firmware-36f820be7e80bc8f1f5489373708356cf142c269.zip |
Add a test fixture
It only initializes QMK once, and clears the matrix after each test.
Diffstat (limited to 'tests/test_common')
-rw-r--r-- | tests/test_common/matrix.c | 6 | ||||
-rw-r--r-- | tests/test_common/test_fixture.cpp | 38 | ||||
-rw-r--r-- | tests/test_common/test_fixture.h | 28 | ||||
-rw-r--r-- | tests/test_common/test_matrix.h | 1 |
4 files changed, 72 insertions, 1 deletions
diff --git a/tests/test_common/matrix.c b/tests/test_common/matrix.c index 5ab5bac6c..0d9fa68b0 100644 --- a/tests/test_common/matrix.c +++ b/tests/test_common/matrix.c | |||
@@ -22,7 +22,7 @@ | |||
22 | static matrix_row_t matrix[MATRIX_ROWS] = {}; | 22 | static matrix_row_t matrix[MATRIX_ROWS] = {}; |
23 | 23 | ||
24 | void matrix_init(void) { | 24 | void matrix_init(void) { |
25 | memset(matrix, 0, sizeof(matrix)); | 25 | clear_all_keys(); |
26 | matrix_init_quantum(); | 26 | matrix_init_quantum(); |
27 | } | 27 | } |
28 | 28 | ||
@@ -54,3 +54,7 @@ void press_key(uint8_t col, uint8_t row) { | |||
54 | void release_key(uint8_t col, uint8_t row) { | 54 | void release_key(uint8_t col, uint8_t row) { |
55 | matrix[row] &= ~(1 << col); | 55 | matrix[row] &= ~(1 << col); |
56 | } | 56 | } |
57 | |||
58 | void clear_all_keys(void) { | ||
59 | memset(matrix, 0, sizeof(matrix)); | ||
60 | } | ||
diff --git a/tests/test_common/test_fixture.cpp b/tests/test_common/test_fixture.cpp new file mode 100644 index 000000000..aff518d21 --- /dev/null +++ b/tests/test_common/test_fixture.cpp | |||
@@ -0,0 +1,38 @@ | |||
1 | #include "test_fixture.h" | ||
2 | #include "gmock/gmock.h" | ||
3 | #include "test_driver.h" | ||
4 | #include "test_matrix.h" | ||
5 | #include "keyboard.h" | ||
6 | |||
7 | using testing::_; | ||
8 | using testing::AnyNumber; | ||
9 | using testing::Return; | ||
10 | using testing::Between; | ||
11 | |||
12 | void TestFixture::SetUpTestCase() { | ||
13 | TestDriver driver; | ||
14 | EXPECT_CALL(driver, send_keyboard_mock(_)); | ||
15 | keyboard_init(); | ||
16 | } | ||
17 | |||
18 | void TestFixture::TearDownTestCase() { | ||
19 | } | ||
20 | |||
21 | TestFixture::TestFixture() { | ||
22 | } | ||
23 | |||
24 | TestFixture::~TestFixture() { | ||
25 | TestDriver driver; | ||
26 | clear_all_keys(); | ||
27 | // Run for a while to make sure all keys are completely released | ||
28 | // Should probably wait until tapping term etc, has timed out | ||
29 | EXPECT_CALL(driver, send_keyboard_mock(_)).Times(AnyNumber()); | ||
30 | EXPECT_CALL(driver, keyboard_leds_mock()).WillRepeatedly(Return(0)); | ||
31 | for (int i=0; i<100; i++) { | ||
32 | keyboard_task(); | ||
33 | } | ||
34 | testing::Mock::VerifyAndClearExpectations(&driver); | ||
35 | // Verify that the matrix really is cleared | ||
36 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(Between(0, 1)); | ||
37 | EXPECT_CALL(driver, keyboard_leds_mock()).WillRepeatedly(Return(0)); | ||
38 | } \ No newline at end of file | ||
diff --git a/tests/test_common/test_fixture.h b/tests/test_common/test_fixture.h new file mode 100644 index 000000000..a775a425a --- /dev/null +++ b/tests/test_common/test_fixture.h | |||
@@ -0,0 +1,28 @@ | |||
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 | #pragma once | ||
18 | |||
19 | #include "gtest/gtest.h" | ||
20 | |||
21 | class TestFixture : public testing::Test { | ||
22 | public: | ||
23 | TestFixture(); | ||
24 | ~TestFixture(); | ||
25 | static void SetUpTestCase(); | ||
26 | static void TearDownTestCase(); | ||
27 | |||
28 | }; \ No newline at end of file | ||
diff --git a/tests/test_common/test_matrix.h b/tests/test_common/test_matrix.h index afc65c556..174fc4f22 100644 --- a/tests/test_common/test_matrix.h +++ b/tests/test_common/test_matrix.h | |||
@@ -23,6 +23,7 @@ extern "C" { | |||
23 | 23 | ||
24 | void press_key(uint8_t col, uint8_t row); | 24 | void press_key(uint8_t col, uint8_t row); |
25 | void release_key(uint8_t col, uint8_t row); | 25 | void release_key(uint8_t col, uint8_t row); |
26 | void clear_all_keys(void); | ||
26 | 27 | ||
27 | #ifdef __cplusplus | 28 | #ifdef __cplusplus |
28 | } | 29 | } |