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
23 using namespace testing;
24 using namespace testing::ext;
25
26 namespace OHOS {
27 namespace Rosen {
28 class ScreenGroupTest : public testing::Test {
29 public:
30 static void SetUpTestCase();
31 static void TearDownTestCase();
32 void SetUp() override;
33 void TearDown() override;
34 sptr<ScreenGroup> group_;
35 };
36
37
SetUpTestCase()38 void ScreenGroupTest::SetUpTestCase()
39 {
40 }
41
TearDownTestCase()42 void ScreenGroupTest::TearDownTestCase()
43 {
44 }
45
SetUp()46 void ScreenGroupTest::SetUp()
47 {
48 group_ = ScreenManager::GetInstance().GetScreenGroup(0);
49 }
50
TearDown()51 void ScreenGroupTest::TearDown()
52 {
53 }
54
55 namespace {
56 /**
57 * @tc.name: UpdateScreenGroupInfo02
58 * @tc.desc: test InterfaceToken check failed
59 * @tc.type: FUNC
60 */
61 HWTEST_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 */
76 HWTEST_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 */
92 HWTEST_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 */
109 HWTEST_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 }