1 /*
2  * Copyright (c) 2022 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 
18 #include "abstract_display.h"
19 #include "abstract_screen_controller.h"
20 
21 using namespace testing;
22 using namespace testing::ext;
23 
24 namespace OHOS {
25 namespace Rosen {
26 class AbstractDisplayTest : public testing::Test {
27 public:
28     static void SetUpTestCase();
29     static void TearDownTestCase();
30     void SetUp() override;
31     void TearDown() override;
32 
33     DisplayId id = 1;
34     std::string name = "abstract_display_test";
35     SupportedScreenModes modesInfo;
36     std::recursive_mutex mutex;
37     sptr<AbstractScreenController> absController;
38     sptr<AbstractScreen> absScreen;
39     sptr<AbstractDisplay> absDisplay;
40     sptr<AbstractDisplay> absDisplay2;
41     sptr<AbstractDisplay> absDisplay3;
42     sptr<AbstractDisplay> absDisplay4;
43 };
44 
SetUpTestCase()45 void AbstractDisplayTest::SetUpTestCase()
46 {
47 }
48 
TearDownTestCase()49 void AbstractDisplayTest::TearDownTestCase()
50 {
51 }
52 
SetUp()53 void AbstractDisplayTest::SetUp()
54 {
55     modesInfo.width_ = 2160;
56     modesInfo.height_ = 1600;
57     modesInfo.refreshRate_ = 60;
58     sptr<SupportedScreenModes> info = new SupportedScreenModes(modesInfo);
59     absController = nullptr;
60     absScreen = new AbstractScreen(absController, name, 1, 1);
61     absDisplay = new AbstractDisplay(id, info, absScreen);
62     modesInfo.width_ = 800;
63     modesInfo.height_ = 2560;
64     absDisplay2 = new AbstractDisplay(id, info, absScreen);
65     modesInfo.width_ = 2560;
66     modesInfo.height_ = 2560;
67     absDisplay3 = new AbstractDisplay(id, info, absScreen);
68     modesInfo.width_ = 2560;
69     modesInfo.height_ = 1600;
70     absDisplay4 = new AbstractDisplay(id, info, absScreen);
71 }
72 
TearDown()73 void AbstractDisplayTest::TearDown()
74 {
75 }
76 
77 namespace {
78 /**
79  * @tc.name: BindAbstractScreen
80  * @tc.desc: BindAbstractScreen test
81  * @tc.type: FUNC
82  */
HWTEST_F(AbstractDisplayTest, BindAbstractScreen01, Function | SmallTest | Level3)83 HWTEST_F(AbstractDisplayTest, BindAbstractScreen01, Function | SmallTest | Level3)
84 {
85     sptr<AbstractScreen> abstractScreen = nullptr;
86     ASSERT_EQ(false, absDisplay->BindAbstractScreen(abstractScreen));
87 }
88 /**
89  * @tc.name: BindAbstractScreen
90  * @tc.desc: BindAbstractScreen test
91  * @tc.type: FUNC
92  */
HWTEST_F(AbstractDisplayTest, BindAbstractScreen02, Function | SmallTest | Level3)93 HWTEST_F(AbstractDisplayTest, BindAbstractScreen02, Function | SmallTest | Level3)
94 {
95     sptr<AbstractScreen> abstractScreen = absScreen;
96     abstractScreen->activeIdx_ = -1;
97     ASSERT_EQ(false, absDisplay->BindAbstractScreen(abstractScreen));
98 }
99 /**
100  * @tc.name: CalculateXYDpi
101  * @tc.desc: CalculateXYDpi test
102  * @tc.type: FUNC
103  */
HWTEST_F(AbstractDisplayTest, CalculateXYDpi, Function | SmallTest | Level3)104 HWTEST_F(AbstractDisplayTest, CalculateXYDpi, Function | SmallTest | Level3)
105 {
106     uint32_t phyWidth = 0;
107     uint32_t phyHeight = 0;
108     absDisplay->CalculateXYDpi(phyWidth, phyHeight);
109     phyWidth = 1;
110     absDisplay->CalculateXYDpi(phyWidth, phyHeight);
111     phyHeight = 1;
112     absDisplay->CalculateXYDpi(phyWidth, phyHeight);
113     phyWidth = 0;
114     absDisplay->CalculateXYDpi(phyWidth, phyHeight);
115     ASSERT_EQ(1, absDisplay->phyHeight_);
116 }
117 /**
118  * @tc.name: GetRefreshRate
119  * @tc.desc: GetRefreshRate test
120  * @tc.type: FUNC
121  */
HWTEST_F(AbstractDisplayTest, GetRefreshRate, Function | SmallTest | Level3)122 HWTEST_F(AbstractDisplayTest, GetRefreshRate, Function | SmallTest | Level3)
123 {
124     uint32_t refreshRate = 1;
125     absDisplay->SetRefreshRate(refreshRate);
126     absDisplay->GetRefreshRate();
127     ASSERT_EQ(1, absDisplay->refreshRate_);
128 }
129 /**
130  * @tc.name: GetOffsetX
131  * @tc.desc: GetOffsetX test
132  * @tc.type: FUNC
133  */
HWTEST_F(AbstractDisplayTest, GetOffsetX, Function | SmallTest | Level3)134 HWTEST_F(AbstractDisplayTest, GetOffsetX, Function | SmallTest | Level3)
135 {
136     int32_t offsetX = 1;
137     absDisplay->SetOffsetX(offsetX);
138     ASSERT_EQ(1, absDisplay->GetOffsetX());
139 }
140 /**
141  * @tc.name: GetOffsetY
142  * @tc.desc: GetOffsetX test
143  * @tc.type: FUNC
144  */
HWTEST_F(AbstractDisplayTest, GetOffsetY, Function | SmallTest | Level3)145 HWTEST_F(AbstractDisplayTest, GetOffsetY, Function | SmallTest | Level3)
146 {
147     int32_t offsetY = 1;
148     absDisplay->SetOffsetY(offsetY);
149     ASSERT_EQ(1, absDisplay->GetOffsetY());
150 }
151 /**
152  * @tc.name: UpdateXDpi
153  * @tc.desc: UpdateXDpi test
154  * @tc.type: FUNC
155  */
HWTEST_F(AbstractDisplayTest, UpdateXDpi, Function | SmallTest | Level3)156 HWTEST_F(AbstractDisplayTest, UpdateXDpi, Function | SmallTest | Level3)
157 {
158     uint32_t phyWidth = UINT32_MAX;
159     uint32_t phyHeight = 0;
160     absDisplay->CalculateXYDpi(phyWidth, phyHeight);
161     absDisplay->UpdateXDpi();
162     ASSERT_EQ(UINT32_MAX, absDisplay->phyWidth_);
163 }
164 /**
165  * @tc.name: UpdateYDpi
166  * @tc.desc: UpdateYDpi test
167  * @tc.type: FUNC
168  */
HWTEST_F(AbstractDisplayTest, UpdateYDpi, Function | SmallTest | Level3)169 HWTEST_F(AbstractDisplayTest, UpdateYDpi, Function | SmallTest | Level3)
170 {
171     uint32_t phyWidth = UINT32_MAX;
172     uint32_t phyHeight = UINT32_MAX;
173     absDisplay->CalculateXYDpi(phyWidth, phyHeight);
174     absDisplay->UpdateYDpi();
175     ASSERT_EQ(UINT32_MAX, absDisplay->phyHeight_);
176 }
177 /**
178  * @tc.name: SetId
179  * @tc.desc: SetId test
180  * @tc.type: FUNC
181  */
HWTEST_F(AbstractDisplayTest, SetId, Function | SmallTest | Level3)182 HWTEST_F(AbstractDisplayTest, SetId, Function | SmallTest | Level3)
183 {
184     DisplayId id = 1;
185     absDisplay->SetId(id);
186     ASSERT_EQ(1, absDisplay->GetId());
187 }
188 /**
189  * @tc.name: SetDisplayOrientation
190  * @tc.desc: SetDisplayOrientation test
191  * @tc.type: FUNC
192  */
HWTEST_F(AbstractDisplayTest, SetDisplayOrientation, Function | SmallTest | Level3)193 HWTEST_F(AbstractDisplayTest, SetDisplayOrientation, Function | SmallTest | Level3)
194 {
195     DisplayOrientation displayOrientation = DisplayOrientation::PORTRAIT;
196     absDisplay->SetDisplayOrientation(displayOrientation);
197     ASSERT_EQ(DisplayOrientation::PORTRAIT, absDisplay->GetDisplayOrientation());
198 }
199 /**
200  * @tc.name: GetRotationAndGetOrientation
201  * @tc.desc: GetRotationAndGetOrientation test
202  * @tc.type: FUNC
203  */
HWTEST_F(AbstractDisplayTest, GetRotationAndGetOrientation, Function | SmallTest | Level3)204 HWTEST_F(AbstractDisplayTest, GetRotationAndGetOrientation, Function | SmallTest | Level3)
205 {
206     DisplayId id = 1;
207     absDisplay->SetId(id);
208     absDisplay->GetRotation();
209     absDisplay->GetOrientation();
210     ASSERT_EQ(1, absDisplay->GetId());
211 }
212 /**
213  * @tc.name: SetFreezeFlag
214  * @tc.desc: SetFreezeFlag test
215  * @tc.type: FUNC
216  */
HWTEST_F(AbstractDisplayTest, SetFreezeFlag, Function | SmallTest | Level3)217 HWTEST_F(AbstractDisplayTest, SetFreezeFlag, Function | SmallTest | Level3)
218 {
219     FreezeFlag freezeFlag = FreezeFlag::FREEZING;
220     absDisplay->SetFreezeFlag(freezeFlag);
221     ASSERT_EQ(FreezeFlag::FREEZING, absDisplay->GetFreezeFlag());
222 }
223 }
224 } // namespace Rosen
225 } // namespace OHOS
226