logo

qmk_firmware

custom branch of QMK firmware git clone https://anongit.hacktivis.me/git/qmk_firmware.git
commit: cfe0709fc3a0753f7e88fd45edf5970cfad06b5f
parent 7778e6dcb0aea42608052cedbfc1e980b76c77ef
Author: QMK Bot <hello@qmk.fm>
Date:   Mon, 13 May 2024 17:16:21 +0000

Merge remote-tracking branch 'origin/master' into develop

Diffstat:

Atests/housekeeping/config.h19+++++++++++++++++++
Atests/housekeeping/test.mk18++++++++++++++++++
Atests/housekeeping/test_housekeeping.cpp68++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtests/test_common/test_fixture.cpp4+++-
4 files changed, 108 insertions(+), 1 deletion(-)

diff --git a/tests/housekeeping/config.h b/tests/housekeeping/config.h @@ -0,0 +1,19 @@ +/* Copyright 2024 leep-frog + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include "test_common.h" diff --git a/tests/housekeeping/test.mk b/tests/housekeeping/test.mk @@ -0,0 +1,18 @@ +# Copyright 2024 leep-frog +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# -------------------------------------------------------------------------------- +# Keep this file, even if it is empty, as a marker that this folder contains tests +# -------------------------------------------------------------------------------- diff --git a/tests/housekeeping/test_housekeeping.cpp b/tests/housekeeping/test_housekeeping.cpp @@ -0,0 +1,68 @@ +/* Copyright 2024 leep-frog + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "keyboard_report_util.hpp" +#include "keycode.h" +#include "test_common.hpp" +#include "action_tapping.h" +#include "test_keymap_key.hpp" + +using testing::_; + +class HousekeepingMock { + public: + virtual ~HousekeepingMock() {} + + // mock methods + MOCK_METHOD0(housekeeping_task_kb, void(void)); + MOCK_METHOD0(housekeeping_task_user, void(void)); +}; + +class Housekeeping : public TestFixture { + public: + Housekeeping() { + _housekeepingMock.reset(new ::testing::NiceMock<HousekeepingMock>()); + } + virtual ~Housekeeping() { + _housekeepingMock.reset(); + } + + static std::unique_ptr<HousekeepingMock> _housekeepingMock; +}; + +std::unique_ptr<HousekeepingMock> Housekeeping::_housekeepingMock; + +extern "C" { +void housekeeping_task_kb(void) { + if (Housekeeping::_housekeepingMock) { + Housekeeping::_housekeepingMock->housekeeping_task_kb(); + } +} + +void housekeeping_task_user(void) { + if (Housekeeping::_housekeepingMock) { + Housekeeping::_housekeepingMock->housekeeping_task_user(); + } +} +} + +TEST_F(Housekeeping, Works) { + TestDriver driver; + + EXPECT_CALL(*_housekeepingMock, housekeeping_task_kb()).Times(1); + EXPECT_CALL(*_housekeepingMock, housekeeping_task_user()).Times(1); + run_one_scan_loop(); +} diff --git a/tests/test_common/test_fixture.cpp b/tests/test_common/test_fixture.cpp @@ -58,7 +58,8 @@ void TestFixture::TearDownTestCase() {} TestFixture::TestFixture() { m_this = this; timer_clear(); - test_logger.info() << "tapping term is " << +GET_TAPPING_TERM(KC_TRANSPARENT, &(keyrecord_t){}) << "ms" << std::endl; + keyrecord_t empty_keyrecord = {0}; + test_logger.info() << "tapping term is " << +GET_TAPPING_TERM(KC_TRANSPARENT, &empty_keyrecord) << "ms" << std::endl; } TestFixture::~TestFixture() { @@ -175,6 +176,7 @@ void TestFixture::idle_for(unsigned time) { test_logger.trace() << +time << " keyboard task " << (time > 1 ? "loops" : "loop") << std::endl; for (unsigned i = 0; i < time; i++) { keyboard_task(); + housekeeping_task(); advance_time(1); } }