From 9fe836864ef16d3440bdd5bc23caed27b2b7a949 Mon Sep 17 00:00:00 2001 From: Fancy code <258828110.@qq.com> Date: Sat, 17 Feb 2024 21:24:12 -0800 Subject: [PATCH] Improve:Hal test tool. --- test/hal/tool/include/HalTestTool.h | 3 ++ test/hal/tool/src/HalTestTool.cpp | 29 +++++++++++++++++-- .../DeviceManager/src/DeviceManager_Test.cpp | 2 ++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/test/hal/tool/include/HalTestTool.h b/test/hal/tool/include/HalTestTool.h index 4f73a3f..c3466cd 100644 --- a/test/hal/tool/include/HalTestTool.h +++ b/test/hal/tool/include/HalTestTool.h @@ -100,6 +100,9 @@ public: bool SetKeyClick(const unsigned int &pressingTimeMs = 200); MOCK_METHOD3(KeyEventTriggerTrace, StatusCode(const std::string &, const KeyEvent &, const unsigned int &)); +private: + void KeyEventHappendOnce(std::shared_ptr &mock, const unsigned int &pressingTimeMs); + private: std::mutex mMutex; }; diff --git a/test/hal/tool/src/HalTestTool.cpp b/test/hal/tool/src/HalTestTool.cpp index ddd9a6f..e24ea87 100644 --- a/test/hal/tool/src/HalTestTool.cpp +++ b/test/hal/tool/src/HalTestTool.cpp @@ -82,6 +82,7 @@ bool KeyControlMock::SetKeyClick(const unsigned int &pressingTimeMs) { if (mMutex.try_lock()) { auto keyClickThread = [=](std::shared_ptr key) { + KeyEventHappendOnce(key, pressingTimeMs); key->KeyHalEventTrigger(KeyHalEvent::PRESSING); std::this_thread::sleep_for(std::chrono::milliseconds(pressingTimeMs)); key->KeyHalEventTrigger(KeyHalEvent::NOT_PRESSING); @@ -96,6 +97,26 @@ bool KeyControlMock::SetKeyClick(const unsigned int &pressingTimeMs) LogWarning("SetKeyClick failed, becase key was lock.\n"); return false; } +void KeyControlMock::KeyEventHappendOnce(std::shared_ptr &mock, const unsigned int &pressingTimeMs) +{ + EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(_, _, _)) + .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); + constexpr int CLICK_EVENT_HAPPENED_ONLY_ONCE = 1; + constexpr int HOLD_UP_EVENT_HAPPENED_ONLY_ONCE = 1; + if (KEY_ACTION_SHORT_CLICK <= pressingTimeMs && pressingTimeMs < KEY_ACTION_HOLD_DWON) { + EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(mock->GetKeyName(), KeyEvent::SHORT_CLICK, _)) + .Times(CLICK_EVENT_HAPPENED_ONLY_ONCE) + .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); + } + if (KEY_ACTION_HOLD_DWON <= pressingTimeMs) { + EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(mock->GetKeyName(), KeyEvent::HOLD_DOWN, _)) + .Times(AtLeast(1)) + .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); + EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(mock->GetKeyName(), KeyEvent::HOLD_UP, _)) + .Times(HOLD_UP_EVENT_HAPPENED_ONLY_ONCE) + .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); + } +} void HalTestTool::Init(void) { mHalMock = std::make_shared(); @@ -129,11 +150,13 @@ void HalTestTool::SetKeyClick(const std::string &keyName, const unsigned int &pr return; } if (key->SetKeyClick(pressingTimeMs)) { - KeyEventHappendOnce(key, pressingTimeMs); + // KeyEventHappendOnce(key, pressingTimeMs); } } void HalTestTool::KeyEventHappendOnce(std::shared_ptr &mock, const unsigned int &pressingTimeMs) { + EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(_, _, _)) + .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); constexpr int CLICK_EVENT_HAPPENED_ONLY_ONCE = 1; if (KEY_ACTION_SHORT_CLICK <= pressingTimeMs && pressingTimeMs < KEY_ACTION_HOLD_DWON) { EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(mock->GetKeyName(), KeyEvent::SHORT_CLICK, _)) @@ -182,8 +205,8 @@ void HalTestTool::InitAllKeysMock(std::map } void HalTestTool::InitKeysMock(std::shared_ptr &mock) { - EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(_, _, _)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); + constexpr int KEY_SHOULD_NOT_TRIGGER_WHEN_NOBODY_SET_KEY_RESULT = 0; + EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(_, _, _)).Times(KEY_SHOULD_NOT_TRIGGER_WHEN_NOBODY_SET_KEY_RESULT); } void HalTestTool::HalMockInit(std::shared_ptr &mock) { diff --git a/test/middleware/DeviceManager/src/DeviceManager_Test.cpp b/test/middleware/DeviceManager/src/DeviceManager_Test.cpp index 46d178d..12dd21c 100644 --- a/test/middleware/DeviceManager/src/DeviceManager_Test.cpp +++ b/test/middleware/DeviceManager/src/DeviceManager_Test.cpp @@ -111,6 +111,8 @@ TEST_F(DeviceManagerTest, INTEGRATION_DeviceManager_EXAMPLE_AUTO_SetKeyMonitor) IDeviceManager::GetInstance()->SetAllKeysMonitor(monitor); SetKeyClick(KEY_TEST, 1000); // Simulate pressing a button. std::this_thread::sleep_for(std::chrono::milliseconds(2000)); + SetKeyClick(KEY_TEST, 1000); // Simulate pressing a button. + std::this_thread::sleep_for(std::chrono::milliseconds(2000)); IDeviceManager::GetInstance()->UnInit(); } } // namespace DeviceManagerTest \ No newline at end of file