1/* 2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#include <gtest/gtest.h> 17#include "screen_group.h" 18#include "screen_manager.h" 19#include "screen_group_info.h" 20#include "mock_display_manager_adapter.h" 21#include "singleton_mocker.h" 22 23using namespace testing; 24using namespace testing::ext; 25 26namespace OHOS { 27namespace Rosen { 28class ScreenGroupTest : public testing::Test { 29public: 30 static void SetUpTestCase(); 31 static void TearDownTestCase(); 32 void SetUp() override; 33 void TearDown() override; 34 sptr<ScreenGroup> group_; 35}; 36 37 38void ScreenGroupTest::SetUpTestCase() 39{ 40} 41 42void ScreenGroupTest::TearDownTestCase() 43{ 44} 45 46void ScreenGroupTest::SetUp() 47{ 48 group_ = ScreenManager::GetInstance().GetScreenGroup(0); 49} 50 51void ScreenGroupTest::TearDown() 52{ 53} 54 55namespace { 56/** 57 * @tc.name: UpdateScreenGroupInfo02 58 * @tc.desc: test InterfaceToken check failed 59 * @tc.type: FUNC 60 */ 61HWTEST_F(ScreenGroupTest, UpdateScreenGroupInfo02, Function | SmallTest | Level2) 62{ 63 sptr<ScreenGroupInfo> screenGroupInfo = new(std::nothrow) ScreenGroupInfo(); 64 sptr<ScreenGroup> screenGroup = new ScreenGroup(screenGroupInfo); 65 SingletonMocker<ScreenManagerAdapter, MockScreenManagerAdapter> m; 66 EXPECT_CALL(m.Mock(), GetScreenGroupInfoById(_)).Times(1).WillOnce(Return(nullptr)); 67 ScreenCombination comb = screenGroup->GetCombination(); 68 ASSERT_EQ(ScreenCombination::SCREEN_ALONE, comb); 69} 70 71/** 72 * @tc.name: UpdateScreenGroupInfo01 73 * @tc.desc: test InterfaceToken check success 74 * @tc.type: FUNC 75 */ 76HWTEST_F(ScreenGroupTest, UpdateScreenGroupInfo01, Function | SmallTest | Level2) 77{ 78 sptr<ScreenGroupInfo> screenGroupInfo = new(std::nothrow) ScreenGroupInfo(); 79 sptr<ScreenGroup> screenGroup = new ScreenGroup(screenGroupInfo); 80 screenGroupInfo->combination_ = ScreenCombination::SCREEN_EXPAND; 81 SingletonMocker<ScreenManagerAdapter, MockScreenManagerAdapter> m; 82 EXPECT_CALL(m.Mock(), GetScreenGroupInfoById(_)).Times(1).WillOnce(Return(screenGroupInfo)); 83 ScreenCombination comb = screenGroup->GetCombination(); 84 ASSERT_EQ(ScreenCombination::SCREEN_EXPAND, comb); 85} 86 87/** 88 * @tc.name: UpdateScreenGroupInfo03 89 * @tc.desc: test InterfaceToken check success 90 * @tc.type: FUNC 91 */ 92HWTEST_F(ScreenGroupTest, UpdateScreenGroupInfo03, Function | SmallTest | Level2) 93{ 94 sptr<ScreenGroupInfo> screenGroupInfo = new(std::nothrow) ScreenGroupInfo(); 95 sptr<ScreenGroup> screenGroup = new ScreenGroup(screenGroupInfo); 96 std::vector<Point> position; 97 position.emplace_back(0, 0); 98 screenGroupInfo->position_ = position; 99 SingletonMocker<ScreenManagerAdapter, MockScreenManagerAdapter> m; 100 EXPECT_CALL(m.Mock(), GetScreenGroupInfoById(_)).Times(1).WillOnce(Return(screenGroupInfo)); 101 std::vector<Point> pos = screenGroup->GetChildPositions(); 102 ASSERT_EQ(position.size(), pos.size()); 103} 104/** 105 * @tc.name: GetChildIds 106 * @tc.desc: for interface coverage & check GetChildIds 107 * @tc.type: FUNC 108 */ 109HWTEST_F(ScreenGroupTest, GetChildIds, Function | SmallTest | Level2) 110{ 111 sptr<ScreenGroupInfo> screenGroupInfo = new(std::nothrow) ScreenGroupInfo(); 112 sptr<ScreenGroup> screenGroup = new ScreenGroup(screenGroupInfo); 113 auto result = screenGroup->GetChildIds(); 114 ASSERT_TRUE(result.empty()); 115 116 screenGroupInfo->children_.emplace_back(1); 117 result = screenGroup->GetChildIds(); 118 ASSERT_EQ(result.size(), 1); 119} 120} 121} 122}