#include "IMcuManager.h" #include "Log.h" #include "IHal.h" #include "LinuxApiTestForMcu.h" #include "LinuxApiMock.h" #include #include #include namespace IMcuManagerTest2 { class IHalMock : public IHal { public: IHalMock() = default; ~IHalMock() = default; MOCK_METHOD0(GetMcuDeviceInformation, const McuDeviceInformation(void)); }; // ../out/test/bin/McuManagerTest --gtest_filter=IMcuManagerTest2.Demo TEST(IMcuManagerTest2, Demo) { InitLog(LOG_EASYLOGGING, nullptr); std::shared_ptr hal = std::make_shared(); EXPECT_CALL(*(std::dynamic_pointer_cast(hal)).get(), GetMcuDeviceInformation()) .Times(1) .WillRepeatedly(::testing::DoAll(::testing::Return(gMcuInfoMock))); IHal::GetInstance(&hal); std::shared_ptr linuxApiMock; linuxApiMock = std::make_shared(); std::shared_ptr tmp = linuxApiMock; LinuxApiMock::GetInstance(&tmp); LinuxApiTest::DefaultApiInit(linuxApiMock); LinuxApiTestForMcu::LinuxApiInit(linuxApiMock); CreateMcuManager(); IMcuManager::GetInstance()->Init(); std::shared_ptr mcuDevice = std::make_shared(); IMcuManager::GetInstance()->GetMcuDevice(mcuDevice); unsigned char changedStartupMode = mcuDevice->GetStartupMode(); LogInfo("Get startup mode = %d\n", changedStartupMode); // std::this_thread::sleep_for(std::chrono::milliseconds(100)); LinuxApiTestForMcu::Test(linuxApiMock); std::this_thread::sleep_for(std::chrono::milliseconds(100)); IMcuManager::GetInstance()->UnInit(); std::shared_ptr tmpLinux = std::make_shared(); LinuxApiMock::GetInstance(&tmpLinux); linuxApiMock.reset(); UnInitLog(); } }