/* * Copyright (c) 2023 Huawei Device Co., Ltd. * 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 #include "display_manager_lite.h" #include "mock_display_manager_adapter_lite.h" #include "singleton_mocker.h" #include "display_manager_lite.cpp" using namespace testing; using namespace testing::ext; namespace OHOS { namespace Rosen { using Mocker = SingletonMocker; class DmMockDisplayListener : public DisplayManagerLite::IDisplayListener { public: void OnCreate(DisplayId) override {} void OnDestroy(DisplayId) override {} void OnChange(DisplayId) override {} }; class DisplayManagerTest : public testing::Test { public: static void SetUpTestCase(); static void TearDownTestCase(); void SetUp() override; void TearDown() override; }; void DisplayManagerTest::SetUpTestCase() { } void DisplayManagerTest::TearDownTestCase() { } void DisplayManagerTest::SetUp() { } void DisplayManagerTest::TearDown() { } namespace { /** * @tc.name: OnDisplayCreate01 * @tc.desc: OnDisplayCreate * @tc.type: FUNC */ HWTEST_F(DisplayManagerTest, OnDisplayCreate01, Function | SmallTest | Level1) { std::unique_ptr m = std::make_unique(); EXPECT_CALL(m->Mock(), RegisterDisplayManagerAgent(_, _)).Times(1).WillOnce(Return(DMError::DM_OK)); sptr listener = new DmMockDisplayListener(); DisplayManagerLite::GetInstance().RegisterDisplayListener(listener); auto displayManagerListener = DisplayManagerLite::GetInstance().pImpl_->displayManagerListener_; ASSERT_NE(displayManagerListener, nullptr); displayManagerListener->OnDisplayCreate(nullptr); sptr displayInfo = new DisplayInfo(); displayInfo->SetDisplayId(DISPLAY_ID_INVALID); displayManagerListener->OnDisplayCreate(displayInfo); displayInfo->SetDisplayId(0); displayManagerListener->OnDisplayCreate(displayInfo); ASSERT_NE(displayManagerListener->pImpl_, nullptr); displayManagerListener->pImpl_ = nullptr; displayManagerListener->OnDisplayCreate(displayInfo); DisplayManagerLite::GetInstance().pImpl_->displayManagerListener_ = nullptr; } /** * @tc.name: OnDisplayDestroy * @tc.desc: OnDisplayDestroy * @tc.type: FUNC */ HWTEST_F(DisplayManagerTest, OnDisplayDestroy, Function | SmallTest | Level1) { std::unique_ptr m = std::make_unique(); EXPECT_CALL(m->Mock(), RegisterDisplayManagerAgent(_, _)).Times(1).WillOnce(Return(DMError::DM_OK)); sptr listener = new DmMockDisplayListener(); DisplayManagerLite::GetInstance().RegisterDisplayListener(listener); auto displayManagerListener = DisplayManagerLite::GetInstance().pImpl_->displayManagerListener_; ASSERT_NE(displayManagerListener, nullptr); displayManagerListener->OnDisplayDestroy(DISPLAY_ID_INVALID); displayManagerListener->OnDisplayDestroy(0); displayManagerListener->pImpl_ = nullptr; displayManagerListener->OnDisplayDestroy(1); DisplayManagerLite::GetInstance().pImpl_->displayManagerListener_ = nullptr; } /** * @tc.name: OnDisplayChange * @tc.desc: OnDisplayChange * @tc.type: FUNC */ HWTEST_F(DisplayManagerTest, OnDisplayChange, Function | SmallTest | Level1) { std::unique_ptr m = std::make_unique(); EXPECT_CALL(m->Mock(), RegisterDisplayManagerAgent(_, _)).Times(1).WillOnce(Return(DMError::DM_OK)); sptr listener = new DmMockDisplayListener(); DisplayManagerLite::GetInstance().RegisterDisplayListener(listener); auto displayManagerListener = DisplayManagerLite::GetInstance().pImpl_->displayManagerListener_; ASSERT_NE(displayManagerListener, nullptr); DisplayChangeEvent event = DisplayChangeEvent::DISPLAY_SIZE_CHANGED; displayManagerListener->OnDisplayChange(nullptr, event); sptr displayInfo = new DisplayInfo(); displayInfo->SetDisplayId(DISPLAY_ID_INVALID); displayManagerListener->OnDisplayChange(displayInfo, event); displayInfo->SetDisplayId(0); displayManagerListener->OnDisplayChange(displayInfo, event); ASSERT_NE(displayManagerListener->pImpl_, nullptr); displayManagerListener->pImpl_ = nullptr; displayManagerListener->OnDisplayChange(displayInfo, event); DisplayManagerLite::GetInstance().pImpl_->displayManagerListener_ = nullptr; } /** * @tc.name: ImplUpdateDisplayInfoLocked * @tc.desc: ImplUpdateDisplayInfoLocked fun * @tc.type: FUNC */ HWTEST_F(DisplayManagerTest, ImplUpdateDisplayInfoLocked, Function | SmallTest | Level1) { sptr displayInfo = new DisplayInfo(); displayInfo->SetDisplayId(DISPLAY_ID_INVALID); auto ret = DisplayManagerLite::GetInstance().pImpl_->UpdateDisplayInfoLocked(displayInfo); ASSERT_EQ(ret, false); displayInfo.clear(); } } } // namespace Rosen } // namespace OHOS