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 #include "display_manager.h"
18 #include "mock_display_manager_adapter.h"
19 #include "singleton_mocker.h"
20 #include "display_cutout_controller.h"
21
22 using namespace testing;
23 using namespace testing::ext;
24
25 namespace OHOS {
26 namespace Rosen {
27 using Mocker = SingletonMocker<DisplayManagerAdapter, MockDisplayManagerAdapter>;
28 class DisplayTest : public testing::Test {
29 public:
30 static void SetUpTestCase();
31 static void TearDownTestCase();
32 virtual void SetUp() override;
33 virtual void TearDown() override;
34
35 static sptr<Display> defaultDisplay_;
36 static DisplayId defaultDisplayId_;
37 };
38 sptr<Display> DisplayTest::defaultDisplay_ = nullptr;
39 DisplayId DisplayTest::defaultDisplayId_ = DISPLAY_ID_INVALID;
40
SetUpTestCase()41 void DisplayTest::SetUpTestCase()
42 {
43 defaultDisplay_ = DisplayManager::GetInstance().GetDefaultDisplay();
44 defaultDisplayId_ = static_cast<DisplayId>(defaultDisplay_->GetId());
45 }
46
TearDownTestCase()47 void DisplayTest::TearDownTestCase()
48 {
49 defaultDisplay_ = nullptr;
50 }
51
SetUp()52 void DisplayTest::SetUp()
53 {
54 }
55
TearDown()56 void DisplayTest::TearDown()
57 {
58 }
59
60 namespace {
61 /**
62 * @tc.name: GetCutoutInfo01
63 * @tc.desc: GetCutoutInfo with valid defaultDisplayId and return success
64 * @tc.type: FUNC
65 * @tc.require: issueI5K0JP
66 */
67 HWTEST_F(DisplayTest, GetCutoutInfo01, Function | SmallTest | Level1)
68 {
69 auto cutoutInfo = defaultDisplay_->GetCutoutInfo();
70 ASSERT_NE(nullptr, cutoutInfo);
71 }
72
73 /**
74 * @tc.name: UpdateDisplayInfo01
75 * @tc.desc: UpdateDisplayInfo with nullptr
76 * @tc.type: FUNC
77 * @tc.require: issueI5K0JP
78 */
79 HWTEST_F(DisplayTest, UpdateDisplayInfo01, Function | SmallTest | Level1)
80 {
81 defaultDisplay_->UpdateDisplayInfo(nullptr);
82 }
83
84 /**
85 * @tc.name: GetName
86 * @tc.desc: UpdateDisplayInfo with nullptr
87 * @tc.type: FUNC
88 * @tc.require: issueI5K0JP
89 */
90 HWTEST_F(DisplayTest, GetName, Function | SmallTest | Level1)
91 {
92 defaultDisplay_->GetName();
93 defaultDisplay_->GetDpi();
94 }
95
96 /**
97 * @tc.name: SetWaterfallCompression01
98 * @tc.desc: Set waterfall compression related values with valid input.
99 * @tc.type: FUNC
100 * @tc.require: issueI5P8CI
101 */
102 HWTEST_F(DisplayTest, SetWaterfallCompression01, Function | SmallTest | Level1)
103 {
104 bool isWaterfallDisplayOrigin = DisplayCutoutController::IsWaterfallDisplay();
105 DisplayCutoutController::SetIsWaterfallDisplay(true);
106 bool isCompressionEnableOrigin =
107 DisplayCutoutController::IsWaterfallAreaCompressionEnableWhenHorizontal();
108 DisplayCutoutController::SetWaterfallAreaCompressionEnableWhenHorzontal(true);
109 uint32_t testSizeOrigin = DisplayCutoutController::GetWaterfallAreaCompressionSizeWhenHorizontal();
110 uint32_t testSize = 20;
111 DisplayCutoutController::SetWaterfallAreaCompressionSizeWhenHorizontal(testSize);
112 ASSERT_EQ(true, DisplayCutoutController::IsWaterfallDisplay());
113 ASSERT_EQ(true, DisplayCutoutController::IsWaterfallAreaCompressionEnableWhenHorizontal());
114 ASSERT_EQ(testSize, DisplayCutoutController::GetWaterfallAreaCompressionSizeWhenHorizontal());
115 DisplayCutoutController::SetWaterfallAreaCompressionSizeWhenHorizontal(testSizeOrigin);
116 ASSERT_EQ(testSizeOrigin, DisplayCutoutController::GetWaterfallAreaCompressionSizeWhenHorizontal());
117 DisplayCutoutController::SetWaterfallAreaCompressionEnableWhenHorzontal(isCompressionEnableOrigin);
118 ASSERT_EQ(isWaterfallDisplayOrigin, DisplayCutoutController::IsWaterfallAreaCompressionEnableWhenHorizontal());
119 DisplayCutoutController::SetIsWaterfallDisplay(isWaterfallDisplayOrigin);
120 ASSERT_EQ(isWaterfallDisplayOrigin, DisplayCutoutController::IsWaterfallDisplay());
121 }
122
123 /**
124 * @tc.name: SetWaterfallCompression02
125 * @tc.desc: Set waterfall compression related values with invalid input.
126 * @tc.type: FUNC
127 * @tc.require: issueI5P8CI
128 */
129 HWTEST_F(DisplayTest, SetWaterfallCompression02, Function | SmallTest | Level1)
130 {
131 bool isWaterfallDisplayOrigin = DisplayCutoutController::IsWaterfallDisplay();
132 DisplayCutoutController::SetIsWaterfallDisplay(true);
133 bool isCompressionEnableOrigin =
134 DisplayCutoutController::IsWaterfallAreaCompressionEnableWhenHorizontal();
135 DisplayCutoutController::SetWaterfallAreaCompressionEnableWhenHorzontal(true);
136 uint32_t testSizeOrigin = DisplayCutoutController::GetWaterfallAreaCompressionSizeWhenHorizontal();
137
138 DisplayCutoutController::SetIsWaterfallDisplay(false);
139 DisplayCutoutController::SetWaterfallAreaCompressionEnableWhenHorzontal(true);
140 ASSERT_EQ(false, DisplayCutoutController::IsWaterfallAreaCompressionEnableWhenHorizontal());
141
142 uint32_t testSize = 20;
143 DisplayCutoutController::SetIsWaterfallDisplay(true);
144 DisplayCutoutController::SetWaterfallAreaCompressionEnableWhenHorzontal(false);
145 DisplayCutoutController::SetWaterfallAreaCompressionSizeWhenHorizontal(testSize);
146 ASSERT_EQ(0, DisplayCutoutController::GetWaterfallAreaCompressionSizeWhenHorizontal());
147
148 DisplayCutoutController::SetIsWaterfallDisplay(false);
149 DisplayCutoutController::SetWaterfallAreaCompressionEnableWhenHorzontal(false);
150 DisplayCutoutController::SetWaterfallAreaCompressionSizeWhenHorizontal(testSize);
151 ASSERT_EQ(0, DisplayCutoutController::GetWaterfallAreaCompressionSizeWhenHorizontal());
152
153 DisplayCutoutController::SetWaterfallAreaCompressionSizeWhenHorizontal(testSizeOrigin);
154 ASSERT_EQ(testSizeOrigin, DisplayCutoutController::GetWaterfallAreaCompressionSizeWhenHorizontal());
155 DisplayCutoutController::SetWaterfallAreaCompressionEnableWhenHorzontal(isCompressionEnableOrigin);
156 ASSERT_EQ(isWaterfallDisplayOrigin, DisplayCutoutController::IsWaterfallAreaCompressionEnableWhenHorizontal());
157 DisplayCutoutController::SetIsWaterfallDisplay(isWaterfallDisplayOrigin);
158 ASSERT_EQ(isWaterfallDisplayOrigin, DisplayCutoutController::IsWaterfallDisplay());
159 }
160 /**
161 * @tc.name: GetName01
162 * @tc.desc: GetName function cover
163 * @tc.type: FUNC
164 */
165 HWTEST_F(DisplayTest, GetName01, Function | SmallTest | Level1)
166 {
167 auto name = defaultDisplay_->GetName();
168 ASSERT_EQ("display_0", name);
169 }
170
171 /**
172 * @tc.name: GetDpi01
173 * @tc.desc: GetDpi function cover
174 * @tc.type: FUNC
175 */
176 HWTEST_F(DisplayTest, GetDpi01, Function | SmallTest | Level1)
177 {
178 auto dpi = defaultDisplay_->GetDpi();
179
180 auto vpr = defaultDisplay_->GetVirtualPixelRatio();
181 ASSERT_EQ(vpr * DOT_PER_INCH, dpi);
182 }
183 }
184 } // namespace Rosen
185 } // namespace OHOS