/* * 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 "AppManagerTestTool.h" #include "AppManagerMakePtrTest.h" #include "AppManagerMock.h" #include "AppMonitorMock.h" #include "ILog.h" #include "ServersMock.h" constexpr int ONLY_BE_CALLED_ONCE = 1; void AppManagerTestTool::Init(void) { ServersMock::GetInstance()->Init(); mAppManagerMock = std::make_shared(); AppManagerMockInit(mAppManagerMock); std::shared_ptr mock = std::dynamic_pointer_cast(mAppManagerMock); OverrideAppManagerMakePtrObject(mock); } void AppManagerTestTool::UnInit(void) { ServersMock::GetInstance()->UnInit(); mAppManagerMock.reset(); mAppMonitorMock.reset(); CancelOverrideAppManagerMakePtrObject(); } void AppManagerTestTool::MockGetProductInfo(void) { std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); if (mock) { EXPECT_CALL(*mock.get(), GetProductInfoTrace(_)) .Times(ONLY_BE_CALLED_ONCE) .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); } ServersMock::GetInstance()->MockGetProductInfo(); } void AppManagerTestTool::MockGetDeviceAttr(void) { std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); if (mock) { EXPECT_CALL(*mock.get(), GetDeviceAttrTrace(_)) .Times(ONLY_BE_CALLED_ONCE) .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); } ServersMock::GetInstance()->MockGetDeviceAttr(); } void AppManagerTestTool::MockGetMediaInfo(void) { std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); if (mock) { EXPECT_CALL(*mock.get(), GetMediaInfoTrace(_)) .Times(ONLY_BE_CALLED_ONCE) .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); } ServersMock::GetInstance()->MockGetMediaInfo(); } void AppManagerTestTool::MockGetSdCardInfo(void) { std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); if (mock) { EXPECT_CALL(*mock.get(), GetSdCardInfoTrace(_)) .Times(ONLY_BE_CALLED_ONCE) .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); } ServersMock::GetInstance()->MockGetSdCardInfo(); } void AppManagerTestTool::MockGetBatteryInfo(void) { std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); if (mock) { EXPECT_CALL(*mock.get(), GetBatteryInfoTrace(_)) .Times(ONLY_BE_CALLED_ONCE) .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); } ServersMock::GetInstance()->MockGetBatteryInfo(); } void AppManagerTestTool::MockSetDateTime(void) { std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); if (mock) { EXPECT_CALL(*mock.get(), SetDateTimeTrace(_)) .Times(ONLY_BE_CALLED_ONCE) .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); } ServersMock::GetInstance()->MockSetDateTime(); } void AppManagerTestTool::MockSetTimeZone(void) { std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); if (mock) { EXPECT_CALL(*mock.get(), SetTimeZoneTrace(_)) .Times(ONLY_BE_CALLED_ONCE) .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); } ServersMock::GetInstance()->MockSetTimeZone(); } void AppManagerTestTool::MockUploadFiles(void) { std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); if (mock) { EXPECT_CALL(*mock.get(), UploadFileTrace(_)) .Times(ONLY_BE_CALLED_ONCE) .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); } ServersMock::GetInstance()->MockUploadFiles(); } void AppManagerTestTool::AppManagerMockInit(std::shared_ptr &vMock) { std::shared_ptr mock = std::dynamic_pointer_cast(vMock); if (!mock) { LogError("vMock error.\n"); return; } auto getAppMonitor = [=](std::shared_ptr &monitor) { LogInfo("mAppMonitorMock get.\n"); // mAppMonitorMock = std::dynamic_pointer_cast(monitor); mAppMonitorMock = monitor; AppManagerTestTool::AppMonitorInit(mAppMonitorMock); }; EXPECT_CALL(*mock.get(), SetAppMonitorTrace(_)) .Times(ONLY_BE_CALLED_ONCE) .WillOnce(DoAll(WithArgs<0>(Invoke(getAppMonitor)), Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); } std::shared_ptr AppManagerTestTool::MakeMonitorMock(void) { class Monitor : public AppMonitorMock, public AppMonitorTest { public: Monitor() = default; virtual ~Monitor() = default; }; std::shared_ptr monitor = std::make_shared(); // auto result = std::dynamic_pointer_cast(monitor); return monitor; } void AppManagerTestTool::AppMonitorInit(std::shared_ptr &vMock) { std::shared_ptr mock = std::dynamic_pointer_cast(vMock); if (mock) { EXPECT_CALL(*mock.get(), GetProductInfoTrace(_)) .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); EXPECT_CALL(*mock.get(), GetDeviceAttrTrace(_)) .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); EXPECT_CALL(*mock.get(), GetMediaInfoTrace(_)) .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); EXPECT_CALL(*mock.get(), GetSdCardInfoTrace(_)) .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); EXPECT_CALL(*mock.get(), GetBatteryInfoTrace(_)) .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); EXPECT_CALL(*mock.get(), SetDateTimeTrace(_)) .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); EXPECT_CALL(*mock.get(), UploadFileTrace(_)) .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); } }