1e0dac50fSopenharmony_ci/*
2e0dac50fSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
3e0dac50fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4e0dac50fSopenharmony_ci * you may not use this file except in compliance with the License.
5e0dac50fSopenharmony_ci * You may obtain a copy of the License at
6e0dac50fSopenharmony_ci *
7e0dac50fSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8e0dac50fSopenharmony_ci *
9e0dac50fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10e0dac50fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11e0dac50fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12e0dac50fSopenharmony_ci * See the License for the specific language governing permissions and
13e0dac50fSopenharmony_ci * limitations under the License.
14e0dac50fSopenharmony_ci */
15e0dac50fSopenharmony_ci
16e0dac50fSopenharmony_ci#include <gtest/gtest.h>
17e0dac50fSopenharmony_ci
18e0dac50fSopenharmony_ci#include "abstract_display.h"
19e0dac50fSopenharmony_ci#include "abstract_screen_controller.h"
20e0dac50fSopenharmony_ci
21e0dac50fSopenharmony_ciusing namespace testing;
22e0dac50fSopenharmony_ciusing namespace testing::ext;
23e0dac50fSopenharmony_ci
24e0dac50fSopenharmony_cinamespace OHOS {
25e0dac50fSopenharmony_cinamespace Rosen {
26e0dac50fSopenharmony_ciclass AbstractDisplayTest : public testing::Test {
27e0dac50fSopenharmony_cipublic:
28e0dac50fSopenharmony_ci    static void SetUpTestCase();
29e0dac50fSopenharmony_ci    static void TearDownTestCase();
30e0dac50fSopenharmony_ci    void SetUp() override;
31e0dac50fSopenharmony_ci    void TearDown() override;
32e0dac50fSopenharmony_ci
33e0dac50fSopenharmony_ci    DisplayId id = 1;
34e0dac50fSopenharmony_ci    std::string name = "abstract_display_test";
35e0dac50fSopenharmony_ci    SupportedScreenModes modesInfo;
36e0dac50fSopenharmony_ci    std::recursive_mutex mutex;
37e0dac50fSopenharmony_ci    sptr<AbstractScreenController> absController;
38e0dac50fSopenharmony_ci    sptr<AbstractScreen> absScreen;
39e0dac50fSopenharmony_ci    sptr<AbstractDisplay> absDisplay;
40e0dac50fSopenharmony_ci    sptr<AbstractDisplay> absDisplay2;
41e0dac50fSopenharmony_ci    sptr<AbstractDisplay> absDisplay3;
42e0dac50fSopenharmony_ci    sptr<AbstractDisplay> absDisplay4;
43e0dac50fSopenharmony_ci};
44e0dac50fSopenharmony_ci
45e0dac50fSopenharmony_civoid AbstractDisplayTest::SetUpTestCase()
46e0dac50fSopenharmony_ci{
47e0dac50fSopenharmony_ci}
48e0dac50fSopenharmony_ci
49e0dac50fSopenharmony_civoid AbstractDisplayTest::TearDownTestCase()
50e0dac50fSopenharmony_ci{
51e0dac50fSopenharmony_ci}
52e0dac50fSopenharmony_ci
53e0dac50fSopenharmony_civoid AbstractDisplayTest::SetUp()
54e0dac50fSopenharmony_ci{
55e0dac50fSopenharmony_ci    modesInfo.width_ = 2160;
56e0dac50fSopenharmony_ci    modesInfo.height_ = 1600;
57e0dac50fSopenharmony_ci    modesInfo.refreshRate_ = 60;
58e0dac50fSopenharmony_ci    sptr<SupportedScreenModes> info = new SupportedScreenModes(modesInfo);
59e0dac50fSopenharmony_ci    absController = nullptr;
60e0dac50fSopenharmony_ci    absScreen = new AbstractScreen(absController, name, 1, 1);
61e0dac50fSopenharmony_ci    absDisplay = new AbstractDisplay(id, info, absScreen);
62e0dac50fSopenharmony_ci    modesInfo.width_ = 800;
63e0dac50fSopenharmony_ci    modesInfo.height_ = 2560;
64e0dac50fSopenharmony_ci    absDisplay2 = new AbstractDisplay(id, info, absScreen);
65e0dac50fSopenharmony_ci    modesInfo.width_ = 2560;
66e0dac50fSopenharmony_ci    modesInfo.height_ = 2560;
67e0dac50fSopenharmony_ci    absDisplay3 = new AbstractDisplay(id, info, absScreen);
68e0dac50fSopenharmony_ci    modesInfo.width_ = 2560;
69e0dac50fSopenharmony_ci    modesInfo.height_ = 1600;
70e0dac50fSopenharmony_ci    absDisplay4 = new AbstractDisplay(id, info, absScreen);
71e0dac50fSopenharmony_ci}
72e0dac50fSopenharmony_ci
73e0dac50fSopenharmony_civoid AbstractDisplayTest::TearDown()
74e0dac50fSopenharmony_ci{
75e0dac50fSopenharmony_ci}
76e0dac50fSopenharmony_ci
77e0dac50fSopenharmony_cinamespace {
78e0dac50fSopenharmony_ci/**
79e0dac50fSopenharmony_ci * @tc.name: BindAbstractScreen
80e0dac50fSopenharmony_ci * @tc.desc: BindAbstractScreen test
81e0dac50fSopenharmony_ci * @tc.type: FUNC
82e0dac50fSopenharmony_ci */
83e0dac50fSopenharmony_ciHWTEST_F(AbstractDisplayTest, BindAbstractScreen01, Function | SmallTest | Level3)
84e0dac50fSopenharmony_ci{
85e0dac50fSopenharmony_ci    sptr<AbstractScreen> abstractScreen = nullptr;
86e0dac50fSopenharmony_ci    ASSERT_EQ(false, absDisplay->BindAbstractScreen(abstractScreen));
87e0dac50fSopenharmony_ci}
88e0dac50fSopenharmony_ci/**
89e0dac50fSopenharmony_ci * @tc.name: BindAbstractScreen
90e0dac50fSopenharmony_ci * @tc.desc: BindAbstractScreen test
91e0dac50fSopenharmony_ci * @tc.type: FUNC
92e0dac50fSopenharmony_ci */
93e0dac50fSopenharmony_ciHWTEST_F(AbstractDisplayTest, BindAbstractScreen02, Function | SmallTest | Level3)
94e0dac50fSopenharmony_ci{
95e0dac50fSopenharmony_ci    sptr<AbstractScreen> abstractScreen = absScreen;
96e0dac50fSopenharmony_ci    abstractScreen->activeIdx_ = -1;
97e0dac50fSopenharmony_ci    ASSERT_EQ(false, absDisplay->BindAbstractScreen(abstractScreen));
98e0dac50fSopenharmony_ci}
99e0dac50fSopenharmony_ci/**
100e0dac50fSopenharmony_ci * @tc.name: CalculateXYDpi
101e0dac50fSopenharmony_ci * @tc.desc: CalculateXYDpi test
102e0dac50fSopenharmony_ci * @tc.type: FUNC
103e0dac50fSopenharmony_ci */
104e0dac50fSopenharmony_ciHWTEST_F(AbstractDisplayTest, CalculateXYDpi, Function | SmallTest | Level3)
105e0dac50fSopenharmony_ci{
106e0dac50fSopenharmony_ci    uint32_t phyWidth = 0;
107e0dac50fSopenharmony_ci    uint32_t phyHeight = 0;
108e0dac50fSopenharmony_ci    absDisplay->CalculateXYDpi(phyWidth, phyHeight);
109e0dac50fSopenharmony_ci    phyWidth = 1;
110e0dac50fSopenharmony_ci    absDisplay->CalculateXYDpi(phyWidth, phyHeight);
111e0dac50fSopenharmony_ci    phyHeight = 1;
112e0dac50fSopenharmony_ci    absDisplay->CalculateXYDpi(phyWidth, phyHeight);
113e0dac50fSopenharmony_ci    phyWidth = 0;
114e0dac50fSopenharmony_ci    absDisplay->CalculateXYDpi(phyWidth, phyHeight);
115e0dac50fSopenharmony_ci    ASSERT_EQ(1, absDisplay->phyHeight_);
116e0dac50fSopenharmony_ci}
117e0dac50fSopenharmony_ci/**
118e0dac50fSopenharmony_ci * @tc.name: GetRefreshRate
119e0dac50fSopenharmony_ci * @tc.desc: GetRefreshRate test
120e0dac50fSopenharmony_ci * @tc.type: FUNC
121e0dac50fSopenharmony_ci */
122e0dac50fSopenharmony_ciHWTEST_F(AbstractDisplayTest, GetRefreshRate, Function | SmallTest | Level3)
123e0dac50fSopenharmony_ci{
124e0dac50fSopenharmony_ci    uint32_t refreshRate = 1;
125e0dac50fSopenharmony_ci    absDisplay->SetRefreshRate(refreshRate);
126e0dac50fSopenharmony_ci    absDisplay->GetRefreshRate();
127e0dac50fSopenharmony_ci    ASSERT_EQ(1, absDisplay->refreshRate_);
128e0dac50fSopenharmony_ci}
129e0dac50fSopenharmony_ci/**
130e0dac50fSopenharmony_ci * @tc.name: GetOffsetX
131e0dac50fSopenharmony_ci * @tc.desc: GetOffsetX test
132e0dac50fSopenharmony_ci * @tc.type: FUNC
133e0dac50fSopenharmony_ci */
134e0dac50fSopenharmony_ciHWTEST_F(AbstractDisplayTest, GetOffsetX, Function | SmallTest | Level3)
135e0dac50fSopenharmony_ci{
136e0dac50fSopenharmony_ci    int32_t offsetX = 1;
137e0dac50fSopenharmony_ci    absDisplay->SetOffsetX(offsetX);
138e0dac50fSopenharmony_ci    ASSERT_EQ(1, absDisplay->GetOffsetX());
139e0dac50fSopenharmony_ci}
140e0dac50fSopenharmony_ci/**
141e0dac50fSopenharmony_ci * @tc.name: GetOffsetY
142e0dac50fSopenharmony_ci * @tc.desc: GetOffsetX test
143e0dac50fSopenharmony_ci * @tc.type: FUNC
144e0dac50fSopenharmony_ci */
145e0dac50fSopenharmony_ciHWTEST_F(AbstractDisplayTest, GetOffsetY, Function | SmallTest | Level3)
146e0dac50fSopenharmony_ci{
147e0dac50fSopenharmony_ci    int32_t offsetY = 1;
148e0dac50fSopenharmony_ci    absDisplay->SetOffsetY(offsetY);
149e0dac50fSopenharmony_ci    ASSERT_EQ(1, absDisplay->GetOffsetY());
150e0dac50fSopenharmony_ci}
151e0dac50fSopenharmony_ci/**
152e0dac50fSopenharmony_ci * @tc.name: UpdateXDpi
153e0dac50fSopenharmony_ci * @tc.desc: UpdateXDpi test
154e0dac50fSopenharmony_ci * @tc.type: FUNC
155e0dac50fSopenharmony_ci */
156e0dac50fSopenharmony_ciHWTEST_F(AbstractDisplayTest, UpdateXDpi, Function | SmallTest | Level3)
157e0dac50fSopenharmony_ci{
158e0dac50fSopenharmony_ci    uint32_t phyWidth = UINT32_MAX;
159e0dac50fSopenharmony_ci    uint32_t phyHeight = 0;
160e0dac50fSopenharmony_ci    absDisplay->CalculateXYDpi(phyWidth, phyHeight);
161e0dac50fSopenharmony_ci    absDisplay->UpdateXDpi();
162e0dac50fSopenharmony_ci    ASSERT_EQ(UINT32_MAX, absDisplay->phyWidth_);
163e0dac50fSopenharmony_ci}
164e0dac50fSopenharmony_ci/**
165e0dac50fSopenharmony_ci * @tc.name: UpdateYDpi
166e0dac50fSopenharmony_ci * @tc.desc: UpdateYDpi test
167e0dac50fSopenharmony_ci * @tc.type: FUNC
168e0dac50fSopenharmony_ci */
169e0dac50fSopenharmony_ciHWTEST_F(AbstractDisplayTest, UpdateYDpi, Function | SmallTest | Level3)
170e0dac50fSopenharmony_ci{
171e0dac50fSopenharmony_ci    uint32_t phyWidth = UINT32_MAX;
172e0dac50fSopenharmony_ci    uint32_t phyHeight = UINT32_MAX;
173e0dac50fSopenharmony_ci    absDisplay->CalculateXYDpi(phyWidth, phyHeight);
174e0dac50fSopenharmony_ci    absDisplay->UpdateYDpi();
175e0dac50fSopenharmony_ci    ASSERT_EQ(UINT32_MAX, absDisplay->phyHeight_);
176e0dac50fSopenharmony_ci}
177e0dac50fSopenharmony_ci/**
178e0dac50fSopenharmony_ci * @tc.name: SetId
179e0dac50fSopenharmony_ci * @tc.desc: SetId test
180e0dac50fSopenharmony_ci * @tc.type: FUNC
181e0dac50fSopenharmony_ci */
182e0dac50fSopenharmony_ciHWTEST_F(AbstractDisplayTest, SetId, Function | SmallTest | Level3)
183e0dac50fSopenharmony_ci{
184e0dac50fSopenharmony_ci    DisplayId id = 1;
185e0dac50fSopenharmony_ci    absDisplay->SetId(id);
186e0dac50fSopenharmony_ci    ASSERT_EQ(1, absDisplay->GetId());
187e0dac50fSopenharmony_ci}
188e0dac50fSopenharmony_ci/**
189e0dac50fSopenharmony_ci * @tc.name: SetDisplayOrientation
190e0dac50fSopenharmony_ci * @tc.desc: SetDisplayOrientation test
191e0dac50fSopenharmony_ci * @tc.type: FUNC
192e0dac50fSopenharmony_ci */
193e0dac50fSopenharmony_ciHWTEST_F(AbstractDisplayTest, SetDisplayOrientation, Function | SmallTest | Level3)
194e0dac50fSopenharmony_ci{
195e0dac50fSopenharmony_ci    DisplayOrientation displayOrientation = DisplayOrientation::PORTRAIT;
196e0dac50fSopenharmony_ci    absDisplay->SetDisplayOrientation(displayOrientation);
197e0dac50fSopenharmony_ci    ASSERT_EQ(DisplayOrientation::PORTRAIT, absDisplay->GetDisplayOrientation());
198e0dac50fSopenharmony_ci}
199e0dac50fSopenharmony_ci/**
200e0dac50fSopenharmony_ci * @tc.name: GetRotationAndGetOrientation
201e0dac50fSopenharmony_ci * @tc.desc: GetRotationAndGetOrientation test
202e0dac50fSopenharmony_ci * @tc.type: FUNC
203e0dac50fSopenharmony_ci */
204e0dac50fSopenharmony_ciHWTEST_F(AbstractDisplayTest, GetRotationAndGetOrientation, Function | SmallTest | Level3)
205e0dac50fSopenharmony_ci{
206e0dac50fSopenharmony_ci    DisplayId id = 1;
207e0dac50fSopenharmony_ci    absDisplay->SetId(id);
208e0dac50fSopenharmony_ci    absDisplay->GetRotation();
209e0dac50fSopenharmony_ci    absDisplay->GetOrientation();
210e0dac50fSopenharmony_ci    ASSERT_EQ(1, absDisplay->GetId());
211e0dac50fSopenharmony_ci}
212e0dac50fSopenharmony_ci/**
213e0dac50fSopenharmony_ci * @tc.name: SetFreezeFlag
214e0dac50fSopenharmony_ci * @tc.desc: SetFreezeFlag test
215e0dac50fSopenharmony_ci * @tc.type: FUNC
216e0dac50fSopenharmony_ci */
217e0dac50fSopenharmony_ciHWTEST_F(AbstractDisplayTest, SetFreezeFlag, Function | SmallTest | Level3)
218e0dac50fSopenharmony_ci{
219e0dac50fSopenharmony_ci    FreezeFlag freezeFlag = FreezeFlag::FREEZING;
220e0dac50fSopenharmony_ci    absDisplay->SetFreezeFlag(freezeFlag);
221e0dac50fSopenharmony_ci    ASSERT_EQ(FreezeFlag::FREEZING, absDisplay->GetFreezeFlag());
222e0dac50fSopenharmony_ci}
223e0dac50fSopenharmony_ci}
224e0dac50fSopenharmony_ci} // namespace Rosen
225e0dac50fSopenharmony_ci} // namespace OHOS
226