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 19using namespace testing; 20using namespace testing::ext; 21 22namespace OHOS { 23namespace Rosen { 24class MinimizeAppTest : public testing::Test { 25public: 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 34void MinimizeAppTest::SetUpTestCase() 35{ 36} 37 38void MinimizeAppTest::TearDownTestCase() 39{ 40} 41 42void MinimizeAppTest::SetUp() 43{ 44} 45 46void MinimizeAppTest::TearDown() 47{ 48} 49 50sptr<WindowProperty> MinimizeAppTest::CreateWindowProperty(uint32_t windowId) 51{ 52 sptr<WindowProperty> property = new WindowProperty(); 53 property->SetWindowId(windowId); 54 return property; 55} 56namespace { 57/** 58 * @tc.name: MinimizeAppTest01 59 * @tc.desc: add and excute 60 * @tc.type: FUNC 61 */ 62HWTEST_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 */ 111HWTEST_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 */ 127HWTEST_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 */ 143HWTEST_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 */ 158HWTEST_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 */ 176HWTEST_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 */ 197HWTEST_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 */ 214HWTEST_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 */ 227HWTEST_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 */ 236HWTEST_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