• 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  * @tc.name: MinimizeAppTest02
108  * @tc.desc: add, find and clear
109  * @tc.type: FUNC
110  */
111 HWTEST_F(MinimizeAppTest, MinimizeAppTest02, Function | SmallTest | Level2)
112 {
113     sptr<WindowNode> node1 = new WindowNode();
114 
115     MinimizeApp::AddNeedMinimizeApp(node1, MinimizeReason::MINIMIZE_ALL);
116 
117     auto getNodes = MinimizeApp::GetNeedMinimizeAppNodesWithReason(MinimizeReason::MINIMIZE_ALL);
118     ASSERT_EQ(node1, getNodes[0]);
119 
120     MinimizeApp::ClearNodesWithReason(MinimizeReason::MINIMIZE_ALL);
121 }
122 /**
123  * @tc.name: MinimizeAppTest03
124  * @tc.desc: add and find
125  * @tc.type: FUNC
126  */
127 HWTEST_F(MinimizeAppTest, MinimizeAppTest03, Function | SmallTest | Level2)
128 {
129     MinimizeApp::SetMinimizedByOtherConfig(false);
130     sptr<WindowNode> node1 = new WindowNode();
131 
132     MinimizeApp::AddNeedMinimizeApp(node1, MinimizeReason::OTHER_WINDOW);
133     ASSERT_EQ(false, MinimizeApp::IsNodeNeedMinimize(node1));
134     MinimizeApp::SetMinimizedByOtherConfig(true);
135 
136     MinimizeApp::ClearNodesWithReason(MinimizeReason::OTHER_WINDOW);
137 }
138 /**
139  * @tc.name: MinimizeAppTest04
140  * @tc.desc: add and recover
141  * @tc.type: FUNC
142  */
143 HWTEST_F(MinimizeAppTest, MinimizeAppTest04, Function | SmallTest | Level2)
144 {
145     sptr<WindowNode> node1 = new WindowNode();
146     MinimizeApp::AddNeedMinimizeApp(node1, MinimizeReason::LAYOUT_TILE);
147 
148     ASSERT_EQ(node1, MinimizeApp::GetRecoverdNodeFromMinimizeList());
149     ASSERT_EQ(nullptr, MinimizeApp::GetRecoverdNodeFromMinimizeList());
150 
151     MinimizeApp::ClearNodesWithReason(MinimizeReason::LAYOUT_TILE);
152 }
153 /**
154  * @tc.name: MinimizeAppTest05
155  * @tc.desc: insert nullptr to needMinimizeAppNodes_
156  * @tc.type: FUNC
157  */
158 HWTEST_F(MinimizeAppTest, MinimizeAppTest05, Function | SmallTest | Level2)
159 {
160     MinimizeApp::needMinimizeAppNodes_[MinimizeReason::MINIMIZE_ALL].emplace_back(nullptr);
161     auto getNodes = MinimizeApp::GetNeedMinimizeAppNodesWithReason(MinimizeReason::MINIMIZE_ALL);
162     ASSERT_EQ(nullptr, getNodes[0].promote());
163 
164     sptr<WindowNode> node1 = new WindowNode();
165     MinimizeApp::AddNeedMinimizeApp(node1, MinimizeReason::MINIMIZE_ALL);
166     auto getNodes2 = MinimizeApp::GetNeedMinimizeAppNodesWithReason(MinimizeReason::MINIMIZE_ALL);
167     ASSERT_EQ(node1, getNodes2[1]);
168 
169     MinimizeApp::ClearNodesWithReason(MinimizeReason::MINIMIZE_ALL);
170 }
171 /**
172  * @tc.name: IsNodeNeedMinimizeWithReason
173  * @tc.desc: check node need minimize or not
174  * @tc.type: FUNC
175  */
176 HWTEST_F(MinimizeAppTest, IsNodeNeedMinimizeWithReason01, Function | SmallTest | Level2)
177 {
178     ASSERT_EQ(false, MinimizeApp::IsNodeNeedMinimizeWithReason(nullptr, MinimizeReason::MINIMIZE_ALL));
179 
180     sptr<WindowNode> node1 = new WindowNode();
181     sptr<WindowNode> node2 = new WindowNode();
182     MinimizeApp::AddNeedMinimizeApp(node1, MinimizeReason::MINIMIZE_BUTTON);
183     MinimizeApp::AddNeedMinimizeApp(node2, MinimizeReason::MINIMIZE_ALL);
184 
185     ASSERT_EQ(false, MinimizeApp::IsNodeNeedMinimizeWithReason(node1, MinimizeReason::GESTURE_ANIMATION));
186     ASSERT_EQ(false, MinimizeApp::IsNodeNeedMinimizeWithReason(node1, MinimizeReason::MINIMIZE_ALL));
187     ASSERT_EQ(true, MinimizeApp::IsNodeNeedMinimizeWithReason(node1, MinimizeReason::MINIMIZE_BUTTON));
188 
189     MinimizeApp::ClearNodesWithReason(MinimizeReason::MINIMIZE_ALL);
190     MinimizeApp::ClearNodesWithReason(MinimizeReason::MINIMIZE_BUTTON);
191 }
192 /**
193  * @tc.name: ClearNodesWithReason
194  * @tc.desc: clear node with reason
195  * @tc.type: FUNC
196  */
197 HWTEST_F(MinimizeAppTest, ClearNodesWithReason01, Function | SmallTest | Level2)
198 {
199     sptr<WindowNode> node1 = new WindowNode();
200     sptr<WindowNode> node2 = new WindowNode();
201     MinimizeApp::AddNeedMinimizeApp(node1, MinimizeReason::MINIMIZE_BUTTON);
202     MinimizeApp::AddNeedMinimizeApp(node2, MinimizeReason::MINIMIZE_ALL);
203 
204     MinimizeApp::ClearNodesWithReason(MinimizeReason::MINIMIZE_ALL);
205     ASSERT_EQ(0, MinimizeApp::GetNeedMinimizeAppNodesWithReason(MinimizeReason::MINIMIZE_ALL).size());
206     MinimizeApp::ClearNodesWithReason(MinimizeReason::GESTURE_ANIMATION);
207     ASSERT_EQ(1, MinimizeApp::GetNeedMinimizeAppNodesWithReason(MinimizeReason::MINIMIZE_BUTTON).size());
208 }
209 /**
210  * @tc.name: GetRecoverdNodeFromMinimizeList
211  * @tc.desc: Get recoverd node from list
212  * @tc.type: FUNC
213  */
214 HWTEST_F(MinimizeAppTest, GetRecoverdNodeFromMinimizeList01, Function | SmallTest | Level2)
215 {
216     sptr<WindowNode> node1 = new WindowNode();
217     MinimizeApp::AddNeedMinimizeApp(node1, MinimizeReason::MINIMIZE_BUTTON);
218 
219     ASSERT_EQ(nullptr, MinimizeApp::GetRecoverdNodeFromMinimizeList());
220     MinimizeApp::ClearNodesWithReason(MinimizeReason::MINIMIZE_BUTTON);
221 }
222 /**
223  * @tc.name: IsNodeNeedMinimize
224  * @tc.desc: check node need minize or not
225  * @tc.type: FUNC
226  */
227 HWTEST_F(MinimizeAppTest, IsNodeNeedMinimize01, Function | SmallTest | Level2)
228 {
229     ASSERT_EQ(false, MinimizeApp::IsNodeNeedMinimize(nullptr));
230 }
231 /**
232  * @tc.name: ExecuteMinimizeTargetReasons
233  * @tc.desc: Execute Minimize With TargetReason
234  * @tc.type: FUNC
235  */
236 HWTEST_F(MinimizeAppTest, ExecuteMinimizeTargetReasons01, Function | SmallTest | Level2)
237 {
238     sptr<WindowNode> node1 = new WindowNode();
239     MinimizeApp::AddNeedMinimizeApp(node1, MinimizeReason::MINIMIZE_BUTTON);
240 
241     MinimizeApp::ExecuteMinimizeTargetReasons(MinimizeReason::MINIMIZE_BUTTON);
242     ASSERT_EQ(0, MinimizeApp::GetNeedMinimizeAppNodesWithReason(MinimizeReason::MINIMIZE_BUTTON).size());
243 
244     MinimizeApp::AddNeedMinimizeApp(node1, MinimizeReason::MINIMIZE_BUTTON);
245     MinimizeApp::ExecuteMinimizeTargetReasons(MinimizeReason::GESTURE_ANIMATION);
246     ASSERT_EQ(1, MinimizeApp::GetNeedMinimizeAppNodesWithReason(MinimizeReason::MINIMIZE_BUTTON).size());
247 }
248 }
249 }
250 }
251