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_screen.h"
19e0dac50fSopenharmony_ci#include "abstract_screen_controller.h"
20e0dac50fSopenharmony_ci#include "scene_board_judgement.h"
21e0dac50fSopenharmony_ci
22e0dac50fSopenharmony_ciusing namespace testing;
23e0dac50fSopenharmony_ciusing namespace testing::ext;
24e0dac50fSopenharmony_ci
25e0dac50fSopenharmony_cinamespace OHOS {
26e0dac50fSopenharmony_cinamespace Rosen {
27e0dac50fSopenharmony_ciclass AbstractScreenTest : public testing::Test {
28e0dac50fSopenharmony_cipublic:
29e0dac50fSopenharmony_ci    static void SetUpTestCase();
30e0dac50fSopenharmony_ci    static void TearDownTestCase();
31e0dac50fSopenharmony_ci    void SetUp() override;
32e0dac50fSopenharmony_ci    void TearDown() override;
33e0dac50fSopenharmony_ci
34e0dac50fSopenharmony_ci    static sptr<AbstractScreen> absScreen_;
35e0dac50fSopenharmony_ci    static sptr<AbstractScreenGroup> absScreenGroup_;
36e0dac50fSopenharmony_ci    static std::recursive_mutex mutex_;
37e0dac50fSopenharmony_ci    static std::string name_;
38e0dac50fSopenharmony_ci};
39e0dac50fSopenharmony_ci
40e0dac50fSopenharmony_cisptr<AbstractScreen> AbstractScreenTest::absScreen_ = nullptr;
41e0dac50fSopenharmony_cisptr<AbstractScreenGroup> AbstractScreenTest::absScreenGroup_ = nullptr;
42e0dac50fSopenharmony_cistd::recursive_mutex AbstractScreenTest::mutex_;
43e0dac50fSopenharmony_cistd::string AbstractScreenTest::name_ = "AbstractScreenTest";
44e0dac50fSopenharmony_ci
45e0dac50fSopenharmony_civoid AbstractScreenTest::SetUpTestCase()
46e0dac50fSopenharmony_ci{
47e0dac50fSopenharmony_ci    sptr<AbstractScreenController> absScreenController = new AbstractScreenController(mutex_);
48e0dac50fSopenharmony_ci    absScreen_ = new AbstractScreen(absScreenController, name_, 0, 0);
49e0dac50fSopenharmony_ci    absScreenGroup_ = new AbstractScreenGroup(absScreenController,
50e0dac50fSopenharmony_ci        0, 0, name_, ScreenCombination::SCREEN_ALONE);
51e0dac50fSopenharmony_ci    absScreen_->modes_.clear();
52e0dac50fSopenharmony_ci    absScreen_->activeIdx_ = 0;
53e0dac50fSopenharmony_ci}
54e0dac50fSopenharmony_ci
55e0dac50fSopenharmony_civoid AbstractScreenTest::TearDownTestCase()
56e0dac50fSopenharmony_ci{
57e0dac50fSopenharmony_ci}
58e0dac50fSopenharmony_ci
59e0dac50fSopenharmony_civoid AbstractScreenTest::SetUp()
60e0dac50fSopenharmony_ci{
61e0dac50fSopenharmony_ci}
62e0dac50fSopenharmony_ci
63e0dac50fSopenharmony_civoid AbstractScreenTest::TearDown()
64e0dac50fSopenharmony_ci{
65e0dac50fSopenharmony_ci}
66e0dac50fSopenharmony_ci
67e0dac50fSopenharmony_cinamespace {
68e0dac50fSopenharmony_ci/**
69e0dac50fSopenharmony_ci * @tc.name: GetScreenMode
70e0dac50fSopenharmony_ci * @tc.desc: Get screen mode
71e0dac50fSopenharmony_ci * @tc.type: FUNC
72e0dac50fSopenharmony_ci */
73e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, GetScreenMode, Function | SmallTest | Level3)
74e0dac50fSopenharmony_ci{
75e0dac50fSopenharmony_ci    sptr<SupportedScreenModes> mode0 = new SupportedScreenModes();
76e0dac50fSopenharmony_ci    sptr<SupportedScreenModes> mode1 = new SupportedScreenModes();
77e0dac50fSopenharmony_ci    absScreen_->modes_ = {mode0, mode1};
78e0dac50fSopenharmony_ci
79e0dac50fSopenharmony_ci    absScreen_->activeIdx_ = -1;
80e0dac50fSopenharmony_ci    ASSERT_EQ(nullptr, absScreen_->GetActiveScreenMode());
81e0dac50fSopenharmony_ci    absScreen_->activeIdx_ = static_cast<int32_t>(absScreen_->modes_.size());
82e0dac50fSopenharmony_ci    ASSERT_EQ(nullptr, absScreen_->GetActiveScreenMode());
83e0dac50fSopenharmony_ci    absScreen_->activeIdx_ = 0;
84e0dac50fSopenharmony_ci    ASSERT_EQ(mode0, absScreen_->GetActiveScreenMode());
85e0dac50fSopenharmony_ci    absScreen_->activeIdx_ = 1;
86e0dac50fSopenharmony_ci    ASSERT_EQ(mode1, absScreen_->GetActiveScreenMode());
87e0dac50fSopenharmony_ci
88e0dac50fSopenharmony_ci    ASSERT_EQ(mode0, (absScreen_->GetAbstractScreenModes())[0]);
89e0dac50fSopenharmony_ci    ASSERT_EQ(mode1, (absScreen_->GetAbstractScreenModes())[1]);
90e0dac50fSopenharmony_ci}
91e0dac50fSopenharmony_ci/**
92e0dac50fSopenharmony_ci * @tc.name: ConvertToScreenInfo
93e0dac50fSopenharmony_ci * @tc.desc: Convert to screen info
94e0dac50fSopenharmony_ci * @tc.type: FUNC
95e0dac50fSopenharmony_ci */
96e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, ConvertToScreenInfo, Function | SmallTest | Level3)
97e0dac50fSopenharmony_ci{
98e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->ConvertToScreenInfo());
99e0dac50fSopenharmony_ci}
100e0dac50fSopenharmony_ci/**
101e0dac50fSopenharmony_ci * @tc.name: RSTree
102e0dac50fSopenharmony_ci * @tc.desc: RS tree
103e0dac50fSopenharmony_ci * @tc.type: FUNC
104e0dac50fSopenharmony_ci */
105e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, RSTree, Function | SmallTest | Level3)
106e0dac50fSopenharmony_ci{
107e0dac50fSopenharmony_ci    std::shared_ptr<RSSurfaceNode> surfaceNode;
108e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
109e0dac50fSopenharmony_ci    absScreen_->UpdateRSTree(surfaceNode, true);
110e0dac50fSopenharmony_ci    absScreen_->UpdateDisplayGroupRSTree(surfaceNode, 0, true);
111e0dac50fSopenharmony_ci
112e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
113e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
114e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
115e0dac50fSopenharmony_ci    absScreen_->UpdateRSTree(surfaceNode, true);
116e0dac50fSopenharmony_ci    absScreen_->UpdateDisplayGroupRSTree(surfaceNode, 0, true);
117e0dac50fSopenharmony_ci
118e0dac50fSopenharmony_ci    struct RSSurfaceNodeConfig rsSurfaceNodeConfig;
119e0dac50fSopenharmony_ci    surfaceNode = RSSurfaceNode::Create(rsSurfaceNodeConfig, RSSurfaceNodeType::DEFAULT);
120e0dac50fSopenharmony_ci    absScreen_->UpdateRSTree(surfaceNode, true);
121e0dac50fSopenharmony_ci    absScreen_->UpdateDisplayGroupRSTree(surfaceNode, 0, false);
122e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
123e0dac50fSopenharmony_ci
124e0dac50fSopenharmony_ci    absScreen_->UpdateRSTree(surfaceNode, false);
125e0dac50fSopenharmony_ci    absScreen_->UpdateDisplayGroupRSTree(surfaceNode, 0, false);
126e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
127e0dac50fSopenharmony_ci
128e0dac50fSopenharmony_ci    absScreen_->UpdateRSTree(surfaceNode, false, false);
129e0dac50fSopenharmony_ci    absScreen_->UpdateDisplayGroupRSTree(surfaceNode, 0, false);
130e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
131e0dac50fSopenharmony_ci
132e0dac50fSopenharmony_ci    absScreen_->UpdateRSTree(surfaceNode, false, false);
133e0dac50fSopenharmony_ci    absScreen_->UpdateDisplayGroupRSTree(surfaceNode, 0, true);
134e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
135e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
136e0dac50fSopenharmony_ci}
137e0dac50fSopenharmony_ci
138e0dac50fSopenharmony_ci
139e0dac50fSopenharmony_ci/**
140e0dac50fSopenharmony_ci * @tc.name: InitRSDisplayNode
141e0dac50fSopenharmony_ci * @tc.desc: InitRSDisplayNode
142e0dac50fSopenharmony_ci * @tc.type: FUNC
143e0dac50fSopenharmony_ci */
144e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, InitRSDisplayNode, Function | SmallTest | Level3)
145e0dac50fSopenharmony_ci{
146e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
147e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
148e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
149e0dac50fSopenharmony_ci
150e0dac50fSopenharmony_ci    RSDisplayNodeConfig config_;
151e0dac50fSopenharmony_ci    Point startPoint;
152e0dac50fSopenharmony_ci    absScreen_->InitRSDisplayNode(config_, startPoint);
153e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
154e0dac50fSopenharmony_ci}
155e0dac50fSopenharmony_ci
156e0dac50fSopenharmony_ci/**
157e0dac50fSopenharmony_ci * @tc.name: InitRSDefaultDisplayNode
158e0dac50fSopenharmony_ci * @tc.desc: InitRSDefaultDisplayNode
159e0dac50fSopenharmony_ci * @tc.type: FUNC
160e0dac50fSopenharmony_ci */
161e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, InitRSDefaultDisplayNode, Function | SmallTest | Level3)
162e0dac50fSopenharmony_ci{
163e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
164e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
165e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
166e0dac50fSopenharmony_ci
167e0dac50fSopenharmony_ci    RSDisplayNodeConfig config_;
168e0dac50fSopenharmony_ci    Point startPoint;
169e0dac50fSopenharmony_ci    absScreen_->InitRSDefaultDisplayNode(config_, startPoint);
170e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
171e0dac50fSopenharmony_ci}
172e0dac50fSopenharmony_ci
173e0dac50fSopenharmony_ci/**
174e0dac50fSopenharmony_ci * @tc.name: SetScreenColorGamut
175e0dac50fSopenharmony_ci * @tc.desc: SetScreenColorGamut
176e0dac50fSopenharmony_ci * @tc.type: FUNC
177e0dac50fSopenharmony_ci */
178e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, SetScreenColorGamut, Function | SmallTest | Level3)
179e0dac50fSopenharmony_ci{
180e0dac50fSopenharmony_ci    int32_t colorGamutIdx = 0;
181e0dac50fSopenharmony_ci    auto result = absScreen_->SetScreenColorGamut(colorGamutIdx);
182e0dac50fSopenharmony_ci    ASSERT_EQ(result, DMError::DM_ERROR_RENDER_SERVICE_FAILED);
183e0dac50fSopenharmony_ci}
184e0dac50fSopenharmony_ci
185e0dac50fSopenharmony_ci/**
186e0dac50fSopenharmony_ci * @tc.name: ColorGamut
187e0dac50fSopenharmony_ci * @tc.desc: Screen color gamut
188e0dac50fSopenharmony_ci * @tc.type: FUNC
189e0dac50fSopenharmony_ci */
190e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, ColorGamut, Function | SmallTest | Level3)
191e0dac50fSopenharmony_ci{
192e0dac50fSopenharmony_ci    sptr<AbstractScreenController> absScreenController0 = new AbstractScreenController(mutex_);
193e0dac50fSopenharmony_ci    sptr<AbstractScreen> absScreen0 = new AbstractScreen(absScreenController0, name_, 0, -1ULL);
194e0dac50fSopenharmony_ci    std::vector<ScreenColorGamut> colorGamuts;
195e0dac50fSopenharmony_ci    ASSERT_EQ(DMError::DM_ERROR_RENDER_SERVICE_FAILED, absScreen0->GetScreenSupportedColorGamuts(colorGamuts));
196e0dac50fSopenharmony_ci    ScreenColorGamut colorGamut;
197e0dac50fSopenharmony_ci    ASSERT_EQ(DMError::DM_ERROR_RENDER_SERVICE_FAILED, absScreen0->GetScreenColorGamut(colorGamut));
198e0dac50fSopenharmony_ci
199e0dac50fSopenharmony_ci    ASSERT_EQ(DMError::DM_ERROR_RENDER_SERVICE_FAILED, absScreen0->SetScreenColorGamut(0));
200e0dac50fSopenharmony_ci
201e0dac50fSopenharmony_ci    ScreenGamutMap gamutMap;
202e0dac50fSopenharmony_ci    ASSERT_EQ(DMError::DM_ERROR_RENDER_SERVICE_FAILED, absScreen0->GetScreenGamutMap(gamutMap));
203e0dac50fSopenharmony_ci
204e0dac50fSopenharmony_ci    gamutMap = ScreenGamutMap::GAMUT_MAP_HDR_EXTENSION;
205e0dac50fSopenharmony_ci    ASSERT_EQ(DMError::DM_ERROR_RENDER_SERVICE_FAILED, absScreen0->GetScreenGamutMap(gamutMap));
206e0dac50fSopenharmony_ci}
207e0dac50fSopenharmony_ci/**
208e0dac50fSopenharmony_ci * @tc.name: FillScreenInfo
209e0dac50fSopenharmony_ci * @tc.desc: Fill screen info
210e0dac50fSopenharmony_ci * @tc.type: FUNC
211e0dac50fSopenharmony_ci */
212e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, FillScreenInfo, Function | SmallTest | Level3)
213e0dac50fSopenharmony_ci{
214e0dac50fSopenharmony_ci    absScreen_->FillScreenInfo(nullptr);
215e0dac50fSopenharmony_ci    sptr<ScreenInfo> info = new ScreenInfo();
216e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, info);
217e0dac50fSopenharmony_ci
218e0dac50fSopenharmony_ci    absScreen_->virtualPixelRatio_ = 0.f;
219e0dac50fSopenharmony_ci    absScreen_->FillScreenInfo(info);
220e0dac50fSopenharmony_ci    ASSERT_EQ(1.f, info->virtualPixelRatio_);
221e0dac50fSopenharmony_ci
222e0dac50fSopenharmony_ci    absScreen_->virtualPixelRatio_ = 2.f;
223e0dac50fSopenharmony_ci    absScreen_->FillScreenInfo(info);
224e0dac50fSopenharmony_ci    ASSERT_EQ(2.f, info->virtualPixelRatio_);
225e0dac50fSopenharmony_ci}
226e0dac50fSopenharmony_ci/**
227e0dac50fSopenharmony_ci * @tc.name: CalcRotation
228e0dac50fSopenharmony_ci * @tc.desc: Calc rotation
229e0dac50fSopenharmony_ci * @tc.type: FUNC
230e0dac50fSopenharmony_ci */
231e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, CalcRotation, Function | SmallTest | Level3)
232e0dac50fSopenharmony_ci{
233e0dac50fSopenharmony_ci    absScreen_->modes_.clear();
234e0dac50fSopenharmony_ci    absScreen_->activeIdx_ = 0;
235e0dac50fSopenharmony_ci
236e0dac50fSopenharmony_ci    ASSERT_EQ(Rotation::ROTATION_0, absScreen_->CalcRotation(Orientation::UNSPECIFIED));
237e0dac50fSopenharmony_ci
238e0dac50fSopenharmony_ci    sptr<SupportedScreenModes> mode = new SupportedScreenModes();
239e0dac50fSopenharmony_ci    mode->width_ = 1;
240e0dac50fSopenharmony_ci    mode->height_ = 1;
241e0dac50fSopenharmony_ci    absScreen_->modes_ = {mode};
242e0dac50fSopenharmony_ci
243e0dac50fSopenharmony_ci    ASSERT_EQ(Rotation::ROTATION_0, absScreen_->CalcRotation(Orientation::UNSPECIFIED));
244e0dac50fSopenharmony_ci    ASSERT_EQ(Rotation::ROTATION_90, absScreen_->CalcRotation(Orientation::VERTICAL));
245e0dac50fSopenharmony_ci    ASSERT_EQ(Rotation::ROTATION_0, absScreen_->CalcRotation(Orientation::HORIZONTAL));
246e0dac50fSopenharmony_ci    ASSERT_EQ(Rotation::ROTATION_270, absScreen_->CalcRotation(Orientation::REVERSE_VERTICAL));
247e0dac50fSopenharmony_ci    ASSERT_EQ(Rotation::ROTATION_180, absScreen_->CalcRotation(Orientation::REVERSE_HORIZONTAL));
248e0dac50fSopenharmony_ci    ASSERT_EQ(Rotation::ROTATION_0, absScreen_->CalcRotation(Orientation::LOCKED));
249e0dac50fSopenharmony_ci}
250e0dac50fSopenharmony_ci
251e0dac50fSopenharmony_ci/**
252e0dac50fSopenharmony_ci * @tc.name: GetScreenGroupId
253e0dac50fSopenharmony_ci * @tc.desc: get screen groupId
254e0dac50fSopenharmony_ci * @tc.type: FUNC
255e0dac50fSopenharmony_ci */
256e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, GetScreenGroupId, Function | SmallTest | Level3)
257e0dac50fSopenharmony_ci{
258e0dac50fSopenharmony_ci    ScreenId result = absScreen_->GetScreenGroupId();
259e0dac50fSopenharmony_ci    EXPECT_EQ(result, SCREEN_ID_INVALID);
260e0dac50fSopenharmony_ci    absScreen_->groupDmsId_ = 10086;
261e0dac50fSopenharmony_ci    result = absScreen_->GetScreenGroupId();
262e0dac50fSopenharmony_ci    EXPECT_EQ(result, 10086);
263e0dac50fSopenharmony_ci}
264e0dac50fSopenharmony_ci
265e0dac50fSopenharmony_ci/**
266e0dac50fSopenharmony_ci * @tc.name: SetScreenGamutMap
267e0dac50fSopenharmony_ci * @tc.desc: set screen gamut map
268e0dac50fSopenharmony_ci * @tc.type: FUNC
269e0dac50fSopenharmony_ci */
270e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, SetScreenGamutMap, Function | SmallTest | Level3)
271e0dac50fSopenharmony_ci{
272e0dac50fSopenharmony_ci    ScreenGamutMap gamutMap = ScreenGamutMap::GAMUT_MAP_HDR_CONSTANT;
273e0dac50fSopenharmony_ci    DMError result = absScreen_->SetScreenGamutMap(gamutMap);
274e0dac50fSopenharmony_ci    EXPECT_EQ(result, DMError::DM_ERROR_RENDER_SERVICE_FAILED);
275e0dac50fSopenharmony_ci
276e0dac50fSopenharmony_ci    gamutMap = static_cast<ScreenGamutMap>(static_cast<uint32_t>(ScreenGamutMap::GAMUT_MAP_HDR_EXTENSION) + 1);
277e0dac50fSopenharmony_ci    result = absScreen_->SetScreenGamutMap(gamutMap);
278e0dac50fSopenharmony_ci    EXPECT_EQ(result, DMError::DM_ERROR_INVALID_PARAM);
279e0dac50fSopenharmony_ci}
280e0dac50fSopenharmony_ci
281e0dac50fSopenharmony_ci/**
282e0dac50fSopenharmony_ci * @tc.name: SetScreenColorTransform
283e0dac50fSopenharmony_ci * @tc.desc: set screen color transform
284e0dac50fSopenharmony_ci * @tc.type: FUNC
285e0dac50fSopenharmony_ci */
286e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, SetScreenColorTransform, Function | SmallTest | Level3)
287e0dac50fSopenharmony_ci{
288e0dac50fSopenharmony_ci    DMError result = absScreen_->SetScreenColorTransform();
289e0dac50fSopenharmony_ci    EXPECT_EQ(result, DMError::DM_OK);
290e0dac50fSopenharmony_ci}
291e0dac50fSopenharmony_ci
292e0dac50fSopenharmony_ci/**
293e0dac50fSopenharmony_ci * @tc.name: GetVirtualPixelRatio
294e0dac50fSopenharmony_ci * @tc.desc: get virtual pixel ratio
295e0dac50fSopenharmony_ci * @tc.type: FUNC
296e0dac50fSopenharmony_ci */
297e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, GetVirtualPixelRatio, Function | SmallTest | Level3)
298e0dac50fSopenharmony_ci{
299e0dac50fSopenharmony_ci    float result = absScreen_->GetVirtualPixelRatio();
300e0dac50fSopenharmony_ci    EXPECT_EQ(result, 2.0f);
301e0dac50fSopenharmony_ci}
302e0dac50fSopenharmony_ci
303e0dac50fSopenharmony_ci/**
304e0dac50fSopenharmony_ci * @tc.name: GetSourceMode
305e0dac50fSopenharmony_ci * @tc.desc: get source mode
306e0dac50fSopenharmony_ci * @tc.type: FUNC
307e0dac50fSopenharmony_ci */
308e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, GetSourceMode, Function | SmallTest | Level3)
309e0dac50fSopenharmony_ci{
310e0dac50fSopenharmony_ci    absScreenGroup_->combination_ = ScreenCombination::SCREEN_MIRROR;
311e0dac50fSopenharmony_ci    absScreen_->screenController_->dmsScreenGroupMap_.insert({10086, absScreenGroup_});
312e0dac50fSopenharmony_ci    absScreen_->groupDmsId_ = 10086;
313e0dac50fSopenharmony_ci    ScreenSourceMode result = absScreen_->GetSourceMode();
314e0dac50fSopenharmony_ci    EXPECT_EQ(result, ScreenSourceMode::SCREEN_MAIN);
315e0dac50fSopenharmony_ci
316e0dac50fSopenharmony_ci    absScreen_->screenController_->defaultRsScreenId_ = 144;
317e0dac50fSopenharmony_ci    result = absScreen_->GetSourceMode();
318e0dac50fSopenharmony_ci    EXPECT_EQ(result, ScreenSourceMode::SCREEN_MIRROR);
319e0dac50fSopenharmony_ci    absScreenGroup_->combination_ = ScreenCombination::SCREEN_EXPAND;
320e0dac50fSopenharmony_ci    result = absScreen_->GetSourceMode();
321e0dac50fSopenharmony_ci    EXPECT_EQ(result, ScreenSourceMode::SCREEN_EXTEND);
322e0dac50fSopenharmony_ci    absScreenGroup_->combination_ = ScreenCombination::SCREEN_ALONE;
323e0dac50fSopenharmony_ci    result = absScreen_->GetSourceMode();
324e0dac50fSopenharmony_ci    EXPECT_EQ(result, ScreenSourceMode::SCREEN_ALONE);
325e0dac50fSopenharmony_ci
326e0dac50fSopenharmony_ci    sptr<AbstractScreenController> absScreenController = new AbstractScreenController(mutex_);
327e0dac50fSopenharmony_ci    sptr<AbstractScreen> absScreenTest = new AbstractScreen(absScreenController, name_, 0, 0);
328e0dac50fSopenharmony_ci    result = absScreenTest->GetSourceMode();
329e0dac50fSopenharmony_ci    EXPECT_EQ(result, ScreenSourceMode::SCREEN_ALONE);
330e0dac50fSopenharmony_ci}
331e0dac50fSopenharmony_ci
332e0dac50fSopenharmony_ci/**
333e0dac50fSopenharmony_ci * @tc.name: ConvertToScreenGroupInfo
334e0dac50fSopenharmony_ci * @tc.desc: convert to screen group info
335e0dac50fSopenharmony_ci * @tc.type: FUNC
336e0dac50fSopenharmony_ci */
337e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, ConvertToScreenGroupInfo, Function | SmallTest | Level3)
338e0dac50fSopenharmony_ci{
339e0dac50fSopenharmony_ci    Point point_(159, 357);
340e0dac50fSopenharmony_ci    absScreen_->startPoint_ = point_;
341e0dac50fSopenharmony_ci    (absScreenGroup_->screenMap_).insert({10086, absScreen_});
342e0dac50fSopenharmony_ci    sptr<ScreenGroupInfo> result = absScreenGroup_->ConvertToScreenGroupInfo();
343e0dac50fSopenharmony_ci    EXPECT_EQ(result->children_[0], 10086);
344e0dac50fSopenharmony_ci}
345e0dac50fSopenharmony_ci
346e0dac50fSopenharmony_ci/**
347e0dac50fSopenharmony_ci * @tc.name: GetRSDisplayNodeConfig01
348e0dac50fSopenharmony_ci * @tc.desc: Get RSDisplay node config
349e0dac50fSopenharmony_ci * @tc.type: FUNC
350e0dac50fSopenharmony_ci */
351e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, GetRSDisplayNodeConfig01, Function | SmallTest | Level3)
352e0dac50fSopenharmony_ci{
353e0dac50fSopenharmony_ci    sptr<AbstractScreen> absTest = nullptr;
354e0dac50fSopenharmony_ci    RSDisplayNodeConfig config_;
355e0dac50fSopenharmony_ci    bool result = absScreenGroup_->GetRSDisplayNodeConfig(absTest, config_);
356e0dac50fSopenharmony_ci    EXPECT_FALSE(result);
357e0dac50fSopenharmony_ci
358e0dac50fSopenharmony_ci    absScreenGroup_->combination_ = ScreenCombination::SCREEN_ALONE;
359e0dac50fSopenharmony_ci    result = absScreenGroup_->GetRSDisplayNodeConfig(absTest, config_);
360e0dac50fSopenharmony_ci    EXPECT_FALSE(result);
361e0dac50fSopenharmony_ci
362e0dac50fSopenharmony_ci    absScreenGroup_->combination_ = ScreenCombination::SCREEN_MIRROR;
363e0dac50fSopenharmony_ci    absScreenGroup_->mirrorScreenId_ = 0;
364e0dac50fSopenharmony_ci    result = absScreenGroup_->GetRSDisplayNodeConfig(absTest, config_);
365e0dac50fSopenharmony_ci    EXPECT_FALSE(result);
366e0dac50fSopenharmony_ci    Point point_(159, 357);
367e0dac50fSopenharmony_ci    absScreen_->startPoint_ = point_;
368e0dac50fSopenharmony_ci    (absScreenGroup_->screenMap_).insert({10086, absScreen_});
369e0dac50fSopenharmony_ci    absScreenGroup_->mirrorScreenId_ = 10086;
370e0dac50fSopenharmony_ci    EXPECT_FALSE(result);
371e0dac50fSopenharmony_ci}
372e0dac50fSopenharmony_ci
373e0dac50fSopenharmony_ci/**
374e0dac50fSopenharmony_ci * @tc.name: GetRSDisplayNodeConfig01
375e0dac50fSopenharmony_ci * @tc.desc: Get RSDisplay node config
376e0dac50fSopenharmony_ci * @tc.type: FUNC
377e0dac50fSopenharmony_ci */
378e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, GetRSDisplayNodeConfig02, Function | SmallTest | Level3)
379e0dac50fSopenharmony_ci{
380e0dac50fSopenharmony_ci    sptr<AbstractScreen> absTest = absScreen_;
381e0dac50fSopenharmony_ci    RSDisplayNodeConfig config_;
382e0dac50fSopenharmony_ci
383e0dac50fSopenharmony_ci    absScreenGroup_->combination_ = ScreenCombination::SCREEN_ALONE;
384e0dac50fSopenharmony_ci    bool result = absScreenGroup_->GetRSDisplayNodeConfig(absTest, config_);
385e0dac50fSopenharmony_ci    EXPECT_EQ(true, result);
386e0dac50fSopenharmony_ci
387e0dac50fSopenharmony_ci    absScreenGroup_->combination_ = ScreenCombination::SCREEN_EXPAND;
388e0dac50fSopenharmony_ci    result = absScreenGroup_->GetRSDisplayNodeConfig(absTest, config_);
389e0dac50fSopenharmony_ci    EXPECT_EQ(true, result);
390e0dac50fSopenharmony_ci
391e0dac50fSopenharmony_ci    absScreenGroup_->combination_ = ScreenCombination::SCREEN_MIRROR;
392e0dac50fSopenharmony_ci    absScreenGroup_->mirrorScreenId_ = 0;
393e0dac50fSopenharmony_ci    result = absScreenGroup_->GetRSDisplayNodeConfig(absTest, config_);
394e0dac50fSopenharmony_ci    EXPECT_EQ(true, result);
395e0dac50fSopenharmony_ci    Point point_(159, 357);
396e0dac50fSopenharmony_ci    absScreen_->startPoint_ = point_;
397e0dac50fSopenharmony_ci    (absScreenGroup_->screenMap_).insert({10086, absScreen_});
398e0dac50fSopenharmony_ci    absScreenGroup_->mirrorScreenId_ = 10086;
399e0dac50fSopenharmony_ci    EXPECT_EQ(true, result);
400e0dac50fSopenharmony_ci}
401e0dac50fSopenharmony_ci
402e0dac50fSopenharmony_ci/**
403e0dac50fSopenharmony_ci * @tc.name: GetChildPosition
404e0dac50fSopenharmony_ci * @tc.desc: GetChildPosition
405e0dac50fSopenharmony_ci * @tc.type: FUNC
406e0dac50fSopenharmony_ci */
407e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, GetChildPosition, Function | SmallTest | Level3)
408e0dac50fSopenharmony_ci{
409e0dac50fSopenharmony_ci    ScreenId screenId = -1;
410e0dac50fSopenharmony_ci    absScreenGroup_->GetChildPosition(screenId);
411e0dac50fSopenharmony_ci    ASSERT_EQ(screenId, -1);
412e0dac50fSopenharmony_ci
413e0dac50fSopenharmony_ci    screenId = 1;
414e0dac50fSopenharmony_ci    absScreenGroup_->GetChildPosition(screenId);
415e0dac50fSopenharmony_ci    ASSERT_EQ(screenId, 1);
416e0dac50fSopenharmony_ci}
417e0dac50fSopenharmony_ci
418e0dac50fSopenharmony_ci
419e0dac50fSopenharmony_ci/**
420e0dac50fSopenharmony_ci * @tc.name: AddChild01
421e0dac50fSopenharmony_ci * @tc.desc: Add child
422e0dac50fSopenharmony_ci * @tc.type: FUNC
423e0dac50fSopenharmony_ci */
424e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, AddChild01, Function | SmallTest | Level3)
425e0dac50fSopenharmony_ci{
426e0dac50fSopenharmony_ci    absScreenGroup_->screenMap_.clear();
427e0dac50fSopenharmony_ci    sptr<AbstractScreen> absTest = nullptr;
428e0dac50fSopenharmony_ci    Point point_(159, 357);
429e0dac50fSopenharmony_ci    bool result = absScreenGroup_->AddChild(absTest, point_);
430e0dac50fSopenharmony_ci    EXPECT_FALSE(result);
431e0dac50fSopenharmony_ci
432e0dac50fSopenharmony_ci    absScreenGroup_->mirrorScreenId_ = 10086;
433e0dac50fSopenharmony_ci    absScreenGroup_->combination_ = ScreenCombination::SCREEN_MIRROR;
434e0dac50fSopenharmony_ci    result = absScreenGroup_->AddChild(absScreen_, point_);
435e0dac50fSopenharmony_ci    ASSERT_TRUE(result);
436e0dac50fSopenharmony_ci    absScreenGroup_->combination_ = ScreenCombination::SCREEN_EXPAND;
437e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
438e0dac50fSopenharmony_ci    result = absScreenGroup_->AddChild(absScreen_, point_);
439e0dac50fSopenharmony_ci    EXPECT_FALSE(result);
440e0dac50fSopenharmony_ci
441e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
442e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
443e0dac50fSopenharmony_ci    absScreen_->type_ = ScreenType::REAL;
444e0dac50fSopenharmony_ci    absScreenGroup_->defaultScreenId_ = 0;
445e0dac50fSopenharmony_ci    result = absScreenGroup_->AddChild(absScreen_, point_);
446e0dac50fSopenharmony_ci    ASSERT_TRUE(result);
447e0dac50fSopenharmony_ci}
448e0dac50fSopenharmony_ci
449e0dac50fSopenharmony_ci/**
450e0dac50fSopenharmony_ci * @tc.name: AddChild02
451e0dac50fSopenharmony_ci * @tc.desc: Add child
452e0dac50fSopenharmony_ci * @tc.type: FUNC
453e0dac50fSopenharmony_ci */
454e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, AddChild02, Function | SmallTest | Level3)
455e0dac50fSopenharmony_ci{
456e0dac50fSopenharmony_ci    absScreenGroup_->screenMap_.clear();
457e0dac50fSopenharmony_ci    Point point_(159, 357);
458e0dac50fSopenharmony_ci    absScreenGroup_->mirrorScreenId_ = 10086;
459e0dac50fSopenharmony_ci    absScreenGroup_->combination_ = ScreenCombination::SCREEN_MIRROR;
460e0dac50fSopenharmony_ci    absScreen_->startPoint_ = point_;
461e0dac50fSopenharmony_ci    (absScreenGroup_->screenMap_).insert({0, absScreen_});
462e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
463e0dac50fSopenharmony_ci    bool result = absScreenGroup_->AddChild(absScreen_, point_);
464e0dac50fSopenharmony_ci    EXPECT_FALSE(result);
465e0dac50fSopenharmony_ci
466e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
467e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
468e0dac50fSopenharmony_ci    absScreen_->type_ = ScreenType::REAL;
469e0dac50fSopenharmony_ci    absScreenGroup_->defaultScreenId_ = 0;
470e0dac50fSopenharmony_ci    result = absScreenGroup_->AddChild(absScreen_, point_);
471e0dac50fSopenharmony_ci    ASSERT_TRUE(result);
472e0dac50fSopenharmony_ci}
473e0dac50fSopenharmony_ci
474e0dac50fSopenharmony_ci/**
475e0dac50fSopenharmony_ci * @tc.name: AddChildren
476e0dac50fSopenharmony_ci * @tc.desc: Add children
477e0dac50fSopenharmony_ci * @tc.type: FUNC
478e0dac50fSopenharmony_ci */
479e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, AddChildren, Function | SmallTest | Level3)
480e0dac50fSopenharmony_ci{
481e0dac50fSopenharmony_ci    Point point_(159, 357);
482e0dac50fSopenharmony_ci    std::vector<Point> vecPoint({point_});
483e0dac50fSopenharmony_ci    std::vector<sptr<AbstractScreen>> vecSptr;
484e0dac50fSopenharmony_ci    bool result = absScreenGroup_->AddChildren(vecSptr, vecPoint);
485e0dac50fSopenharmony_ci    EXPECT_FALSE(result);
486e0dac50fSopenharmony_ci
487e0dac50fSopenharmony_ci    vecSptr.push_back(absScreen_);
488e0dac50fSopenharmony_ci    result = absScreenGroup_->AddChildren(vecSptr, vecPoint);
489e0dac50fSopenharmony_ci    ASSERT_TRUE(result);
490e0dac50fSopenharmony_ci}
491e0dac50fSopenharmony_ci
492e0dac50fSopenharmony_ci/**
493e0dac50fSopenharmony_ci * @tc.name: RemoveChild01
494e0dac50fSopenharmony_ci * @tc.desc: Remove child
495e0dac50fSopenharmony_ci * @tc.type: FUNC
496e0dac50fSopenharmony_ci */
497e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, RemoveChild01, Function | SmallTest | Level3)
498e0dac50fSopenharmony_ci{
499e0dac50fSopenharmony_ci    sptr<AbstractScreen> absTest = nullptr;
500e0dac50fSopenharmony_ci    bool result = absScreenGroup_->RemoveChild(absTest);
501e0dac50fSopenharmony_ci    EXPECT_FALSE(result);
502e0dac50fSopenharmony_ci
503e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
504e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
505e0dac50fSopenharmony_ci    result = absScreenGroup_->RemoveChild(absScreen_);
506e0dac50fSopenharmony_ci    EXPECT_TRUE(result);
507e0dac50fSopenharmony_ci}
508e0dac50fSopenharmony_ci
509e0dac50fSopenharmony_ci/**
510e0dac50fSopenharmony_ci * @tc.name: RemoveChild02
511e0dac50fSopenharmony_ci * @tc.desc: Remove child
512e0dac50fSopenharmony_ci * @tc.type: FUNC
513e0dac50fSopenharmony_ci */
514e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, RemoveChild02, Function | SmallTest | Level3)
515e0dac50fSopenharmony_ci{
516e0dac50fSopenharmony_ci    Point point_(159, 357);
517e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
518e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
519e0dac50fSopenharmony_ci    absScreen_->startPoint_ = point_;
520e0dac50fSopenharmony_ci    (absScreenGroup_->screenMap_).insert({0, absScreen_});
521e0dac50fSopenharmony_ci    bool result = absScreenGroup_->RemoveChild(absScreen_);
522e0dac50fSopenharmony_ci    ASSERT_TRUE(result);
523e0dac50fSopenharmony_ci}
524e0dac50fSopenharmony_ci
525e0dac50fSopenharmony_ci/**
526e0dac50fSopenharmony_ci * @tc.name: RemoveDefaultScreen
527e0dac50fSopenharmony_ci * @tc.desc: Remove default screen
528e0dac50fSopenharmony_ci * @tc.type: FUNC
529e0dac50fSopenharmony_ci */
530e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, RemoveDefaultScreen, Function | SmallTest | Level3)
531e0dac50fSopenharmony_ci{
532e0dac50fSopenharmony_ci    sptr<AbstractScreen> absTest = nullptr;
533e0dac50fSopenharmony_ci    bool result = absScreenGroup_->RemoveDefaultScreen(absTest);
534e0dac50fSopenharmony_ci    EXPECT_FALSE(result);
535e0dac50fSopenharmony_ci
536e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
537e0dac50fSopenharmony_ci    result = absScreenGroup_->RemoveDefaultScreen(absScreen_);
538e0dac50fSopenharmony_ci    EXPECT_TRUE(result);
539e0dac50fSopenharmony_ci
540e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
541e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
542e0dac50fSopenharmony_ci    result = absScreenGroup_->RemoveDefaultScreen(absScreen_);
543e0dac50fSopenharmony_ci    ASSERT_TRUE(result);
544e0dac50fSopenharmony_ci}
545e0dac50fSopenharmony_ci
546e0dac50fSopenharmony_ci/**
547e0dac50fSopenharmony_ci * @tc.name: GetChildren
548e0dac50fSopenharmony_ci * @tc.desc: Get children
549e0dac50fSopenharmony_ci * @tc.type: FUNC
550e0dac50fSopenharmony_ci */
551e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, GetChildren, Function | SmallTest | Level3)
552e0dac50fSopenharmony_ci{
553e0dac50fSopenharmony_ci    Point point_(159, 357);
554e0dac50fSopenharmony_ci    absScreen_->startPoint_ = point_;
555e0dac50fSopenharmony_ci    (absScreenGroup_->screenMap_).insert({10086, absScreen_});
556e0dac50fSopenharmony_ci    std::vector<sptr<AbstractScreen>> result = absScreenGroup_->GetChildren();
557e0dac50fSopenharmony_ci    ASSERT_EQ(result[0], absScreen_);
558e0dac50fSopenharmony_ci}
559e0dac50fSopenharmony_ci
560e0dac50fSopenharmony_ci/**
561e0dac50fSopenharmony_ci * @tc.name: GetChildrenPosition
562e0dac50fSopenharmony_ci * @tc.desc: Get children position
563e0dac50fSopenharmony_ci * @tc.type: FUNC
564e0dac50fSopenharmony_ci */
565e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, GetChildrenPosition, Function | SmallTest | Level3)
566e0dac50fSopenharmony_ci{
567e0dac50fSopenharmony_ci    Point point_(159, 357);
568e0dac50fSopenharmony_ci    absScreen_->startPoint_ = point_;
569e0dac50fSopenharmony_ci    (absScreenGroup_->screenMap_).insert({10086, absScreen_});
570e0dac50fSopenharmony_ci    std::vector<Point> result = absScreenGroup_->GetChildrenPosition();
571e0dac50fSopenharmony_ci    EXPECT_EQ(result[0].posX_, 159);
572e0dac50fSopenharmony_ci    EXPECT_EQ(result[0].posY_, 357);
573e0dac50fSopenharmony_ci}
574e0dac50fSopenharmony_ci
575e0dac50fSopenharmony_ci/**
576e0dac50fSopenharmony_ci * @tc.name: ~AbstractScreenGroup
577e0dac50fSopenharmony_ci * @tc.desc: Abstract screen group
578e0dac50fSopenharmony_ci * @tc.type: FUNC
579e0dac50fSopenharmony_ci */
580e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, AbstractScreenGroup, Function | SmallTest | Level3)
581e0dac50fSopenharmony_ci{
582e0dac50fSopenharmony_ci    sptr<AbstractScreenController> absScreenController = new AbstractScreenController(mutex_);
583e0dac50fSopenharmony_ci    absScreenGroup_ = new AbstractScreenGroup(absScreenController,
584e0dac50fSopenharmony_ci        0, 0, name_, ScreenCombination::SCREEN_ALONE);
585e0dac50fSopenharmony_ci    EXPECT_NE(absScreenController, nullptr);
586e0dac50fSopenharmony_ci}
587e0dac50fSopenharmony_ci
588e0dac50fSopenharmony_ci/**
589e0dac50fSopenharmony_ci * @tc.name: AddSurfaceNode
590e0dac50fSopenharmony_ci * @tc.desc: AddSurfaceNode
591e0dac50fSopenharmony_ci * @tc.type: FUNC
592e0dac50fSopenharmony_ci */
593e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, AddSurfaceNode, Function | SmallTest | Level3)
594e0dac50fSopenharmony_ci{
595e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
596e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
597e0dac50fSopenharmony_ci    std::shared_ptr<RSSurfaceNode> surfaceNode;
598e0dac50fSopenharmony_ci    DMError ret = absScreen_->AddSurfaceNode(surfaceNode, true);
599e0dac50fSopenharmony_ci    ASSERT_EQ(ret, DMError::DM_ERROR_NULLPTR);
600e0dac50fSopenharmony_ci
601e0dac50fSopenharmony_ci    struct RSSurfaceNodeConfig rsSurfaceNodeConfig;
602e0dac50fSopenharmony_ci    surfaceNode = RSSurfaceNode::Create(rsSurfaceNodeConfig, RSSurfaceNodeType::DEFAULT);
603e0dac50fSopenharmony_ci
604e0dac50fSopenharmony_ci    ret = absScreen_->AddSurfaceNode(surfaceNode, true);
605e0dac50fSopenharmony_ci    ASSERT_EQ(ret, DMError::DM_OK);
606e0dac50fSopenharmony_ci
607e0dac50fSopenharmony_ci    ret = absScreen_->AddSurfaceNode(surfaceNode, true, false);
608e0dac50fSopenharmony_ci    ASSERT_EQ(ret, DMError::DM_OK);
609e0dac50fSopenharmony_ci
610e0dac50fSopenharmony_ci    ret = absScreen_->AddSurfaceNode(surfaceNode, false);
611e0dac50fSopenharmony_ci    ASSERT_EQ(ret, DMError::DM_OK);
612e0dac50fSopenharmony_ci
613e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
614e0dac50fSopenharmony_ci    ret = absScreen_->AddSurfaceNode(surfaceNode, false);
615e0dac50fSopenharmony_ci    ASSERT_EQ(ret, DMError::DM_ERROR_NULLPTR);
616e0dac50fSopenharmony_ci
617e0dac50fSopenharmony_ci    surfaceNode = nullptr;
618e0dac50fSopenharmony_ci    ret = absScreen_->AddSurfaceNode(surfaceNode, false);
619e0dac50fSopenharmony_ci    ASSERT_EQ(ret, DMError::DM_ERROR_NULLPTR);
620e0dac50fSopenharmony_ci}
621e0dac50fSopenharmony_ci
622e0dac50fSopenharmony_ci/**
623e0dac50fSopenharmony_ci * @tc.name: RemoveSurfaceNode
624e0dac50fSopenharmony_ci * @tc.desc: RemoveSurfaceNode
625e0dac50fSopenharmony_ci * @tc.type: FUNC
626e0dac50fSopenharmony_ci */
627e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, RemoveSurfaceNode, Function | SmallTest | Level3)
628e0dac50fSopenharmony_ci{
629e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
630e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
631e0dac50fSopenharmony_ci    std::shared_ptr<RSSurfaceNode> surfaceNode;
632e0dac50fSopenharmony_ci    DMError ret = absScreen_->RemoveSurfaceNode(surfaceNode);
633e0dac50fSopenharmony_ci    ASSERT_EQ(ret, DMError::DM_ERROR_NULLPTR);
634e0dac50fSopenharmony_ci
635e0dac50fSopenharmony_ci    struct RSSurfaceNodeConfig rsSurfaceNodeConfig;
636e0dac50fSopenharmony_ci    surfaceNode = RSSurfaceNode::Create(rsSurfaceNodeConfig, RSSurfaceNodeType::DEFAULT);
637e0dac50fSopenharmony_ci    ret = absScreen_->RemoveSurfaceNode(surfaceNode);
638e0dac50fSopenharmony_ci    ASSERT_EQ(ret, DMError::DM_ERROR_INVALID_PARAM);
639e0dac50fSopenharmony_ci
640e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
641e0dac50fSopenharmony_ci    ret = absScreen_->RemoveSurfaceNode(surfaceNode);
642e0dac50fSopenharmony_ci    ASSERT_EQ(ret, DMError::DM_ERROR_NULLPTR);
643e0dac50fSopenharmony_ci
644e0dac50fSopenharmony_ci    surfaceNode = nullptr;
645e0dac50fSopenharmony_ci    ret = absScreen_->RemoveSurfaceNode(surfaceNode);
646e0dac50fSopenharmony_ci    ASSERT_EQ(ret, DMError::DM_ERROR_NULLPTR);
647e0dac50fSopenharmony_ci}
648e0dac50fSopenharmony_ci
649e0dac50fSopenharmony_ci/**
650e0dac50fSopenharmony_ci * @tc.name: GetScreenMode
651e0dac50fSopenharmony_ci * @tc.desc: Get screen mode
652e0dac50fSopenharmony_ci * @tc.type: FUNC
653e0dac50fSopenharmony_ci */
654e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, GetScreenMode01, Function | SmallTest | Level3)
655e0dac50fSopenharmony_ci{
656e0dac50fSopenharmony_ci    sptr<SupportedScreenModes> mode0 = new SupportedScreenModes();
657e0dac50fSopenharmony_ci    sptr<SupportedScreenModes> mode1 = new SupportedScreenModes();
658e0dac50fSopenharmony_ci    absScreen_->modes_ = {mode0, mode1};
659e0dac50fSopenharmony_ci
660e0dac50fSopenharmony_ci    absScreen_->activeIdx_ = -1;
661e0dac50fSopenharmony_ci    ASSERT_EQ(nullptr, absScreen_->GetActiveScreenMode());
662e0dac50fSopenharmony_ci    absScreen_->activeIdx_ = static_cast<int32_t>(absScreen_->modes_.size());
663e0dac50fSopenharmony_ci    ASSERT_EQ(nullptr, absScreen_->GetActiveScreenMode());
664e0dac50fSopenharmony_ci    absScreen_->activeIdx_ = 0;
665e0dac50fSopenharmony_ci    ASSERT_EQ(mode0, absScreen_->GetActiveScreenMode());
666e0dac50fSopenharmony_ci    absScreen_->activeIdx_ = 1;
667e0dac50fSopenharmony_ci    ASSERT_EQ(mode1, absScreen_->GetActiveScreenMode());
668e0dac50fSopenharmony_ci
669e0dac50fSopenharmony_ci    ASSERT_EQ(mode0, (absScreen_->GetAbstractScreenModes())[0]);
670e0dac50fSopenharmony_ci    ASSERT_EQ(mode1, (absScreen_->GetAbstractScreenModes())[1]);
671e0dac50fSopenharmony_ci}
672e0dac50fSopenharmony_ci
673e0dac50fSopenharmony_ci/**
674e0dac50fSopenharmony_ci * @tc.name: AddChild
675e0dac50fSopenharmony_ci * @tc.desc: Add child
676e0dac50fSopenharmony_ci * @tc.type: FUNC
677e0dac50fSopenharmony_ci */
678e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, AddChild03, Function | SmallTest | Level3)
679e0dac50fSopenharmony_ci{
680e0dac50fSopenharmony_ci    absScreenGroup_->screenMap_.clear();
681e0dac50fSopenharmony_ci    Point point_(159, 357);
682e0dac50fSopenharmony_ci    absScreenGroup_->mirrorScreenId_ = 10086;
683e0dac50fSopenharmony_ci    absScreenGroup_->combination_ = ScreenCombination::SCREEN_MIRROR;
684e0dac50fSopenharmony_ci    absScreen_->startPoint_ = point_;
685e0dac50fSopenharmony_ci    (absScreenGroup_->screenMap_).insert({0, absScreen_});
686e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
687e0dac50fSopenharmony_ci    bool result = absScreenGroup_->AddChild(absScreen_, point_);
688e0dac50fSopenharmony_ci    EXPECT_FALSE(result);
689e0dac50fSopenharmony_ci
690e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
691e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
692e0dac50fSopenharmony_ci    absScreen_->type_ = ScreenType::REAL;
693e0dac50fSopenharmony_ci    absScreenGroup_->defaultScreenId_ = 0;
694e0dac50fSopenharmony_ci    result = absScreenGroup_->AddChild(absScreen_, point_);
695e0dac50fSopenharmony_ci    ASSERT_TRUE(result);
696e0dac50fSopenharmony_ci}
697e0dac50fSopenharmony_ci
698e0dac50fSopenharmony_ci/**
699e0dac50fSopenharmony_ci * @tc.name: CalcRotation
700e0dac50fSopenharmony_ci * @tc.desc: Calc rotation
701e0dac50fSopenharmony_ci * @tc.type: FUNC
702e0dac50fSopenharmony_ci */
703e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, CalcRotation01, Function | SmallTest | Level3)
704e0dac50fSopenharmony_ci{
705e0dac50fSopenharmony_ci    absScreen_->modes_.clear();
706e0dac50fSopenharmony_ci    absScreen_->activeIdx_ = 0;
707e0dac50fSopenharmony_ci
708e0dac50fSopenharmony_ci    ASSERT_EQ(Rotation::ROTATION_0, absScreen_->CalcRotation(Orientation::UNSPECIFIED));
709e0dac50fSopenharmony_ci
710e0dac50fSopenharmony_ci    sptr<SupportedScreenModes> mode = new SupportedScreenModes();
711e0dac50fSopenharmony_ci    mode->width_ = 1;
712e0dac50fSopenharmony_ci    mode->height_ = 1;
713e0dac50fSopenharmony_ci    absScreen_->modes_ = {mode};
714e0dac50fSopenharmony_ci
715e0dac50fSopenharmony_ci    ASSERT_EQ(Rotation::ROTATION_0, absScreen_->CalcRotation(Orientation::UNSPECIFIED));
716e0dac50fSopenharmony_ci    ASSERT_EQ(Rotation::ROTATION_90, absScreen_->CalcRotation(Orientation::VERTICAL));
717e0dac50fSopenharmony_ci    ASSERT_EQ(Rotation::ROTATION_0, absScreen_->CalcRotation(Orientation::HORIZONTAL));
718e0dac50fSopenharmony_ci    ASSERT_EQ(Rotation::ROTATION_270, absScreen_->CalcRotation(Orientation::REVERSE_VERTICAL));
719e0dac50fSopenharmony_ci    ASSERT_EQ(Rotation::ROTATION_180, absScreen_->CalcRotation(Orientation::REVERSE_HORIZONTAL));
720e0dac50fSopenharmony_ci    ASSERT_EQ(Rotation::ROTATION_0, absScreen_->CalcRotation(Orientation::LOCKED));
721e0dac50fSopenharmony_ci}
722e0dac50fSopenharmony_ci
723e0dac50fSopenharmony_ci/**
724e0dac50fSopenharmony_ci * @tc.name: RemoveDefaultScreen
725e0dac50fSopenharmony_ci * @tc.desc: Remove default screen
726e0dac50fSopenharmony_ci * @tc.type: FUNC
727e0dac50fSopenharmony_ci */
728e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, RemoveDefaultScreen02, Function | SmallTest | Level3)
729e0dac50fSopenharmony_ci{
730e0dac50fSopenharmony_ci    sptr<AbstractScreen> absTest = nullptr;
731e0dac50fSopenharmony_ci    bool result = absScreenGroup_->RemoveDefaultScreen(absTest);
732e0dac50fSopenharmony_ci    EXPECT_FALSE(result);
733e0dac50fSopenharmony_ci
734e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
735e0dac50fSopenharmony_ci    result = absScreenGroup_->RemoveDefaultScreen(absScreen_);
736e0dac50fSopenharmony_ci    EXPECT_TRUE(result);
737e0dac50fSopenharmony_ci
738e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
739e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
740e0dac50fSopenharmony_ci    result = absScreenGroup_->RemoveDefaultScreen(absScreen_);
741e0dac50fSopenharmony_ci    ASSERT_TRUE(result);
742e0dac50fSopenharmony_ci}
743e0dac50fSopenharmony_ci
744e0dac50fSopenharmony_ci/**
745e0dac50fSopenharmony_ci * @tc.name: UpdateRSTree01
746e0dac50fSopenharmony_ci * @tc.desc: UpdateRSTree
747e0dac50fSopenharmony_ci * @tc.type: FUNC
748e0dac50fSopenharmony_ci */
749e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, UpdateRSTree01, Function | SmallTest | Level3)
750e0dac50fSopenharmony_ci{
751e0dac50fSopenharmony_ci    std::shared_ptr<RSSurfaceNode> surfaceNode;
752e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
753e0dac50fSopenharmony_ci    bool isAdd = true;
754e0dac50fSopenharmony_ci    bool needToUpdate = true;
755e0dac50fSopenharmony_ci
756e0dac50fSopenharmony_ci    absScreen_->UpdateRSTree(surfaceNode, isAdd, needToUpdate);
757e0dac50fSopenharmony_ci    ASSERT_EQ(nullptr, absScreen_->rsDisplayNode_);
758e0dac50fSopenharmony_ci}
759e0dac50fSopenharmony_ci
760e0dac50fSopenharmony_ci/**
761e0dac50fSopenharmony_ci * @tc.name: UpdateRSTree02
762e0dac50fSopenharmony_ci * @tc.desc: UpdateRSTree
763e0dac50fSopenharmony_ci * @tc.type: FUNC
764e0dac50fSopenharmony_ci */
765e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, UpdateRSTree02, Function | SmallTest | Level3)
766e0dac50fSopenharmony_ci{
767e0dac50fSopenharmony_ci    std::shared_ptr<RSSurfaceNode> surfaceNode;
768e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
769e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
770e0dac50fSopenharmony_ci    bool isAdd = true;
771e0dac50fSopenharmony_ci    bool needToUpdate = true;
772e0dac50fSopenharmony_ci
773e0dac50fSopenharmony_ci    absScreen_->UpdateRSTree(surfaceNode, isAdd, needToUpdate);
774e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
775e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
776e0dac50fSopenharmony_ci}
777e0dac50fSopenharmony_ci
778e0dac50fSopenharmony_ci/**
779e0dac50fSopenharmony_ci * @tc.name: UpdateRSTree03
780e0dac50fSopenharmony_ci * @tc.desc: UpdateRSTree
781e0dac50fSopenharmony_ci * @tc.type: FUNC
782e0dac50fSopenharmony_ci */
783e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, UpdateRSTree03, Function | SmallTest | Level3)
784e0dac50fSopenharmony_ci{
785e0dac50fSopenharmony_ci    std::shared_ptr<RSSurfaceNode> surfaceNode;
786e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
787e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
788e0dac50fSopenharmony_ci    bool isAdd = true;
789e0dac50fSopenharmony_ci    bool needToUpdate = false;
790e0dac50fSopenharmony_ci
791e0dac50fSopenharmony_ci    absScreen_->UpdateRSTree(surfaceNode, isAdd, needToUpdate);
792e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
793e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
794e0dac50fSopenharmony_ci}
795e0dac50fSopenharmony_ci
796e0dac50fSopenharmony_ci/**
797e0dac50fSopenharmony_ci * @tc.name: UpdateRSTree04
798e0dac50fSopenharmony_ci * @tc.desc: UpdateRSTree
799e0dac50fSopenharmony_ci * @tc.type: FUNC
800e0dac50fSopenharmony_ci */
801e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, UpdateRSTree04, Function | SmallTest | Level3)
802e0dac50fSopenharmony_ci{
803e0dac50fSopenharmony_ci    std::shared_ptr<RSSurfaceNode> surfaceNode;
804e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
805e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
806e0dac50fSopenharmony_ci    bool isAdd = false;
807e0dac50fSopenharmony_ci    bool needToUpdate = false;
808e0dac50fSopenharmony_ci
809e0dac50fSopenharmony_ci    absScreen_->UpdateRSTree(surfaceNode, isAdd, needToUpdate);
810e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
811e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
812e0dac50fSopenharmony_ci}
813e0dac50fSopenharmony_ci
814e0dac50fSopenharmony_ci/**
815e0dac50fSopenharmony_ci * @tc.name: UpdateRSTree05
816e0dac50fSopenharmony_ci * @tc.desc: UpdateRSTree
817e0dac50fSopenharmony_ci * @tc.type: FUNC
818e0dac50fSopenharmony_ci */
819e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, UpdateRSTree05, Function | SmallTest | Level3)
820e0dac50fSopenharmony_ci{
821e0dac50fSopenharmony_ci    std::shared_ptr<RSSurfaceNode> surfaceNode;
822e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
823e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
824e0dac50fSopenharmony_ci    bool isAdd = false;
825e0dac50fSopenharmony_ci    bool needToUpdate = true;
826e0dac50fSopenharmony_ci
827e0dac50fSopenharmony_ci    absScreen_->UpdateRSTree(surfaceNode, isAdd, needToUpdate);
828e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
829e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
830e0dac50fSopenharmony_ci}
831e0dac50fSopenharmony_ci
832e0dac50fSopenharmony_ci/**
833e0dac50fSopenharmony_ci * @tc.name: UpdateRSTree06
834e0dac50fSopenharmony_ci * @tc.desc: UpdateRSTree
835e0dac50fSopenharmony_ci * @tc.type: FUNC
836e0dac50fSopenharmony_ci */
837e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, UpdateRSTree06, Function | SmallTest | Level3)
838e0dac50fSopenharmony_ci{
839e0dac50fSopenharmony_ci    struct RSSurfaceNodeConfig rsSurfaceNodeConfig;
840e0dac50fSopenharmony_ci    std::shared_ptr<RSSurfaceNode> surfaceNode = RSSurfaceNode::Create(rsSurfaceNodeConfig,
841e0dac50fSopenharmony_ci        RSSurfaceNodeType::DEFAULT);
842e0dac50fSopenharmony_ci    bool isAdd = false;
843e0dac50fSopenharmony_ci    bool needToUpdate = true;
844e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
845e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
846e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
847e0dac50fSopenharmony_ci
848e0dac50fSopenharmony_ci    absScreen_->UpdateRSTree(surfaceNode, isAdd, needToUpdate);
849e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
850e0dac50fSopenharmony_ci}
851e0dac50fSopenharmony_ci
852e0dac50fSopenharmony_ci/**
853e0dac50fSopenharmony_ci * @tc.name: UpdateRSTree07
854e0dac50fSopenharmony_ci * @tc.desc: UpdateRSTree
855e0dac50fSopenharmony_ci * @tc.type: FUNC
856e0dac50fSopenharmony_ci */
857e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, UpdateRSTree07, Function | SmallTest | Level3)
858e0dac50fSopenharmony_ci{
859e0dac50fSopenharmony_ci    struct RSSurfaceNodeConfig rsSurfaceNodeConfig;
860e0dac50fSopenharmony_ci    std::shared_ptr<RSSurfaceNode> surfaceNode = RSSurfaceNode::Create(rsSurfaceNodeConfig,
861e0dac50fSopenharmony_ci        RSSurfaceNodeType::DEFAULT);
862e0dac50fSopenharmony_ci    bool isAdd = true;
863e0dac50fSopenharmony_ci    bool needToUpdate = false;
864e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
865e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
866e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
867e0dac50fSopenharmony_ci
868e0dac50fSopenharmony_ci    absScreen_->UpdateRSTree(surfaceNode, isAdd, needToUpdate);
869e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
870e0dac50fSopenharmony_ci}
871e0dac50fSopenharmony_ci
872e0dac50fSopenharmony_ci/**
873e0dac50fSopenharmony_ci * @tc.name: UpdateRSTree08
874e0dac50fSopenharmony_ci * @tc.desc: UpdateRSTree
875e0dac50fSopenharmony_ci * @tc.type: FUNC
876e0dac50fSopenharmony_ci */
877e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, UpdateRSTree08, Function | SmallTest | Level3)
878e0dac50fSopenharmony_ci{
879e0dac50fSopenharmony_ci    struct RSSurfaceNodeConfig rsSurfaceNodeConfig;
880e0dac50fSopenharmony_ci    std::shared_ptr<RSSurfaceNode> surfaceNode = RSSurfaceNode::Create(rsSurfaceNodeConfig,
881e0dac50fSopenharmony_ci        RSSurfaceNodeType::DEFAULT);
882e0dac50fSopenharmony_ci    bool isAdd = false;
883e0dac50fSopenharmony_ci    bool needToUpdate = false;
884e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
885e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
886e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
887e0dac50fSopenharmony_ci
888e0dac50fSopenharmony_ci    absScreen_->UpdateRSTree(surfaceNode, isAdd, needToUpdate);
889e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
890e0dac50fSopenharmony_ci}
891e0dac50fSopenharmony_ci
892e0dac50fSopenharmony_ci/**
893e0dac50fSopenharmony_ci * @tc.name: UpdateRSTree09
894e0dac50fSopenharmony_ci * @tc.desc: UpdateRSTree
895e0dac50fSopenharmony_ci * @tc.type: FUNC
896e0dac50fSopenharmony_ci */
897e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, UpdateRSTree09, Function | SmallTest | Level3)
898e0dac50fSopenharmony_ci{
899e0dac50fSopenharmony_ci    struct RSSurfaceNodeConfig rsSurfaceNodeConfig;
900e0dac50fSopenharmony_ci    std::shared_ptr<RSSurfaceNode> surfaceNode = RSSurfaceNode::Create(rsSurfaceNodeConfig,
901e0dac50fSopenharmony_ci        RSSurfaceNodeType::DEFAULT);
902e0dac50fSopenharmony_ci    bool isAdd = false;
903e0dac50fSopenharmony_ci    bool needToUpdate = true;
904e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
905e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
906e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
907e0dac50fSopenharmony_ci
908e0dac50fSopenharmony_ci    absScreen_->UpdateRSTree(surfaceNode, isAdd, needToUpdate);
909e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
910e0dac50fSopenharmony_ci}
911e0dac50fSopenharmony_ci
912e0dac50fSopenharmony_ci/**
913e0dac50fSopenharmony_ci * @tc.name: UpdateDisplayGroupRSTree01
914e0dac50fSopenharmony_ci * @tc.desc: UpdateDisplayGroupRSTree
915e0dac50fSopenharmony_ci * @tc.type: FUNC
916e0dac50fSopenharmony_ci */
917e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, UpdateDisplayGroupRSTree01, Function | SmallTest | Level3)
918e0dac50fSopenharmony_ci{
919e0dac50fSopenharmony_ci    std::shared_ptr<RSSurfaceNode> surfaceNode;
920e0dac50fSopenharmony_ci    NodeId parentNodeId = 0;
921e0dac50fSopenharmony_ci    bool isAdd = true;
922e0dac50fSopenharmony_ci
923e0dac50fSopenharmony_ci    absScreen_->UpdateDisplayGroupRSTree(surfaceNode, parentNodeId, isAdd);
924e0dac50fSopenharmony_ci    ASSERT_EQ(nullptr, absScreen_->rsDisplayNode_);
925e0dac50fSopenharmony_ci}
926e0dac50fSopenharmony_ci
927e0dac50fSopenharmony_ci/**
928e0dac50fSopenharmony_ci * @tc.name: UpdateDisplayGroupRSTree02
929e0dac50fSopenharmony_ci * @tc.desc: UpdateDisplayGroupRSTree
930e0dac50fSopenharmony_ci * @tc.type: FUNC
931e0dac50fSopenharmony_ci */
932e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, UpdateDisplayGroupRSTree02, Function | SmallTest | Level3)
933e0dac50fSopenharmony_ci{
934e0dac50fSopenharmony_ci    std::shared_ptr<RSSurfaceNode> surfaceNode;
935e0dac50fSopenharmony_ci    NodeId parentNodeId = 0;
936e0dac50fSopenharmony_ci    bool isAdd = true;
937e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
938e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
939e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
940e0dac50fSopenharmony_ci
941e0dac50fSopenharmony_ci    absScreen_->UpdateDisplayGroupRSTree(surfaceNode, parentNodeId, isAdd);
942e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
943e0dac50fSopenharmony_ci}
944e0dac50fSopenharmony_ci
945e0dac50fSopenharmony_ci/**
946e0dac50fSopenharmony_ci * @tc.name: UpdateDisplayGroupRSTree03
947e0dac50fSopenharmony_ci * @tc.desc: UpdateDisplayGroupRSTree
948e0dac50fSopenharmony_ci * @tc.type: FUNC
949e0dac50fSopenharmony_ci */
950e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, UpdateDisplayGroupRSTree03, Function | SmallTest | Level3)
951e0dac50fSopenharmony_ci{
952e0dac50fSopenharmony_ci    struct RSSurfaceNodeConfig rsSurfaceNodeConfig;
953e0dac50fSopenharmony_ci    std::shared_ptr<RSSurfaceNode> surfaceNode = RSSurfaceNode::Create(rsSurfaceNodeConfig,
954e0dac50fSopenharmony_ci        RSSurfaceNodeType::DEFAULT);
955e0dac50fSopenharmony_ci    NodeId parentNodeId = 0;
956e0dac50fSopenharmony_ci    bool isAdd = false;
957e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
958e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
959e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
960e0dac50fSopenharmony_ci
961e0dac50fSopenharmony_ci    absScreen_->UpdateDisplayGroupRSTree(surfaceNode, parentNodeId, isAdd);
962e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
963e0dac50fSopenharmony_ci}
964e0dac50fSopenharmony_ci
965e0dac50fSopenharmony_ci/**
966e0dac50fSopenharmony_ci * @tc.name: UpdateDisplayGroupRSTree04
967e0dac50fSopenharmony_ci * @tc.desc: UpdateDisplayGroupRSTree
968e0dac50fSopenharmony_ci * @tc.type: FUNC
969e0dac50fSopenharmony_ci */
970e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, UpdateDisplayGroupRSTree04, Function | SmallTest | Level3)
971e0dac50fSopenharmony_ci{
972e0dac50fSopenharmony_ci    struct RSSurfaceNodeConfig rsSurfaceNodeConfig;
973e0dac50fSopenharmony_ci    std::shared_ptr<RSSurfaceNode> surfaceNode = RSSurfaceNode::Create(rsSurfaceNodeConfig,
974e0dac50fSopenharmony_ci        RSSurfaceNodeType::DEFAULT);
975e0dac50fSopenharmony_ci    NodeId parentNodeId = 0;
976e0dac50fSopenharmony_ci    bool isAdd = true;
977e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
978e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
979e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
980e0dac50fSopenharmony_ci
981e0dac50fSopenharmony_ci    absScreen_->UpdateDisplayGroupRSTree(surfaceNode, parentNodeId, isAdd);
982e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
983e0dac50fSopenharmony_ci}
984e0dac50fSopenharmony_ci
985e0dac50fSopenharmony_ci/**
986e0dac50fSopenharmony_ci * @tc.name: UpdateDisplayGroupRSTree05
987e0dac50fSopenharmony_ci * @tc.desc: UpdateDisplayGroupRSTree
988e0dac50fSopenharmony_ci * @tc.type: FUNC
989e0dac50fSopenharmony_ci */
990e0dac50fSopenharmony_ciHWTEST_F(AbstractScreenTest, UpdateDisplayGroupRSTree05, Function | SmallTest | Level3)
991e0dac50fSopenharmony_ci{
992e0dac50fSopenharmony_ci    std::shared_ptr<RSSurfaceNode> surfaceNode;
993e0dac50fSopenharmony_ci    NodeId parentNodeId = 0;
994e0dac50fSopenharmony_ci    bool isAdd = false;
995e0dac50fSopenharmony_ci    struct RSDisplayNodeConfig config;
996e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = std::make_shared<RSDisplayNode>(config);
997e0dac50fSopenharmony_ci    ASSERT_NE(nullptr, absScreen_->rsDisplayNode_);
998e0dac50fSopenharmony_ci
999e0dac50fSopenharmony_ci    absScreen_->UpdateDisplayGroupRSTree(surfaceNode, parentNodeId, isAdd);
1000e0dac50fSopenharmony_ci    absScreen_->rsDisplayNode_ = nullptr;
1001e0dac50fSopenharmony_ci}
1002e0dac50fSopenharmony_ci}
1003e0dac50fSopenharmony_ci} // namespace Rosen
1004e0dac50fSopenharmony_ci} // namespace OHOS
1005