• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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