1 /*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <gtest/gtest.h>
17 #include "display_manager_lite.h"
18 #include "mock_display_manager_adapter_lite.h"
19 #include "singleton_mocker.h"
20 #include "display_manager_lite.cpp"
21
22 using namespace testing;
23 using namespace testing::ext;
24
25 namespace OHOS {
26 namespace Rosen {
27 using Mocker = SingletonMocker<DisplayManagerAdapterLite, MockDisplayManagerAdapterLite>;
28 class DmMockDisplayListener : public DisplayManagerLite::IDisplayListener {
29 public:
OnCreate(DisplayId)30 void OnCreate(DisplayId) override {}
OnDestroy(DisplayId)31 void OnDestroy(DisplayId) override {}
OnChange(DisplayId)32 void OnChange(DisplayId) override {}
33 };
34 class DisplayManagerTest : public testing::Test {
35 public:
36 static void SetUpTestCase();
37 static void TearDownTestCase();
38 void SetUp() override;
39 void TearDown() override;
40 };
41
SetUpTestCase()42 void DisplayManagerTest::SetUpTestCase()
43 {
44 }
45
TearDownTestCase()46 void DisplayManagerTest::TearDownTestCase()
47 {
48 }
49
SetUp()50 void DisplayManagerTest::SetUp()
51 {
52 }
53
TearDown()54 void DisplayManagerTest::TearDown()
55 {
56 }
57
58 namespace {
59 /**
60 * @tc.name: OnDisplayCreate01
61 * @tc.desc: OnDisplayCreate
62 * @tc.type: FUNC
63 */
64 HWTEST_F(DisplayManagerTest, OnDisplayCreate01, Function | SmallTest | Level1)
65 {
66 std::unique_ptr<Mocker> m = std::make_unique<Mocker>();
67 EXPECT_CALL(m->Mock(), RegisterDisplayManagerAgent(_, _)).Times(1).WillOnce(Return(DMError::DM_OK));
68 sptr<DisplayManagerLite::IDisplayListener> listener = new DmMockDisplayListener();
69 DisplayManagerLite::GetInstance().RegisterDisplayListener(listener);
70 auto displayManagerListener = DisplayManagerLite::GetInstance().pImpl_->displayManagerListener_;
71 ASSERT_NE(displayManagerListener, nullptr);
72 displayManagerListener->OnDisplayCreate(nullptr);
73 sptr<DisplayInfo> displayInfo = new DisplayInfo();
74 displayInfo->SetDisplayId(DISPLAY_ID_INVALID);
75 displayManagerListener->OnDisplayCreate(displayInfo);
76 displayInfo->SetDisplayId(0);
77 displayManagerListener->OnDisplayCreate(displayInfo);
78 ASSERT_NE(displayManagerListener->pImpl_, nullptr);
79 displayManagerListener->pImpl_ = nullptr;
80 displayManagerListener->OnDisplayCreate(displayInfo);
81 DisplayManagerLite::GetInstance().pImpl_->displayManagerListener_ = nullptr;
82 }
83
84 /**
85 * @tc.name: OnDisplayDestroy
86 * @tc.desc: OnDisplayDestroy
87 * @tc.type: FUNC
88 */
89 HWTEST_F(DisplayManagerTest, OnDisplayDestroy, Function | SmallTest | Level1)
90 {
91 std::unique_ptr<Mocker> m = std::make_unique<Mocker>();
92 EXPECT_CALL(m->Mock(), RegisterDisplayManagerAgent(_, _)).Times(1).WillOnce(Return(DMError::DM_OK));
93 sptr<DisplayManagerLite::IDisplayListener> listener = new DmMockDisplayListener();
94 DisplayManagerLite::GetInstance().RegisterDisplayListener(listener);
95 auto displayManagerListener = DisplayManagerLite::GetInstance().pImpl_->displayManagerListener_;
96 ASSERT_NE(displayManagerListener, nullptr);
97 displayManagerListener->OnDisplayDestroy(DISPLAY_ID_INVALID);
98 displayManagerListener->OnDisplayDestroy(0);
99 displayManagerListener->pImpl_ = nullptr;
100 displayManagerListener->OnDisplayDestroy(1);
101 DisplayManagerLite::GetInstance().pImpl_->displayManagerListener_ = nullptr;
102 }
103
104 /**
105 * @tc.name: OnDisplayChange
106 * @tc.desc: OnDisplayChange
107 * @tc.type: FUNC
108 */
109 HWTEST_F(DisplayManagerTest, OnDisplayChange, Function | SmallTest | Level1)
110 {
111 std::unique_ptr<Mocker> m = std::make_unique<Mocker>();
112 EXPECT_CALL(m->Mock(), RegisterDisplayManagerAgent(_, _)).Times(1).WillOnce(Return(DMError::DM_OK));
113 sptr<DisplayManagerLite::IDisplayListener> listener = new DmMockDisplayListener();
114 DisplayManagerLite::GetInstance().RegisterDisplayListener(listener);
115 auto displayManagerListener = DisplayManagerLite::GetInstance().pImpl_->displayManagerListener_;
116 ASSERT_NE(displayManagerListener, nullptr);
117 DisplayChangeEvent event = DisplayChangeEvent::DISPLAY_SIZE_CHANGED;
118 displayManagerListener->OnDisplayChange(nullptr, event);
119 sptr<DisplayInfo> displayInfo = new DisplayInfo();
120 displayInfo->SetDisplayId(DISPLAY_ID_INVALID);
121 displayManagerListener->OnDisplayChange(displayInfo, event);
122 displayInfo->SetDisplayId(0);
123 displayManagerListener->OnDisplayChange(displayInfo, event);
124 ASSERT_NE(displayManagerListener->pImpl_, nullptr);
125 displayManagerListener->pImpl_ = nullptr;
126 displayManagerListener->OnDisplayChange(displayInfo, event);
127 DisplayManagerLite::GetInstance().pImpl_->displayManagerListener_ = nullptr;
128 }
129
130 /**
131 * @tc.name: ImplUpdateDisplayInfoLocked
132 * @tc.desc: ImplUpdateDisplayInfoLocked fun
133 * @tc.type: FUNC
134 */
135 HWTEST_F(DisplayManagerTest, ImplUpdateDisplayInfoLocked, Function | SmallTest | Level1)
136 {
137 sptr<DisplayInfo> displayInfo = new DisplayInfo();
138 displayInfo->SetDisplayId(DISPLAY_ID_INVALID);
139 auto ret = DisplayManagerLite::GetInstance().pImpl_->UpdateDisplayInfoLocked(displayInfo);
140 ASSERT_EQ(ret, false);
141 displayInfo.clear();
142 }
143
144 }
145 } // namespace Rosen
146 } // namespace OHOS