1112 lines
47 KiB
C++
1112 lines
47 KiB
C++
/*
|
|
* Copyright (c) 2023 Fancy Code.
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
#include "McuAskBase.h"
|
|
#include "McuAskBaseTestTool.h"
|
|
#include "McuManagerMockTest.h"
|
|
#include <thread>
|
|
namespace McuManager_Mock_Test
|
|
{
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_EXAMPLE_GetIpcMission
|
|
/**
|
|
* @brief Construct a new test f object
|
|
* This test is an example that demonstrates how to obtain IpcMission data and add the business code after obtaining the
|
|
* data in the abstract interface.
|
|
*/
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_EXAMPLE_GetIpcMission)
|
|
{
|
|
/**
|
|
* @brief The user needs to derive a subclass of McuAskBase and add the business code after obtaining data in the
|
|
* abstract interface.
|
|
*/
|
|
class McuAskTest : public McuAsk<IpcMission>, public McuAskBase
|
|
{
|
|
public:
|
|
McuAskTest() : McuAskBase(McuAskBlock::BLOCK, McuAskReply::NEED_REPLY)
|
|
{
|
|
} // using McuAskBlock::BLOCK
|
|
virtual ~McuAskTest() = default;
|
|
void ReplyFinished(const bool result) override
|
|
{
|
|
McuAskBase::ReplyFinished(result);
|
|
if (result) {
|
|
LogInfo("Ask data succeed, mDataReply = %d.\n", static_cast<int>(mDataReply));
|
|
// Do something here.
|
|
}
|
|
else {
|
|
LogError("Ask data falied.\n");
|
|
}
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
LogInfo("GetIpcMission will block here.\n");
|
|
IMcuManager::GetInstance()->GetIpcMission(ask);
|
|
LogInfo("GetIpcMission finished.\n");
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_EXAMPLE_GetIpcMission2
|
|
/**
|
|
* @brief Construct a new test f object
|
|
* This test is an example that demonstrates how to obtain IpcMission data and add the business code after obtaining the
|
|
* data in the abstract interface.
|
|
*/
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_EXAMPLE_GetIpcMission2)
|
|
{
|
|
/**
|
|
* @brief The user needs to derive a subclass of McuAskBase and add the business code after obtaining data in the
|
|
* abstract interface.
|
|
*/
|
|
class McuAskTest : public McuAsk<IpcMission>, public McuAskBase
|
|
{
|
|
public:
|
|
McuAskTest() : McuAskBase(McuAskBlock::NOT_BLOCK, McuAskReply::NEED_REPLY)
|
|
{
|
|
} // using McuAskBlock::NOT_BLOCK
|
|
virtual ~McuAskTest() = default;
|
|
void ReplyFinished(const bool result) override
|
|
{
|
|
McuAskBase::ReplyFinished(result);
|
|
if (result) {
|
|
LogInfo("Ask data succeed, mDataReply = %d.\n", static_cast<int>(mDataReply));
|
|
// Do something here.
|
|
}
|
|
else {
|
|
LogError("Ask data falied.\n");
|
|
}
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
LogInfo("GetIpcMission will not block here.\n");
|
|
IMcuManager::GetInstance()->GetIpcMission(ask);
|
|
LogInfo("GetIpcMission finished.\n");
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_EXAMPLE_OtherSideSendIpcMission
|
|
/**
|
|
* @brief Construct a new test f object
|
|
* This example demonstrates how to use a monitor to capture event information sent by an MCU. You must assign a value
|
|
* to the processing result (mDataReply member) and call the ReplyFinished function to complete the entire process.
|
|
*/
|
|
constexpr unsigned int TEST_SERIAL_NUMBER = 2;
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_EXAMPLE_OtherSideSendIpcMission)
|
|
{
|
|
class MonitorTest : public VMcuMonitor
|
|
{
|
|
public:
|
|
MonitorTest() = default;
|
|
virtual ~MonitorTest() = default;
|
|
void RecvIpcMissionEvent(std::shared_ptr<VMcuRecv> &recv, const IpcMission &mission) override
|
|
{
|
|
LogInfo("RecvIpcMissionEvent\n");
|
|
// std::shared_ptr<McuAsk<ASK_RESULT>> ask = std::dynamic_pointer_cast<McuAsk<ASK_RESULT>>(recv);
|
|
// ask->mDataReply = ASK_RESULT::SUCCEED;
|
|
recv->ReplyFinished(true);
|
|
// EXPECT_EQ(TEST_SERIAL_NUMBER, recv->mSerialNumber);
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
MockOtherSideAskIpcMission(mLinuxTest, TEST_SERIAL_NUMBER);
|
|
std::shared_ptr<VMcuMonitor> monitor = std::make_shared<MonitorTest>();
|
|
IMcuManager::GetInstance()->SetMcuMonitor(monitor);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_EXAMPLE_OtherSideSendHeartBeat
|
|
/**
|
|
* @brief Construct a new test f object
|
|
* This example demonstrates how to use a monitor to capture event information sent by an MCU. You must assign a value
|
|
* to the processing result (mDataReply member) and call the ReplyFinished function to complete the entire process.
|
|
*/
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_EXAMPLE_OtherSideSendHeartBeat)
|
|
{
|
|
class MonitorTest : public VMcuMonitor
|
|
{
|
|
public:
|
|
MonitorTest() = default;
|
|
virtual ~MonitorTest() = default;
|
|
void RecvMcuHeartBeatEvent(std::shared_ptr<VMcuRecv> &recv) override
|
|
{
|
|
LogInfo("RecvMcuHeartBeatEvent\n");
|
|
// std::shared_ptr<McuAsk<ASK_RESULT>> ask = std::dynamic_pointer_cast<McuAsk<ASK_RESULT>>(recv);
|
|
// ask->mDataReply = ASK_RESULT::SUCCEED;
|
|
recv->ReplyFinished(true);
|
|
// EXPECT_EQ(TEST_SERIAL_NUMBER, recv->mSerialNumber);
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
MockOtherSideAskHeartBeat(mLinuxTest, TEST_SERIAL_NUMBER);
|
|
std::shared_ptr<VMcuMonitor> monitor = std::make_shared<MonitorTest>();
|
|
IMcuManager::GetInstance()->SetMcuMonitor(monitor);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(3000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_EXAMPLE_CutOffPowerSupply
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_EXAMPLE_CutOffPowerSupply)
|
|
{
|
|
class McuAskTest : public McuAskBase
|
|
{
|
|
public:
|
|
McuAskTest() : McuAskBase(McuAskBlock::UNRELATED, McuAskReply::NEED_NOT_REPLY)
|
|
{
|
|
} // using McuAskReply::NEED_NOT_REPLY
|
|
virtual ~McuAskTest() = default;
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
StatusCode code = IMcuManager::GetInstance()->CutOffPowerSupply(ask);
|
|
if (IsCodeOK(code) == true) {
|
|
LogInfo("Write data to mcu succeed.\n");
|
|
}
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_EXAMPLE_FeedWatchDog
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_EXAMPLE_FeedWatchDog)
|
|
{
|
|
class McuAskTest : public McuAskBase
|
|
{
|
|
public:
|
|
McuAskTest() : McuAskBase(McuAskBlock::UNRELATED, McuAskReply::NEED_NOT_REPLY)
|
|
{
|
|
} // using McuAskReply::NEED_NOT_REPLY
|
|
virtual ~McuAskTest() = default;
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
StatusCode code = IMcuManager::GetInstance()->FeedWatchDog(ask);
|
|
if (IsCodeOK(code) == true) {
|
|
LogInfo("Write data to mcu succeed.\n");
|
|
}
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_EXAMPLE_SetFeedingCycleForWatchDog
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_EXAMPLE_SetFeedingCycleForWatchDog)
|
|
{
|
|
class McuAskTest : public McuAsk<ASK_RESULT>, public McuAskBase
|
|
{
|
|
public:
|
|
McuAskTest() : McuAskBase(McuAskBlock::BLOCK, McuAskReply::NEED_REPLY)
|
|
{
|
|
} // using McuAskBlock::BLOCK
|
|
virtual ~McuAskTest() = default;
|
|
void ReplyFinished(const bool result) override
|
|
{
|
|
McuAskBase::ReplyFinished(result);
|
|
if (result) {
|
|
LogInfo("Ask data succeed, mDataReply = %d.\n", static_cast<int>(mDataReply));
|
|
// Do something here.
|
|
}
|
|
else {
|
|
LogError("Ask data falied.\n");
|
|
}
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
StatusCode code = IMcuManager::GetInstance()->SetFeedingCycleForWatchDog(ask, 0, 0, 0);
|
|
if (IsCodeOK(code) == true) {
|
|
LogInfo("Write data to mcu succeed.\n");
|
|
}
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_EXAMPLE_SetDateTime
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_EXAMPLE_SetDateTime)
|
|
{
|
|
/**
|
|
* @brief The user needs to derive a subclass of McuAskBase and add the business code after obtaining data in the
|
|
* abstract interface.
|
|
*/
|
|
class McuAskTest : public McuAsk<ASK_RESULT>, public McuAskBase
|
|
{
|
|
public:
|
|
McuAskTest() : McuAskBase(McuAskBlock::NOT_BLOCK, McuAskReply::NEED_REPLY)
|
|
{
|
|
} // using McuAskBlock::NOT_BLOCK
|
|
virtual ~McuAskTest() = default;
|
|
void ReplyFinished(const bool result) override
|
|
{
|
|
McuAskBase::ReplyFinished(result);
|
|
if (result) {
|
|
LogInfo("Ask data succeed, mDataReply = %d.\n", static_cast<int>(mDataReply));
|
|
// Do something here.
|
|
}
|
|
else {
|
|
LogError("Ask data falied.\n");
|
|
}
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
McuAskDateTime value(2014, 1, 15, 0, 0, 0);
|
|
IMcuManager::GetInstance()->SetDateTime(ask, value);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_EXAMPLE_SetPirSensitivity
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_EXAMPLE_SetPirSensitivity)
|
|
{
|
|
/**
|
|
* @brief The user needs to derive a subclass of McuAskBase and add the business code after obtaining data in the
|
|
* abstract interface.
|
|
*/
|
|
class McuAskTest : public McuAsk<ASK_RESULT>, public McuAskBase
|
|
{
|
|
public:
|
|
McuAskTest() : McuAskBase(McuAskBlock::NOT_BLOCK, McuAskReply::NEED_REPLY)
|
|
{
|
|
} // using McuAskBlock::NOT_BLOCK
|
|
virtual ~McuAskTest() = default;
|
|
void ReplyFinished(const bool result) override
|
|
{
|
|
McuAskBase::ReplyFinished(result);
|
|
if (result) {
|
|
LogInfo("Ask data succeed, mDataReply = %d.\n", static_cast<int>(mDataReply));
|
|
// Do something here.
|
|
}
|
|
else {
|
|
LogError("Ask data falied.\n");
|
|
}
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
IMcuManager::GetInstance()->SetPirSensitivity(ask, 9);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_EXAMPLE_ContorlInfraredLight
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_EXAMPLE_ContorlInfraredLight)
|
|
{
|
|
/**
|
|
* @brief The user needs to derive a subclass of McuAskBase and add the business code after obtaining data in the
|
|
* abstract interface.
|
|
*/
|
|
class McuAskTest : public McuAsk<ASK_RESULT>, public McuAskBase
|
|
{
|
|
public:
|
|
McuAskTest() : McuAskBase(McuAskBlock::NOT_BLOCK, McuAskReply::NEED_REPLY)
|
|
{
|
|
} // using McuAskBlock::NOT_BLOCK
|
|
virtual ~McuAskTest() = default;
|
|
void ReplyFinished(const bool result) override
|
|
{
|
|
McuAskBase::ReplyFinished(result);
|
|
if (result) {
|
|
LogInfo("Ask data succeed, mDataReply = %d.\n", static_cast<int>(mDataReply));
|
|
// Do something here.
|
|
}
|
|
else {
|
|
LogError("Ask data falied.\n");
|
|
}
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
IMcuManager::GetInstance()->ContorlInfraredLight(ask, ControlLight::TRUN_ON);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_EXAMPLE_GetPhotosensitivityValue
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_EXAMPLE_GetPhotosensitivityValue)
|
|
{
|
|
/**
|
|
* @brief The user needs to derive a subclass of McuAskBase and add the business code after obtaining data in the
|
|
* abstract interface.
|
|
*/
|
|
class McuAskTest : public McuAsk<ASK_RESULT>, public McuAskBase
|
|
{
|
|
public:
|
|
McuAskTest() : McuAskBase(McuAskBlock::NOT_BLOCK, McuAskReply::NEED_REPLY)
|
|
{
|
|
} // using McuAskBlock::NOT_BLOCK
|
|
virtual ~McuAskTest() = default;
|
|
void ReplyFinished(const bool result) override
|
|
{
|
|
McuAskBase::ReplyFinished(result);
|
|
if (result) {
|
|
LogInfo("Ask data succeed, mDataReply = %d.\n", static_cast<int>(mDataReply));
|
|
// Do something here.
|
|
}
|
|
else {
|
|
LogError("Ask data falied.\n");
|
|
}
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
IMcuManager::GetInstance()->GetPhotosensitivityValue(ask);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_GetIpcMission
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_GetIpcMission)
|
|
{
|
|
class McuAskTest : public McuAsk<IpcMission>, public McuAskBaseTestTool
|
|
{
|
|
public:
|
|
McuAskTest() : McuAskBaseTestTool(McuAskBlock::BLOCK, McuAskReply::NEED_REPLY)
|
|
{
|
|
}
|
|
virtual ~McuAskTest() = default;
|
|
void ReplyFinished(const bool result) override
|
|
{
|
|
McuAskBaseTestTool::ReplyFinished(result);
|
|
if (result) {
|
|
LogInfo("Ask data succeed, mDataReply = %d.\n", static_cast<int>(mDataReply));
|
|
// Do something here.
|
|
}
|
|
else {
|
|
LogError("Ask data falied.\n");
|
|
}
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
std::shared_ptr<McuAskBaseTestTool> testTool = std::dynamic_pointer_cast<McuAskBaseTestTool>(ask);
|
|
testTool->McuAskDefaultFeatures(testTool);
|
|
IMcuManager::GetInstance()->GetIpcMission(ask);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
|
EXPECT_EQ(CheckAskExist(ask), false); // Ensure that the request has been processed and deleted.
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
/**
|
|
* @brief This use case demonstrates that only the serial port was opened and written successfully, and no data was
|
|
* read.
|
|
* Run Test:
|
|
* ../output_files/test/bin/McuManagerTest
|
|
* --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_GetIpcMission_1
|
|
*/
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_GetIpcMission_1)
|
|
{
|
|
class McuAskTest : public McuAsk<IpcMission>, public McuAskBaseTestTool
|
|
{
|
|
public:
|
|
McuAskTest() : McuAskBaseTestTool(McuAskBlock::BLOCK, McuAskReply::NEED_REPLY)
|
|
{
|
|
}
|
|
virtual ~McuAskTest() = default;
|
|
void ReplyFinished(const bool result) override
|
|
{
|
|
McuAskBaseTestTool::ReplyFinished(result);
|
|
if (result) {
|
|
LogInfo("Ask data succeed, mDataReply = %d.\n", static_cast<int>(mDataReply));
|
|
// Do something here.
|
|
}
|
|
else {
|
|
LogError("Ask data falied.\n");
|
|
}
|
|
}
|
|
};
|
|
McuManagerTestTool::MockMcuDeviceOpenSuccessButReadNothing(mLinuxTest);
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
std::shared_ptr<McuAskBaseTestTool> testTool = std::dynamic_pointer_cast<McuAskBaseTestTool>(ask);
|
|
testTool->McuAskDefaultFeatures(testTool);
|
|
IMcuManager::GetInstance()->GetIpcMission(ask);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
|
EXPECT_EQ(CheckAskExist(ask), false); // Ensure that the request has been processed and deleted.
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_GetIpcMission
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_GetIpcMission2)
|
|
{
|
|
class McuAskTest : public McuAsk<IpcMission>, public McuAskBaseTestTool
|
|
{
|
|
public:
|
|
McuAskTest() : McuAskBaseTestTool(McuAskBlock::NOT_BLOCK, McuAskReply::NEED_REPLY)
|
|
{
|
|
}
|
|
virtual ~McuAskTest() = default;
|
|
void ReplyFinished(const bool result) override
|
|
{
|
|
McuAskBaseTestTool::ReplyFinished(result);
|
|
if (result) {
|
|
LogInfo("Ask data succeed, mDataReply = %d.\n", static_cast<int>(mDataReply));
|
|
// Do something here.
|
|
}
|
|
else {
|
|
LogError("Ask data falied.\n");
|
|
}
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
std::shared_ptr<McuAskBaseTestTool> testTool = std::dynamic_pointer_cast<McuAskBaseTestTool>(ask);
|
|
testTool->McuAskDefaultFeatures(testTool);
|
|
IMcuManager::GetInstance()->GetIpcMission(ask);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(3000));
|
|
EXPECT_EQ(CheckAskExist(ask), false); // Ensure that the request has been processed and deleted.
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_CutOffPowerSupply
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_CutOffPowerSupply)
|
|
{
|
|
class McuAskTest : public McuAskBaseTestTool
|
|
{
|
|
public:
|
|
McuAskTest()
|
|
: McuAskBaseTestTool(McuAskBlock::UNRELATED,
|
|
McuAskReply::NEED_NOT_REPLY) // using McuAskReply::NEED_NOT_REPLY
|
|
{
|
|
}
|
|
virtual ~McuAskTest() = default;
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
std::shared_ptr<McuAskBaseTestTool> testTool = std::dynamic_pointer_cast<McuAskBaseTestTool>(ask);
|
|
testTool->McuAskDefaultFeatures(testTool);
|
|
StatusCode code = IMcuManager::GetInstance()->CutOffPowerSupply(ask);
|
|
EXPECT_EQ(CheckAskExist(ask), false); // Ensure that the request has been processed and deleted.
|
|
EXPECT_EQ(code.mStatusCode, STATUS_CODE_OK); // STATUS_CODE_OK means write data to mcu succeed.
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_FeedWatchDog
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_FeedWatchDog)
|
|
{
|
|
class McuAskTest : public McuAskBaseTestTool
|
|
{
|
|
public:
|
|
McuAskTest()
|
|
: McuAskBaseTestTool(McuAskBlock::UNRELATED,
|
|
McuAskReply::NEED_NOT_REPLY) // using McuAskReply::NEED_NOT_REPLY
|
|
{
|
|
}
|
|
virtual ~McuAskTest() = default;
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
std::shared_ptr<McuAskBaseTestTool> testTool = std::dynamic_pointer_cast<McuAskBaseTestTool>(ask);
|
|
testTool->McuAskDefaultFeatures(testTool);
|
|
StatusCode code = IMcuManager::GetInstance()->FeedWatchDog(ask);
|
|
EXPECT_EQ(CheckAskExist(ask), false); // Ensure that the request has been processed and deleted.
|
|
EXPECT_EQ(code.mStatusCode, STATUS_CODE_OK); // STATUS_CODE_OK means write data to mcu succeed.
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_FeedWatchDogThread
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_FeedWatchDogThread)
|
|
{
|
|
IMcuManager::GetInstance()->Init();
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_SetFeedingCycleForWatchDog
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_SetFeedingCycleForWatchDog)
|
|
{
|
|
class McuAskTest : public McuAsk<ASK_RESULT>, public McuAskBaseTestTool
|
|
{
|
|
public:
|
|
McuAskTest() : McuAskBaseTestTool(McuAskBlock::BLOCK,
|
|
McuAskReply::NEED_REPLY) // using McuAskBlock::BLOCK,
|
|
{
|
|
}
|
|
virtual ~McuAskTest() = default;
|
|
void ReplyFinished(const bool result) override
|
|
{
|
|
McuAskBaseTestTool::ReplyFinished(result);
|
|
if (result) {
|
|
LogInfo("Ask data succeed, mDataReply = %d.\n", static_cast<int>(mDataReply));
|
|
}
|
|
else {
|
|
LogError("Ask data falied.\n");
|
|
}
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
std::shared_ptr<McuAskBaseTestTool> testTool = std::dynamic_pointer_cast<McuAskBaseTestTool>(ask);
|
|
testTool->McuAskDefaultFeatures(testTool);
|
|
StatusCode code = IMcuManager::GetInstance()->SetFeedingCycleForWatchDog(ask, 1, 1, 1);
|
|
EXPECT_EQ(code.mStatusCode, STATUS_CODE_OK); // STATUS_CODE_OK means write data to mcu succeed.
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
|
EXPECT_EQ(CheckAskExist(ask), false); // Ensure that the request has been processed and deleted.
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_SetFeedingCycleForWatchDog2
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_SetFeedingCycleForWatchDog2)
|
|
{
|
|
class McuAskTest : public McuAsk<ASK_RESULT>, public McuAskBaseTestTool
|
|
{
|
|
public:
|
|
McuAskTest()
|
|
: McuAskBaseTestTool(McuAskBlock::NOT_BLOCK,
|
|
McuAskReply::NEED_REPLY) // using McuAskBlock::NOT_BLOCK
|
|
{
|
|
}
|
|
virtual ~McuAskTest() = default;
|
|
void ReplyFinished(const bool result) override
|
|
{
|
|
McuAskBaseTestTool::ReplyFinished(result);
|
|
if (result) {
|
|
LogInfo("Ask data succeed, mDataReply = %d.\n", static_cast<int>(mDataReply));
|
|
// Do something here.
|
|
}
|
|
else {
|
|
LogError("Ask data falied.\n");
|
|
}
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
std::shared_ptr<McuAskBaseTestTool> testTool = std::dynamic_pointer_cast<McuAskBaseTestTool>(ask);
|
|
testTool->McuAskDefaultFeatures(testTool);
|
|
StatusCode code = IMcuManager::GetInstance()->SetFeedingCycleForWatchDog(ask, 1, 1, 1);
|
|
EXPECT_EQ(code.mStatusCode, STATUS_CODE_OK); // STATUS_CODE_OK means write data to mcu succeed.
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
EXPECT_EQ(CheckAskExist(ask), false); // Ensure that the request has been processed and deleted.
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_STRESS_MultiThreadWrite
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_STRESS_MultiThreadWrite)
|
|
{
|
|
class McuAskTest : public McuAsk<ASK_RESULT>, public McuAskBaseTestTool
|
|
{
|
|
public:
|
|
McuAskTest() : McuAskBaseTestTool(McuAskBlock::BLOCK,
|
|
McuAskReply::NEED_REPLY) // using McuAskBlock::NOT_BLOCK
|
|
{
|
|
}
|
|
virtual ~McuAskTest() = default;
|
|
void ReplyFinished(const bool result) override
|
|
{
|
|
McuAskBaseTestTool::ReplyFinished(result);
|
|
if (result) {
|
|
LogInfo("Ask ASK_RESULT succeed, mDataReply = %d.\n", static_cast<int>(mDataReply));
|
|
}
|
|
else {
|
|
LogError("Ask data falied.\n");
|
|
}
|
|
}
|
|
};
|
|
class McuAskTest2 : public McuAsk<IpcMission>, public McuAskBaseTestTool
|
|
{
|
|
public:
|
|
McuAskTest2() : McuAskBaseTestTool(McuAskBlock::BLOCK, McuAskReply::NEED_REPLY)
|
|
{
|
|
} // using McuAskBlock::NOT_BLOCK
|
|
virtual ~McuAskTest2() = default;
|
|
void ReplyFinished(const bool result) override
|
|
{
|
|
McuAskBaseTestTool::ReplyFinished(result);
|
|
if (result) {
|
|
LogInfo("Ask IpcMission succeed, mDataReply = %d.\n", static_cast<int>(mDataReply));
|
|
}
|
|
else {
|
|
LogError("Ask data falied.\n");
|
|
}
|
|
}
|
|
};
|
|
auto threadTest1 = [](McuManagerMockTest *test) {
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
std::shared_ptr<McuAskBaseTestTool> testTool = std::dynamic_pointer_cast<McuAskBaseTestTool>(ask);
|
|
testTool->McuAskDefaultFeatures(testTool);
|
|
StatusCode code = IMcuManager::GetInstance()->SetFeedingCycleForWatchDog(ask, 1, 1, 1);
|
|
EXPECT_EQ(code.mStatusCode, STATUS_CODE_OK); // STATUS_CODE_OK means write data to mcu succeed.
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
|
EXPECT_EQ(test->CheckAskExist(ask), false); // Ensure that the request has been processed and deleted.
|
|
};
|
|
auto threadTest2 = [](McuManagerMockTest *test) {
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest2>();
|
|
std::shared_ptr<McuAskBaseTestTool> testTool = std::dynamic_pointer_cast<McuAskBaseTestTool>(ask);
|
|
testTool->McuAskDefaultFeatures(testTool);
|
|
IMcuManager::GetInstance()->GetIpcMission(ask);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
|
EXPECT_EQ(test->CheckAskExist(ask), false); // Ensure that the request has been processed and deleted.
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::thread thread_1 = std::thread(threadTest1, this);
|
|
std::thread thread_2 = std::thread(threadTest2, this);
|
|
if (thread_1.joinable()) {
|
|
thread_1.join();
|
|
}
|
|
if (thread_2.joinable()) {
|
|
thread_2.join();
|
|
}
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_SetDataTime
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_SetDataTime)
|
|
{
|
|
class McuAskTest : public McuAsk<ASK_RESULT>, public McuAskBaseTestTool
|
|
{
|
|
public:
|
|
McuAskTest() : McuAskBaseTestTool(McuAskBlock::BLOCK,
|
|
McuAskReply::NEED_REPLY) // using McuAskBlock::NOT_BLOCK
|
|
{
|
|
}
|
|
virtual ~McuAskTest() = default;
|
|
void ReplyFinished(const bool result) override
|
|
{
|
|
McuAskBaseTestTool::ReplyFinished(result);
|
|
if (result) {
|
|
LogInfo("Ask data succeed, mDataReply = %d.\n", static_cast<int>(mDataReply));
|
|
// Do something here.
|
|
}
|
|
else {
|
|
LogError("Ask data falied.\n");
|
|
}
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
std::shared_ptr<McuAskBaseTestTool> testTool = std::dynamic_pointer_cast<McuAskBaseTestTool>(ask);
|
|
testTool->McuAskDefaultFeatures(testTool);
|
|
McuAskDateTime value(2014, 1, 15, 0, 0, 0);
|
|
StatusCode code = IMcuManager::GetInstance()->SetDateTime(ask, value);
|
|
EXPECT_EQ(code.mStatusCode, STATUS_CODE_OK); // STATUS_CODE_OK means write data to mcu succeed.
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
|
EXPECT_EQ(CheckAskExist(ask), false); // Ensure that the request has been processed and deleted.
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_SetDataTime2
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_SetDataTime2)
|
|
{
|
|
class McuAskTest : public McuAsk<ASK_RESULT>, public McuAskBaseTestTool
|
|
{
|
|
public:
|
|
McuAskTest()
|
|
: McuAskBaseTestTool(McuAskBlock::NOT_BLOCK,
|
|
McuAskReply::NEED_REPLY) // using McuAskBlock::NOT_BLOCK
|
|
{
|
|
}
|
|
virtual ~McuAskTest() = default;
|
|
void ReplyFinished(const bool result) override
|
|
{
|
|
McuAskBaseTestTool::ReplyFinished(result);
|
|
if (result) {
|
|
LogInfo("Ask data succeed, mDataReply = %d.\n", static_cast<int>(mDataReply));
|
|
}
|
|
else {
|
|
LogError("Ask data falied.\n");
|
|
}
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
std::shared_ptr<McuAskBaseTestTool> testTool = std::dynamic_pointer_cast<McuAskBaseTestTool>(ask);
|
|
testTool->McuAskDefaultFeatures(testTool);
|
|
McuAskDateTime value(2014, 1, 15, 0, 0, 0);
|
|
StatusCode code = IMcuManager::GetInstance()->SetDateTime(ask, value);
|
|
EXPECT_EQ(code.mStatusCode, STATUS_CODE_OK); // STATUS_CODE_OK means write data to mcu succeed.
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
EXPECT_EQ(CheckAskExist(ask), false); // Ensure that the request has been processed and deleted.
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_SetPirSensitivity
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_SetPirSensitivity)
|
|
{
|
|
class McuAskTest : public McuAsk<ASK_RESULT>, public McuAskBaseTestTool
|
|
{
|
|
public:
|
|
McuAskTest() : McuAskBaseTestTool(McuAskBlock::BLOCK,
|
|
McuAskReply::NEED_REPLY) // using McuAskBlock::NOT_BLOCK
|
|
{
|
|
}
|
|
virtual ~McuAskTest() = default;
|
|
void ReplyFinished(const bool result) override
|
|
{
|
|
McuAskBaseTestTool::ReplyFinished(result);
|
|
if (result) {
|
|
LogInfo("Ask data succeed, mDataReply = %d.\n", static_cast<int>(mDataReply));
|
|
// Do something here.
|
|
}
|
|
else {
|
|
LogError("Ask data falied.\n");
|
|
}
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
std::shared_ptr<McuAskBaseTestTool> testTool = std::dynamic_pointer_cast<McuAskBaseTestTool>(ask);
|
|
testTool->McuAskDefaultFeatures(testTool);
|
|
StatusCode code = IMcuManager::GetInstance()->SetPirSensitivity(ask, 1);
|
|
EXPECT_EQ(code.mStatusCode, STATUS_CODE_OK); // STATUS_CODE_OK means write data to mcu succeed.
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
|
EXPECT_EQ(CheckAskExist(ask), false); // Ensure that the request has been processed and deleted.
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_SetPirSensitivity2
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_SetPirSensitivity2)
|
|
{
|
|
class McuAskTest : public McuAsk<ASK_RESULT>, public McuAskBaseTestTool
|
|
{
|
|
public:
|
|
McuAskTest()
|
|
: McuAskBaseTestTool(McuAskBlock::NOT_BLOCK,
|
|
McuAskReply::NEED_REPLY) // using McuAskBlock::NOT_BLOCK
|
|
{
|
|
}
|
|
virtual ~McuAskTest() = default;
|
|
void ReplyFinished(const bool result) override
|
|
{
|
|
McuAskBaseTestTool::ReplyFinished(result);
|
|
if (result) {
|
|
LogInfo("Ask data succeed, mDataReply = %d.\n", static_cast<int>(mDataReply));
|
|
// Do something here.
|
|
}
|
|
else {
|
|
LogError("Ask data falied.\n");
|
|
}
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
std::shared_ptr<McuAskBaseTestTool> testTool = std::dynamic_pointer_cast<McuAskBaseTestTool>(ask);
|
|
testTool->McuAskDefaultFeatures(testTool);
|
|
StatusCode code = IMcuManager::GetInstance()->SetPirSensitivity(ask, 2);
|
|
EXPECT_EQ(code.mStatusCode, STATUS_CODE_OK); // STATUS_CODE_OK means write data to mcu succeed.
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
EXPECT_EQ(CheckAskExist(ask), false); // Ensure that the request has been processed and deleted.
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_GetIpcMissionFailed
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_GetIpcMissionFailed)
|
|
{
|
|
class McuAskTest : public McuAsk<IpcMission>, public McuAskBaseTestTool
|
|
{
|
|
public:
|
|
McuAskTest() : McuAskBaseTestTool(McuAskBlock::BLOCK, McuAskReply::NEED_REPLY)
|
|
{
|
|
}
|
|
virtual ~McuAskTest() = default;
|
|
void ReplyFinished(const bool result) override
|
|
{
|
|
McuAskBaseTestTool::ReplyFinished(result);
|
|
if (result) {
|
|
LogInfo("Ask data succeed, mDataReply = %d.\n", static_cast<int>(mDataReply));
|
|
}
|
|
else {
|
|
LogError("Ask data falied.\n");
|
|
}
|
|
}
|
|
};
|
|
McuManagerTestTool::MockMcuDeviceOpenFailed(mLinuxTest);
|
|
IMcuManager::GetInstance()->Init();
|
|
std::shared_ptr<VMcuAsk> ask = std::make_shared<McuAskTest>();
|
|
std::shared_ptr<McuAskBaseTestTool> testTool = std::dynamic_pointer_cast<McuAskBaseTestTool>(ask);
|
|
testTool->McuAskDoNothing(testTool);
|
|
testTool->NoNeedToBlocking(testTool);
|
|
IMcuManager::GetInstance()->GetIpcMission(ask);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
|
EXPECT_EQ(CheckAskExist(ask), false); // Ensure that the request has been processed and deleted.
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_OtherSideSendIpcMission
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_OtherSideSendIpcMission)
|
|
{
|
|
constexpr unsigned int TEST_SERIAL_NUMBER = 99;
|
|
class MonitorTest : public VMcuMonitor
|
|
{
|
|
public:
|
|
MonitorTest() = default;
|
|
virtual ~MonitorTest() = default;
|
|
void RecvIpcMissionEvent(std::shared_ptr<VMcuRecv> &recv, const IpcMission &mission) override
|
|
{
|
|
LogInfo("RecvIpcMissionEvent\n");
|
|
std::shared_ptr<McuRecv<unsigned char>> recvData = std::dynamic_pointer_cast<McuRecv<unsigned char>>(recv);
|
|
recv->ReplyFinished(true);
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
MockOtherSideAskIpcMission(mLinuxTest, TEST_SERIAL_NUMBER);
|
|
std::shared_ptr<VMcuMonitor> monitor = std::make_shared<MonitorTest>();
|
|
IMcuManager::GetInstance()->SetMcuMonitor(monitor);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
/**
|
|
* @brief Construct a new test f object
|
|
* This test case simulates the state machine receiving serial port data before it is fully started. At this point, the
|
|
* serial port data should be cached until the state machine starts and registers the serial port monitor, and reports
|
|
* the serial port data when registering the serial port monitor.
|
|
* Run: ../output_files/test/bin/McuManagerTest
|
|
* --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_OtherSideSendIpcMission2
|
|
*/
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_OtherSideSendIpcMission2)
|
|
{
|
|
constexpr unsigned int TEST_SERIAL_NUMBER = 99;
|
|
class MonitorTest : public VMcuMonitor
|
|
{
|
|
public:
|
|
MonitorTest() = default;
|
|
virtual ~MonitorTest() = default;
|
|
void RecvIpcMissionEvent(std::shared_ptr<VMcuRecv> &recv, const IpcMission &mission) override
|
|
{
|
|
LogInfo("RecvIpcMissionEvent\n");
|
|
std::shared_ptr<McuRecv<unsigned char>> recvData = std::dynamic_pointer_cast<McuRecv<unsigned char>>(recv);
|
|
recv->ReplyFinished(true);
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
MockOtherSideAskIpcMission(mLinuxTest, TEST_SERIAL_NUMBER);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
|
std::shared_ptr<VMcuMonitor> monitor = std::make_shared<MonitorTest>();
|
|
IMcuManager::GetInstance()->SetMcuMonitor(monitor);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_OtherSideGetIntervalStart
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_OtherSideGetIntervalStart)
|
|
{
|
|
constexpr unsigned int TEST_SERIAL_NUMBER = 99;
|
|
class MonitorTest : public VMcuMonitor
|
|
{
|
|
public:
|
|
MonitorTest() = default;
|
|
virtual ~MonitorTest() = default;
|
|
void RecvGetIntervalStartEvent(std::shared_ptr<VMcuRecv> &recv) override
|
|
{
|
|
LogInfo("RecvGetIntervalStartEvent\n");
|
|
std::shared_ptr<McuRecv<McuGetIntervalStart>> recvData =
|
|
std::dynamic_pointer_cast<McuRecv<McuGetIntervalStart>>(recv);
|
|
EXPECT_NE(recvData, nullptr) << "recvData is not McuGetIntervalStart.";
|
|
if (recvData) {
|
|
recvData->mDataRecvReply.mHour = 10;
|
|
recvData->mDataRecvReply.mMin = 10;
|
|
recvData->mDataRecvReply.mSecond = 10;
|
|
recv->ReplyFinished(true);
|
|
return;
|
|
}
|
|
recv->ReplyFinished(false);
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
MockOtherSideGetIntervalStart(mLinuxTest, TEST_SERIAL_NUMBER);
|
|
std::shared_ptr<VMcuMonitor> monitor = std::make_shared<MonitorTest>();
|
|
IMcuManager::GetInstance()->SetMcuMonitor(monitor);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
/**
|
|
* @brief Construct a new test f object
|
|
* This test case simulates the state machine receiving serial port data before it is fully started. At this point, the
|
|
* serial port data should be cached until the state machine starts and registers the serial port monitor, and reports
|
|
* the serial port data when registering the serial port monitor.
|
|
* Run: ../output_files/test/bin/McuManagerTest
|
|
* --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_OtherSideGetIntervalStart2
|
|
*/
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_OtherSideGetIntervalStart2)
|
|
{
|
|
constexpr unsigned int TEST_SERIAL_NUMBER = 99;
|
|
class MonitorTest : public VMcuMonitor
|
|
{
|
|
public:
|
|
MonitorTest() = default;
|
|
virtual ~MonitorTest() = default;
|
|
void RecvGetIntervalStartEvent(std::shared_ptr<VMcuRecv> &recv) override
|
|
{
|
|
LogInfo("RecvGetIntervalStartEvent\n");
|
|
std::shared_ptr<McuRecv<McuGetIntervalStart>> recvData =
|
|
std::dynamic_pointer_cast<McuRecv<McuGetIntervalStart>>(recv);
|
|
EXPECT_NE(recvData, nullptr) << "recvData is not McuGetIntervalStart.";
|
|
if (recvData) {
|
|
recvData->mDataRecvReply.mHour = 10;
|
|
recvData->mDataRecvReply.mMin = 10;
|
|
recvData->mDataRecvReply.mSecond = 10;
|
|
recv->ReplyFinished(true);
|
|
return;
|
|
}
|
|
recv->ReplyFinished(false);
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
MockOtherSideGetIntervalStart(mLinuxTest, TEST_SERIAL_NUMBER);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
|
std::shared_ptr<VMcuMonitor> monitor = std::make_shared<MonitorTest>();
|
|
IMcuManager::GetInstance()->SetMcuMonitor(monitor);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_OtherSideGetDateTime
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_OtherSideGetDateTime)
|
|
{
|
|
constexpr unsigned int TEST_SERIAL_NUMBER = 99;
|
|
class MonitorTest : public VMcuMonitor
|
|
{
|
|
public:
|
|
MonitorTest() = default;
|
|
virtual ~MonitorTest() = default;
|
|
void RecvGetDateTime(std::shared_ptr<VMcuRecv> &recv) override
|
|
{
|
|
LogInfo("RecvGetDateTime\n");
|
|
std::shared_ptr<McuRecv<McuReplyDateTime>> recvData =
|
|
std::dynamic_pointer_cast<McuRecv<McuReplyDateTime>>(recv);
|
|
EXPECT_NE(recvData, nullptr) << "recvData is not McuReplyDateTime.";
|
|
if (recvData) {
|
|
recvData->mDataRecvReply.mYear = 2024;
|
|
recvData->mDataRecvReply.mMon = 10;
|
|
recvData->mDataRecvReply.mDay = 10;
|
|
recvData->mDataRecvReply.mHour = 10;
|
|
recvData->mDataRecvReply.mMin = 10;
|
|
recvData->mDataRecvReply.mSecond = 10;
|
|
recv->ReplyFinished(true);
|
|
return;
|
|
}
|
|
recv->ReplyFinished(false);
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
MockOtherSideGetDateTime(mLinuxTest, TEST_SERIAL_NUMBER);
|
|
std::shared_ptr<VMcuMonitor> monitor = std::make_shared<MonitorTest>();
|
|
IMcuManager::GetInstance()->SetMcuMonitor(monitor);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
/**
|
|
* @brief Construct a new test f object
|
|
* This test case simulates the state machine receiving serial port data before it is fully started. At this point, the
|
|
* serial port data should be cached until the state machine starts and registers the serial port monitor, and reports
|
|
* the serial port data when registering the serial port monitor.
|
|
* Run: ../output_files/test/bin/McuManagerTest
|
|
* --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_OtherSideGetDateTime2
|
|
*/
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_OtherSideGetDateTime2)
|
|
{
|
|
constexpr unsigned int TEST_SERIAL_NUMBER = 99;
|
|
class MonitorTest : public VMcuMonitor
|
|
{
|
|
public:
|
|
MonitorTest() = default;
|
|
virtual ~MonitorTest() = default;
|
|
void RecvGetDateTime(std::shared_ptr<VMcuRecv> &recv) override
|
|
{
|
|
LogInfo("RecvGetDateTime\n");
|
|
std::shared_ptr<McuRecv<McuReplyDateTime>> recvData =
|
|
std::dynamic_pointer_cast<McuRecv<McuReplyDateTime>>(recv);
|
|
EXPECT_NE(recvData, nullptr) << "recvData is not McuReplyDateTime.";
|
|
if (recvData) {
|
|
recvData->mDataRecvReply.mYear = 2024;
|
|
recvData->mDataRecvReply.mMon = 10;
|
|
recvData->mDataRecvReply.mDay = 10;
|
|
recvData->mDataRecvReply.mHour = 10;
|
|
recvData->mDataRecvReply.mMin = 10;
|
|
recvData->mDataRecvReply.mSecond = 10;
|
|
recv->ReplyFinished(true);
|
|
return;
|
|
}
|
|
recv->ReplyFinished(false);
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
MockOtherSideGetDateTime(mLinuxTest, TEST_SERIAL_NUMBER);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
|
std::shared_ptr<VMcuMonitor> monitor = std::make_shared<MonitorTest>();
|
|
IMcuManager::GetInstance()->SetMcuMonitor(monitor);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
// ../output_files/test/bin/McuManagerTest
|
|
// --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_OtherSideGetPirSensitivity
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_OtherSideGetPirSensitivity)
|
|
{
|
|
constexpr unsigned int TEST_SERIAL_NUMBER = 99;
|
|
class MonitorTest : public VMcuMonitor
|
|
{
|
|
public:
|
|
MonitorTest() = default;
|
|
virtual ~MonitorTest() = default;
|
|
void RecvGetPirSensitivity(std::shared_ptr<VMcuRecv> &recv) override
|
|
{
|
|
LogInfo("RecvGetPirSensitivity\n");
|
|
std::shared_ptr<McuRecv<McuGetPirSensitivity>> recvData =
|
|
std::dynamic_pointer_cast<McuRecv<McuGetPirSensitivity>>(recv);
|
|
EXPECT_NE(recvData, nullptr) << "recvData is not McuGetPirSensitivity.";
|
|
if (recvData) {
|
|
recvData->mDataRecvReply.mSensitivity = 9;
|
|
recv->ReplyFinished(true);
|
|
return;
|
|
}
|
|
recv->ReplyFinished(false);
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
MockOtherSideGetPriSensitivity(mLinuxTest, TEST_SERIAL_NUMBER);
|
|
std::shared_ptr<VMcuMonitor> monitor = std::make_shared<MonitorTest>();
|
|
IMcuManager::GetInstance()->SetMcuMonitor(monitor);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
/**
|
|
* @brief Construct a new test f object
|
|
* This test case simulates the state machine receiving serial port data before it is fully started. At this point, the
|
|
* serial port data should be cached until the state machine starts and registers the serial port monitor, and reports
|
|
* the serial port data when registering the serial port monitor.
|
|
* Run: ../output_files/test/bin/McuManagerTest
|
|
* --gtest_filter=McuManagerMockTest.HS_INTEGRATION_McuManager_AUTO_OtherSideGetPirSensitivity2
|
|
*/
|
|
TEST_F(McuManagerMockTest, HS_INTEGRATION_McuManager_AUTO_OtherSideGetPirSensitivity2)
|
|
{
|
|
constexpr unsigned int TEST_SERIAL_NUMBER = 99;
|
|
class MonitorTest : public VMcuMonitor
|
|
{
|
|
public:
|
|
MonitorTest() = default;
|
|
virtual ~MonitorTest() = default;
|
|
void RecvGetPirSensitivity(std::shared_ptr<VMcuRecv> &recv) override
|
|
{
|
|
LogInfo("RecvGetPirSensitivity\n");
|
|
std::shared_ptr<McuRecv<McuGetPirSensitivity>> recvData =
|
|
std::dynamic_pointer_cast<McuRecv<McuGetPirSensitivity>>(recv);
|
|
EXPECT_NE(recvData, nullptr) << "recvData is not McuGetPirSensitivity.";
|
|
if (recvData) {
|
|
recvData->mDataRecvReply.mSensitivity = 9;
|
|
recv->ReplyFinished(true);
|
|
return;
|
|
}
|
|
recv->ReplyFinished(false);
|
|
}
|
|
};
|
|
IMcuManager::GetInstance()->Init();
|
|
MockOtherSideGetPriSensitivity(mLinuxTest, TEST_SERIAL_NUMBER);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
|
std::shared_ptr<VMcuMonitor> monitor = std::make_shared<MonitorTest>();
|
|
IMcuManager::GetInstance()->SetMcuMonitor(monitor);
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
|
IMcuManager::GetInstance()->UnInit();
|
|
}
|
|
} // namespace McuManager_Mock_Test
|