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