• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 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 "minimize_app.h"
18 
19 using namespace testing;
20 using namespace testing::ext;
21 
22 namespace OHOS {
23 namespace Rosen {
24 class MinimizeAppTest : public testing::Test {
25 public:
26     static void SetUpTestCase();
27     static void TearDownTestCase();
28     virtual void SetUp() override;
29     virtual void TearDown() override;
30 
31     sptr<WindowProperty> CreateWindowProperty(uint32_t windowId);
32 };
33 
SetUpTestCase()34 void MinimizeAppTest::SetUpTestCase()
35 {
36 }
37 
TearDownTestCase()38 void MinimizeAppTest::TearDownTestCase()
39 {
40 }
41 
SetUp()42 void MinimizeAppTest::SetUp()
43 {
44 }
45 
TearDown()46 void MinimizeAppTest::TearDown()
47 {
48 }
49 
CreateWindowProperty(uint32_t windowId)50 sptr<WindowProperty> MinimizeAppTest::CreateWindowProperty(uint32_t windowId)
51 {
52     sptr<WindowProperty> property = new WindowProperty();
53     property->SetWindowId(windowId);
54     return property;
55 }
56 namespace {
57 /**
58  * @tc.name: MinimizeAppTest01
59  * @tc.desc: add and excute
60  * @tc.type: FUNC
61  */
62 HWTEST_F(MinimizeAppTest, MinimizeAppTest01, Function | SmallTest | Level2)
63 {
64     sptr<WindowNode> node1 = new WindowNode(CreateWindowProperty(1));
65     sptr<WindowNode> node2 = new WindowNode(CreateWindowProperty(2));
66     sptr<WindowNode> node3 = new WindowNode(CreateWindowProperty(3));
67     sptr<WindowNode> node4 = new WindowNode(CreateWindowProperty(4));
68     sptr<WindowNode> node5 = new WindowNode(CreateWindowProperty(5));
69     sptr<WindowNode> node6 = new WindowNode(CreateWindowProperty(6));
70     sptr<WindowNode> node7 = new WindowNode(CreateWindowProperty(7));
71     sptr<WindowNode> node8 = new WindowNode(CreateWindowProperty(8));
72     sptr<WindowNode> node9 = new WindowNode(CreateWindowProperty(9));
73 
74     sptr<WindowNode> node10 = new WindowNode();
75     sptr<WindowNode> node11 = nullptr;
76     sptr<WindowNode> conflictNode = new WindowNode(CreateWindowProperty(2));
77 
78     MinimizeApp::AddNeedMinimizeApp(node1, MinimizeReason::MINIMIZE_BUTTON);
79     MinimizeApp::AddNeedMinimizeApp(node2, MinimizeReason::MINIMIZE_ALL);
80     MinimizeApp::AddNeedMinimizeApp(node3, MinimizeReason::LAYOUT_TILE);
81     MinimizeApp::AddNeedMinimizeApp(node4, MinimizeReason::LAYOUT_CASCADE);
82     MinimizeApp::AddNeedMinimizeApp(node5, MinimizeReason::MAX_APP_COUNT);
83     MinimizeApp::AddNeedMinimizeApp(node6, MinimizeReason::SPLIT_REPLACE);
84     MinimizeApp::AddNeedMinimizeApp(node7, MinimizeReason::SPLIT_QUIT);
85     MinimizeApp::AddNeedMinimizeApp(node8, MinimizeReason::GESTURE_ANIMATION);
86     MinimizeApp::AddNeedMinimizeApp(node9, MinimizeReason::OTHER_WINDOW);
87     MinimizeApp::AddNeedMinimizeApp(conflictNode, MinimizeReason::MINIMIZE_ALL);
88 
89     ASSERT_EQ(true, MinimizeApp::IsNodeNeedMinimize(node1));
90     ASSERT_EQ(true, MinimizeApp::IsNodeNeedMinimize(node2));
91     ASSERT_EQ(true, MinimizeApp::IsNodeNeedMinimize(node3));
92     ASSERT_EQ(true, MinimizeApp::IsNodeNeedMinimize(node4));
93     ASSERT_EQ(true, MinimizeApp::IsNodeNeedMinimize(node5));
94     ASSERT_EQ(true, MinimizeApp::IsNodeNeedMinimize(node6));
95     ASSERT_EQ(true, MinimizeApp::IsNodeNeedMinimize(node7));
96     ASSERT_EQ(true, MinimizeApp::IsNodeNeedMinimize(node8));
97     ASSERT_EQ(true, MinimizeApp::IsNodeNeedMinimize(node9));
98 
99     ASSERT_EQ(false, MinimizeApp::IsNodeNeedMinimize(node10));
100     ASSERT_EQ(false, MinimizeApp::IsNodeNeedMinimize(node11));
101     ASSERT_EQ(false, MinimizeApp::IsNodeNeedMinimize(conflictNode));
102 
103     MinimizeApp::ExecuteMinimizeTargetReasons(MinimizeReason::SPLIT_REPLACE);
104     MinimizeApp::ExecuteMinimizeAll();
105 }
106 
107 /**
108  * @tc.name: MinimizeAppTest02
109  * @tc.desc: add, find and clear
110  * @tc.type: FUNC
111  */
112 HWTEST_F(MinimizeAppTest, MinimizeAppTest02, Function | SmallTest | Level2)
113 {
114     sptr<WindowNode> node1 = new WindowNode();
115 
116     MinimizeApp::AddNeedMinimizeApp(node1, MinimizeReason::MINIMIZE_ALL);
117 
118     auto getNodes = MinimizeApp::GetNeedMinimizeAppNodesWithReason(MinimizeReason::MINIMIZE_ALL);
119     ASSERT_EQ(node1, getNodes[0]);
120 
121     MinimizeApp::ClearNodesWithReason(MinimizeReason::MINIMIZE_ALL);
122 }
123 
124 /**
125  * @tc.name: MinimizeAppTest03
126  * @tc.desc: add and find
127  * @tc.type: FUNC
128  */
129 HWTEST_F(MinimizeAppTest, MinimizeAppTest03, Function | SmallTest | Level2)
130 {
131     MinimizeApp::SetMinimizedByOtherConfig(false);
132     sptr<WindowNode> node1 = new WindowNode();
133 
134     MinimizeApp::AddNeedMinimizeApp(node1, MinimizeReason::OTHER_WINDOW);
135     ASSERT_EQ(false, MinimizeApp::IsNodeNeedMinimize(node1));
136     MinimizeApp::SetMinimizedByOtherConfig(true);
137 
138     MinimizeApp::ClearNodesWithReason(MinimizeReason::OTHER_WINDOW);
139 }
140 
141 /**
142  * @tc.name: MinimizeAppTest04
143  * @tc.desc: add and recover
144  * @tc.type: FUNC
145  */
146 HWTEST_F(MinimizeAppTest, MinimizeAppTest04, Function | SmallTest | Level2)
147 {
148     sptr<WindowNode> node1 = new WindowNode();
149     MinimizeApp::AddNeedMinimizeApp(node1, MinimizeReason::LAYOUT_TILE);
150 
151     ASSERT_EQ(node1, MinimizeApp::GetRecoverdNodeFromMinimizeList());
152     ASSERT_EQ(nullptr, MinimizeApp::GetRecoverdNodeFromMinimizeList());
153 
154     MinimizeApp::ClearNodesWithReason(MinimizeReason::LAYOUT_TILE);
155 }
156 
157 /**
158  * @tc.name: MinimizeAppTest05
159  * @tc.desc: insert nullptr to needMinimizeAppNodes_
160  * @tc.type: FUNC
161  */
162 HWTEST_F(MinimizeAppTest, MinimizeAppTest05, Function | SmallTest | Level2)
163 {
164     MinimizeApp::needMinimizeAppNodes_[MinimizeReason::MINIMIZE_ALL].emplace_back(nullptr);
165     auto getNodes = MinimizeApp::GetNeedMinimizeAppNodesWithReason(MinimizeReason::MINIMIZE_ALL);
166     ASSERT_EQ(nullptr, getNodes[0].promote());
167 
168     sptr<WindowNode> node1 = new WindowNode();
169     MinimizeApp::AddNeedMinimizeApp(node1, MinimizeReason::MINIMIZE_ALL);
170     auto getNodes2 = MinimizeApp::GetNeedMinimizeAppNodesWithReason(MinimizeReason::MINIMIZE_ALL);
171     ASSERT_EQ(node1, getNodes2[1]);
172 
173     MinimizeApp::ClearNodesWithReason(MinimizeReason::MINIMIZE_ALL);
174 }
175 
176 /**
177  * @tc.name: IsNodeNeedMinimizeWithReason
178  * @tc.desc: check node need minimize or not
179  * @tc.type: FUNC
180  */
181 HWTEST_F(MinimizeAppTest, IsNodeNeedMinimizeWithReason01, Function | SmallTest | Level2)
182 {
183     ASSERT_EQ(false, MinimizeApp::IsNodeNeedMinimizeWithReason(nullptr, MinimizeReason::MINIMIZE_ALL));
184 
185     sptr<WindowNode> node1 = new WindowNode();
186     sptr<WindowNode> node2 = new WindowNode();
187     MinimizeApp::AddNeedMinimizeApp(node1, MinimizeReason::MINIMIZE_BUTTON);
188     MinimizeApp::AddNeedMinimizeApp(node2, MinimizeReason::MINIMIZE_ALL);
189 
190     ASSERT_EQ(false, MinimizeApp::IsNodeNeedMinimizeWithReason(node1, MinimizeReason::GESTURE_ANIMATION));
191     ASSERT_EQ(false, MinimizeApp::IsNodeNeedMinimizeWithReason(node1, MinimizeReason::MINIMIZE_ALL));
192     ASSERT_EQ(true, MinimizeApp::IsNodeNeedMinimizeWithReason(node1, MinimizeReason::MINIMIZE_BUTTON));
193 
194     MinimizeApp::ClearNodesWithReason(MinimizeReason::MINIMIZE_ALL);
195     MinimizeApp::ClearNodesWithReason(MinimizeReason::MINIMIZE_BUTTON);
196 }
197 
198 /**
199  * @tc.name: ClearNodesWithReason
200  * @tc.desc: clear node with reason
201  * @tc.type: FUNC
202  */
203 HWTEST_F(MinimizeAppTest, ClearNodesWithReason01, Function | SmallTest | Level2)
204 {
205     sptr<WindowNode> node1 = new WindowNode();
206     sptr<WindowNode> node2 = new WindowNode();
207     MinimizeApp::AddNeedMinimizeApp(node1, MinimizeReason::MINIMIZE_BUTTON);
208     MinimizeApp::AddNeedMinimizeApp(node2, MinimizeReason::MINIMIZE_ALL);
209 
210     MinimizeApp::ClearNodesWithReason(MinimizeReason::MINIMIZE_ALL);
211     ASSERT_EQ(0, MinimizeApp::GetNeedMinimizeAppNodesWithReason(MinimizeReason::MINIMIZE_ALL).size());
212     MinimizeApp::ClearNodesWithReason(MinimizeReason::GESTURE_ANIMATION);
213     ASSERT_EQ(1, MinimizeApp::GetNeedMinimizeAppNodesWithReason(MinimizeReason::MINIMIZE_BUTTON).size());
214 }
215 
216 /**
217  * @tc.name: GetRecoverdNodeFromMinimizeList
218  * @tc.desc: Get recoverd node from list
219  * @tc.type: FUNC
220  */
221 HWTEST_F(MinimizeAppTest, GetRecoverdNodeFromMinimizeList01, Function | SmallTest | Level2)
222 {
223     sptr<WindowNode> node1 = new WindowNode();
224     MinimizeApp::AddNeedMinimizeApp(node1, MinimizeReason::MINIMIZE_BUTTON);
225 
226     ASSERT_EQ(nullptr, MinimizeApp::GetRecoverdNodeFromMinimizeList());
227     MinimizeApp::ClearNodesWithReason(MinimizeReason::MINIMIZE_BUTTON);
228 }
229 
230 /**
231  * @tc.name: IsNodeNeedMinimize
232  * @tc.desc: check node need minize or not
233  * @tc.type: FUNC
234  */
235 HWTEST_F(MinimizeAppTest, IsNodeNeedMinimize01, Function | SmallTest | Level2)
236 {
237     ASSERT_EQ(false, MinimizeApp::IsNodeNeedMinimize(nullptr));
238 }
239 
240 /**
241  * @tc.name: ExecuteMinimizeTargetReasons
242  * @tc.desc: Execute Minimize With TargetReason
243  * @tc.type: FUNC
244  */
245 HWTEST_F(MinimizeAppTest, ExecuteMinimizeTargetReasons01, Function | SmallTest | Level2)
246 {
247     sptr<WindowNode> node1 = new WindowNode();
248     MinimizeApp::AddNeedMinimizeApp(node1, MinimizeReason::MINIMIZE_BUTTON);
249 
250     MinimizeApp::ExecuteMinimizeTargetReasons(MinimizeReason::MINIMIZE_BUTTON);
251     ASSERT_EQ(0, MinimizeApp::GetNeedMinimizeAppNodesWithReason(MinimizeReason::MINIMIZE_BUTTON).size());
252 
253     MinimizeApp::AddNeedMinimizeApp(node1, MinimizeReason::MINIMIZE_BUTTON);
254     MinimizeApp::ExecuteMinimizeTargetReasons(MinimizeReason::GESTURE_ANIMATION);
255     ASSERT_EQ(1, MinimizeApp::GetNeedMinimizeAppNodesWithReason(MinimizeReason::MINIMIZE_BUTTON).size());
256 }
257 }
258 }
259 }
260