1e0dac50fSopenharmony_ci/* 2e0dac50fSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3e0dac50fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4e0dac50fSopenharmony_ci * you may not use this file except in compliance with the License. 5e0dac50fSopenharmony_ci * You may obtain a copy of the License at 6e0dac50fSopenharmony_ci * 7e0dac50fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8e0dac50fSopenharmony_ci * 9e0dac50fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10e0dac50fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11e0dac50fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12e0dac50fSopenharmony_ci * See the License for the specific language governing permissions and 13e0dac50fSopenharmony_ci * limitations under the License. 14e0dac50fSopenharmony_ci */ 15e0dac50fSopenharmony_ci 16e0dac50fSopenharmony_ci#include <gtest/gtest.h> 17e0dac50fSopenharmony_ci#include <algorithm> 18e0dac50fSopenharmony_ci 19e0dac50fSopenharmony_ci#include "display_manager.h" 20e0dac50fSopenharmony_ci#include "window_pair.h" 21e0dac50fSopenharmony_ci#include "minimize_app.h" 22e0dac50fSopenharmony_ci#include "common_test_utils.h" 23e0dac50fSopenharmony_ci#include "mock_IWindow.h" 24e0dac50fSopenharmony_ciusing namespace testing; 25e0dac50fSopenharmony_ciusing namespace testing::ext; 26e0dac50fSopenharmony_ci 27e0dac50fSopenharmony_cinamespace OHOS { 28e0dac50fSopenharmony_cinamespace Rosen { 29e0dac50fSopenharmony_ciclass WindowPairTest : public testing::Test { 30e0dac50fSopenharmony_cipublic: 31e0dac50fSopenharmony_ci static void SetUpTestCase(); 32e0dac50fSopenharmony_ci static void TearDownTestCase(); 33e0dac50fSopenharmony_ci void SetUp() override; 34e0dac50fSopenharmony_ci void TearDown() override; 35e0dac50fSopenharmony_ci}; 36e0dac50fSopenharmony_ci 37e0dac50fSopenharmony_civoid WindowPairTest::SetUpTestCase() 38e0dac50fSopenharmony_ci{ 39e0dac50fSopenharmony_ci auto display = DisplayManager::GetInstance().GetDefaultDisplay(); 40e0dac50fSopenharmony_ci ASSERT_TRUE((display != nullptr)); 41e0dac50fSopenharmony_ci sptr<DisplayInfo> displayInfo = display->GetDisplayInfo(); 42e0dac50fSopenharmony_ci ASSERT_TRUE((displayInfo != nullptr)); 43e0dac50fSopenharmony_ci} 44e0dac50fSopenharmony_ci 45e0dac50fSopenharmony_civoid WindowPairTest::TearDownTestCase() 46e0dac50fSopenharmony_ci{ 47e0dac50fSopenharmony_ci} 48e0dac50fSopenharmony_ci 49e0dac50fSopenharmony_civoid WindowPairTest::SetUp() 50e0dac50fSopenharmony_ci{ 51e0dac50fSopenharmony_ci} 52e0dac50fSopenharmony_ci 53e0dac50fSopenharmony_civoid WindowPairTest::TearDown() 54e0dac50fSopenharmony_ci{ 55e0dac50fSopenharmony_ci} 56e0dac50fSopenharmony_ci 57e0dac50fSopenharmony_cinamespace { 58e0dac50fSopenharmony_ci/** 59e0dac50fSopenharmony_ci * @tc.name: NotifyShowRecent 60e0dac50fSopenharmony_ci * @tc.desc: Send split screen event to notify create recent view. 61e0dac50fSopenharmony_ci * @tc.type: FUNC 62e0dac50fSopenharmony_ci */ 63e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, NotifyShowRecent01, Function | SmallTest | Level2) 64e0dac50fSopenharmony_ci{ 65e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 66e0dac50fSopenharmony_ci windowPair->primary_ = nullptr; 67e0dac50fSopenharmony_ci windowPair->secondary_ = nullptr; 68e0dac50fSopenharmony_ci windowPair->NotifyShowRecent(nullptr); 69e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->primary_); 70e0dac50fSopenharmony_ci 71e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 72e0dac50fSopenharmony_ci property->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 73e0dac50fSopenharmony_ci sptr<WindowNode> node0 = new WindowNode(property); 74e0dac50fSopenharmony_ci windowPair->primary_ = node0; 75e0dac50fSopenharmony_ci windowPair->NotifyShowRecent(node0); 76e0dac50fSopenharmony_ci 77e0dac50fSopenharmony_ci if (windowPair->secondary_ != nullptr) { 78e0dac50fSopenharmony_ci ASSERT_EQ(WindowType::WINDOW_TYPE_LAUNCHER_RECENT, windowPair->secondary_->GetWindowType()); 79e0dac50fSopenharmony_ci } 80e0dac50fSopenharmony_ci} 81e0dac50fSopenharmony_ci 82e0dac50fSopenharmony_ci/** 83e0dac50fSopenharmony_ci * @tc.name: NotifyCreateOrDestroyDivider 84e0dac50fSopenharmony_ci * @tc.desc: Send split screen event to notify create or destroy divider window. 85e0dac50fSopenharmony_ci * @tc.type: FUNC 86e0dac50fSopenharmony_ci */ 87e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, NotifyCreateOrDestroyDivider01, Function | SmallTest | Level2) 88e0dac50fSopenharmony_ci{ 89e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 90e0dac50fSopenharmony_ci windowPair->primary_ = nullptr; 91e0dac50fSopenharmony_ci windowPair->NotifyCreateOrDestroyDivider(nullptr, true); 92e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->primary_); 93e0dac50fSopenharmony_ci 94e0dac50fSopenharmony_ci sptr<WindowProperty> property = new WindowProperty(); 95e0dac50fSopenharmony_ci property->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 96e0dac50fSopenharmony_ci sptr<WindowNode> node0 = new WindowNode(property); 97e0dac50fSopenharmony_ci windowPair->primary_ = node0; 98e0dac50fSopenharmony_ci windowPair->NotifyCreateOrDestroyDivider(node0, true); 99e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->divider_); 100e0dac50fSopenharmony_ci} 101e0dac50fSopenharmony_ci 102e0dac50fSopenharmony_ci/** 103e0dac50fSopenharmony_ci * @tc.name: IsPaired 104e0dac50fSopenharmony_ci * @tc.desc: Get whether the window pair is paired 105e0dac50fSopenharmony_ci * @tc.type: FUNC 106e0dac50fSopenharmony_ci */ 107e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, IsPaired01, Function | SmallTest | Level2) 108e0dac50fSopenharmony_ci{ 109e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 110e0dac50fSopenharmony_ci windowPair->primary_ = nullptr; 111e0dac50fSopenharmony_ci ASSERT_EQ(false, windowPair->IsPaired()); 112e0dac50fSopenharmony_ci windowPair->primary_ = new WindowNode(); 113e0dac50fSopenharmony_ci windowPair->secondary_ = nullptr; 114e0dac50fSopenharmony_ci ASSERT_EQ(false, windowPair->IsPaired()); 115e0dac50fSopenharmony_ci} 116e0dac50fSopenharmony_ci 117e0dac50fSopenharmony_ci/** 118e0dac50fSopenharmony_ci * @tc.name: IsPaired 119e0dac50fSopenharmony_ci * @tc.desc: Get whether the window pair is paired 120e0dac50fSopenharmony_ci * @tc.type: FUNC 121e0dac50fSopenharmony_ci */ 122e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, IsPaired02, Function | SmallTest | Level2) 123e0dac50fSopenharmony_ci{ 124e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 125e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 126e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 127e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 128e0dac50fSopenharmony_ci property2->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 129e0dac50fSopenharmony_ci 130e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property1); 131e0dac50fSopenharmony_ci windowPair->primary_ = node1; 132e0dac50fSopenharmony_ci sptr<WindowNode> node2 = new WindowNode(property2); 133e0dac50fSopenharmony_ci windowPair->secondary_ = node2; 134e0dac50fSopenharmony_ci windowPair->divider_ = node1; 135e0dac50fSopenharmony_ci ASSERT_EQ(true, windowPair->IsPaired()); 136e0dac50fSopenharmony_ci} 137e0dac50fSopenharmony_ci 138e0dac50fSopenharmony_ci/** 139e0dac50fSopenharmony_ci * @tc.name: IsPaired 140e0dac50fSopenharmony_ci * @tc.desc: Get whether the window pair is paired 141e0dac50fSopenharmony_ci * @tc.type: FUNC 142e0dac50fSopenharmony_ci */ 143e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, IsPaired03, Function | SmallTest | Level2) 144e0dac50fSopenharmony_ci{ 145e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 146e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 147e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 148e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 149e0dac50fSopenharmony_ci property2->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 150e0dac50fSopenharmony_ci 151e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property1); 152e0dac50fSopenharmony_ci windowPair->primary_ = node1; 153e0dac50fSopenharmony_ci sptr<WindowNode> node2 = new WindowNode(property2); 154e0dac50fSopenharmony_ci windowPair->secondary_ = node2; 155e0dac50fSopenharmony_ci windowPair->divider_ = nullptr; 156e0dac50fSopenharmony_ci ASSERT_EQ(false, windowPair->IsPaired()); 157e0dac50fSopenharmony_ci} 158e0dac50fSopenharmony_ci 159e0dac50fSopenharmony_ci/** 160e0dac50fSopenharmony_ci * @tc.name: Find 161e0dac50fSopenharmony_ci * @tc.desc: Find window node from window pair 162e0dac50fSopenharmony_ci * @tc.type: FUNC 163e0dac50fSopenharmony_ci */ 164e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, Find01, Function | SmallTest | Level2) 165e0dac50fSopenharmony_ci{ 166e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 167e0dac50fSopenharmony_ci sptr<WindowNode> node1 = nullptr; 168e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->Find(node1)); 169e0dac50fSopenharmony_ci} 170e0dac50fSopenharmony_ci 171e0dac50fSopenharmony_ci/** 172e0dac50fSopenharmony_ci * @tc.name: Find 173e0dac50fSopenharmony_ci * @tc.desc: Find window node from window pair 174e0dac50fSopenharmony_ci * @tc.type: FUNC 175e0dac50fSopenharmony_ci */ 176e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, Find02, Function | SmallTest | Level2) 177e0dac50fSopenharmony_ci{ 178e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 179e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 180e0dac50fSopenharmony_ci property1->SetWindowId(1); 181e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property1); 182e0dac50fSopenharmony_ci windowPair->primary_ = node1; 183e0dac50fSopenharmony_ci ASSERT_EQ(node1, windowPair->Find(node1)); 184e0dac50fSopenharmony_ci} 185e0dac50fSopenharmony_ci 186e0dac50fSopenharmony_ci/** 187e0dac50fSopenharmony_ci * @tc.name: Find 188e0dac50fSopenharmony_ci * @tc.desc: Find window node from window pair 189e0dac50fSopenharmony_ci * @tc.type: FUNC 190e0dac50fSopenharmony_ci */ 191e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, Find03, Function | SmallTest | Level2) 192e0dac50fSopenharmony_ci{ 193e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 194e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 195e0dac50fSopenharmony_ci property1->SetWindowId(1); 196e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property1); 197e0dac50fSopenharmony_ci windowPair->primary_ = nullptr; 198e0dac50fSopenharmony_ci windowPair->secondary_ = node1; 199e0dac50fSopenharmony_ci ASSERT_EQ(node1, windowPair->Find(node1)); 200e0dac50fSopenharmony_ci} 201e0dac50fSopenharmony_ci 202e0dac50fSopenharmony_ci/** 203e0dac50fSopenharmony_ci * @tc.name: Find 204e0dac50fSopenharmony_ci * @tc.desc: Find window node from window pair 205e0dac50fSopenharmony_ci * @tc.type: FUNC 206e0dac50fSopenharmony_ci */ 207e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, Find04, Function | SmallTest | Level2) 208e0dac50fSopenharmony_ci{ 209e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 210e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 211e0dac50fSopenharmony_ci property1->SetWindowId(1); 212e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property1); 213e0dac50fSopenharmony_ci windowPair->primary_ = nullptr; 214e0dac50fSopenharmony_ci windowPair->secondary_ = nullptr; 215e0dac50fSopenharmony_ci windowPair->divider_ = node1; 216e0dac50fSopenharmony_ci ASSERT_EQ(node1, windowPair->Find(node1)); 217e0dac50fSopenharmony_ci} 218e0dac50fSopenharmony_ci 219e0dac50fSopenharmony_ci/** 220e0dac50fSopenharmony_ci * @tc.name: GetSplitRatio 221e0dac50fSopenharmony_ci * @tc.desc: Get split ratio 222e0dac50fSopenharmony_ci * @tc.type: FUNC 223e0dac50fSopenharmony_ci */ 224e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, GetSplitRatio01, Function | SmallTest | Level2) 225e0dac50fSopenharmony_ci{ 226e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 227e0dac50fSopenharmony_ci windowPair->ratio_ = 0; 228e0dac50fSopenharmony_ci ASSERT_EQ(0, windowPair->GetSplitRatio()); 229e0dac50fSopenharmony_ci windowPair->ratio_ = 5; 230e0dac50fSopenharmony_ci ASSERT_EQ(5, windowPair->GetSplitRatio()); 231e0dac50fSopenharmony_ci} 232e0dac50fSopenharmony_ci 233e0dac50fSopenharmony_ci/** 234e0dac50fSopenharmony_ci * @tc.name: IsForbidDockSliceMove 235e0dac50fSopenharmony_ci * @tc.desc: Get whether dock slice is forbidden to move 236e0dac50fSopenharmony_ci * @tc.type: FUNC 237e0dac50fSopenharmony_ci */ 238e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, IsForbidDockSliceMove01, Function | SmallTest | Level2) 239e0dac50fSopenharmony_ci{ 240e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 241e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::PAIRED_DONE; 242e0dac50fSopenharmony_ci ASSERT_EQ(true, windowPair->IsForbidDockSliceMove()); 243e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::EMPTY; 244e0dac50fSopenharmony_ci ASSERT_EQ(false, windowPair->IsForbidDockSliceMove()); 245e0dac50fSopenharmony_ci} 246e0dac50fSopenharmony_ci 247e0dac50fSopenharmony_ci/** 248e0dac50fSopenharmony_ci * @tc.name: IsForbidDockSliceMove 249e0dac50fSopenharmony_ci * @tc.desc: Get whether dock slice is forbidden to move 250e0dac50fSopenharmony_ci * @tc.type: FUNC 251e0dac50fSopenharmony_ci */ 252e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, IsForbidDockSliceMove02, Function | SmallTest | Level2) 253e0dac50fSopenharmony_ci{ 254e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 255e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::PAIRED_DONE; 256e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 257e0dac50fSopenharmony_ci property1->SetWindowFlags(static_cast<uint32_t>(WindowFlag::WINDOW_FLAG_NEED_AVOID)); 258e0dac50fSopenharmony_ci windowPair->primary_ = new WindowNode(property1); 259e0dac50fSopenharmony_ci windowPair->secondary_ = new WindowNode(property1); 260e0dac50fSopenharmony_ci ASSERT_EQ(false, windowPair->IsForbidDockSliceMove()); 261e0dac50fSopenharmony_ci} 262e0dac50fSopenharmony_ci 263e0dac50fSopenharmony_ci/** 264e0dac50fSopenharmony_ci * @tc.name: IsForbidDockSliceMove 265e0dac50fSopenharmony_ci * @tc.desc: Get whether dock slice is forbidden to move 266e0dac50fSopenharmony_ci * @tc.type: FUNC 267e0dac50fSopenharmony_ci */ 268e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, IsForbidDockSliceMove03, Function | SmallTest | Level2) 269e0dac50fSopenharmony_ci{ 270e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 271e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::PAIRED_DONE; 272e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 273e0dac50fSopenharmony_ci property1->SetWindowFlags(static_cast<uint32_t>(WindowFlag::WINDOW_FLAG_NEED_AVOID)); 274e0dac50fSopenharmony_ci windowPair->primary_ = nullptr; 275e0dac50fSopenharmony_ci windowPair->secondary_ = new WindowNode(property1); 276e0dac50fSopenharmony_ci ASSERT_EQ(true, windowPair->IsForbidDockSliceMove()); 277e0dac50fSopenharmony_ci} 278e0dac50fSopenharmony_ci 279e0dac50fSopenharmony_ci/** 280e0dac50fSopenharmony_ci * @tc.name: IsForbidDockSliceMove 281e0dac50fSopenharmony_ci * @tc.desc: Get whether dock slice is forbidden to move 282e0dac50fSopenharmony_ci * @tc.type: FUNC 283e0dac50fSopenharmony_ci */ 284e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, IsForbidDockSliceMove04, Function | SmallTest | Level2) 285e0dac50fSopenharmony_ci{ 286e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 287e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::PAIRED_DONE; 288e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 289e0dac50fSopenharmony_ci property1->SetWindowFlags(static_cast<uint32_t>(WindowFlag::WINDOW_FLAG_FORBID_SPLIT_MOVE)); 290e0dac50fSopenharmony_ci windowPair->primary_ = new WindowNode(property1); 291e0dac50fSopenharmony_ci windowPair->secondary_ = new WindowNode(property1); 292e0dac50fSopenharmony_ci ASSERT_EQ(true, windowPair->IsForbidDockSliceMove()); 293e0dac50fSopenharmony_ci} 294e0dac50fSopenharmony_ci 295e0dac50fSopenharmony_ci/** 296e0dac50fSopenharmony_ci * @tc.name: IsForbidDockSliceMove 297e0dac50fSopenharmony_ci * @tc.desc: Get whether dock slice is forbidden to move 298e0dac50fSopenharmony_ci * @tc.type: FUNC 299e0dac50fSopenharmony_ci */ 300e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, IsForbidDockSliceMove05, Function | SmallTest | Level2) 301e0dac50fSopenharmony_ci{ 302e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 303e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::PAIRED_DONE; 304e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 305e0dac50fSopenharmony_ci property1->SetWindowFlags(static_cast<uint32_t>(WindowFlag::WINDOW_FLAG_NEED_AVOID)); 306e0dac50fSopenharmony_ci windowPair->primary_ = new WindowNode(property1); 307e0dac50fSopenharmony_ci windowPair->secondary_ = nullptr; 308e0dac50fSopenharmony_ci ASSERT_EQ(true, windowPair->IsForbidDockSliceMove()); 309e0dac50fSopenharmony_ci} 310e0dac50fSopenharmony_ci 311e0dac50fSopenharmony_ci/** 312e0dac50fSopenharmony_ci * @tc.name: IsForbidDockSliceMove 313e0dac50fSopenharmony_ci * @tc.desc: Get whether dock slice is forbidden to move 314e0dac50fSopenharmony_ci * @tc.type: FUNC 315e0dac50fSopenharmony_ci */ 316e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, IsForbidDockSliceMove06, Function | SmallTest | Level2) 317e0dac50fSopenharmony_ci{ 318e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 319e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::PAIRED_DONE; 320e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 321e0dac50fSopenharmony_ci property1->SetWindowFlags(static_cast<uint32_t>(WindowFlag::WINDOW_FLAG_NEED_AVOID)); 322e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 323e0dac50fSopenharmony_ci property2->SetWindowFlags(static_cast<uint32_t>(WindowFlag::WINDOW_FLAG_FORBID_SPLIT_MOVE)); 324e0dac50fSopenharmony_ci windowPair->primary_ = new WindowNode(property1); 325e0dac50fSopenharmony_ci windowPair->secondary_ = new WindowNode(property2); 326e0dac50fSopenharmony_ci ASSERT_EQ(true, windowPair->IsForbidDockSliceMove()); 327e0dac50fSopenharmony_ci} 328e0dac50fSopenharmony_ci 329e0dac50fSopenharmony_ci/** 330e0dac50fSopenharmony_ci * @tc.name: IsDockSliceInExitSplitModeArea 331e0dac50fSopenharmony_ci * @tc.desc: whether dock slice in exit split screen mode area 332e0dac50fSopenharmony_ci * @tc.type: FUNC 333e0dac50fSopenharmony_ci */ 334e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, IsDockSliceInExitSplitModeArea01, Function | SmallTest | Level2) 335e0dac50fSopenharmony_ci{ 336e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 337e0dac50fSopenharmony_ci std::vector<int32_t> points {0, 0}; 338e0dac50fSopenharmony_ci windowPair->primary_ = nullptr; 339e0dac50fSopenharmony_ci ASSERT_EQ(false, windowPair->IsDockSliceInExitSplitModeArea(points)); 340e0dac50fSopenharmony_ci} 341e0dac50fSopenharmony_ci 342e0dac50fSopenharmony_ci/** 343e0dac50fSopenharmony_ci * @tc.name: IsDockSliceInExitSplitModeArea 344e0dac50fSopenharmony_ci * @tc.desc: whether dock slice in exit split screen mode area 345e0dac50fSopenharmony_ci * @tc.type: FUNC 346e0dac50fSopenharmony_ci */ 347e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, IsDockSliceInExitSplitModeArea02, Function | SmallTest | Level2) 348e0dac50fSopenharmony_ci{ 349e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 350e0dac50fSopenharmony_ci std::vector<int32_t> points {2, 0}; 351e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 352e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 353e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 354e0dac50fSopenharmony_ci property2->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 355e0dac50fSopenharmony_ci sptr<WindowProperty> property3 = new WindowProperty(); 356e0dac50fSopenharmony_ci 357e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property1); 358e0dac50fSopenharmony_ci windowPair->primary_ = node1; 359e0dac50fSopenharmony_ci sptr<WindowNode> node2 = new WindowNode(property2); 360e0dac50fSopenharmony_ci windowPair->secondary_ = node2; 361e0dac50fSopenharmony_ci Rect rect1 = {1, 1, 10, 20}; 362e0dac50fSopenharmony_ci Rect rect2 = {1, 1, 20, 10}; 363e0dac50fSopenharmony_ci property2->SetWindowRect(rect1); 364e0dac50fSopenharmony_ci property3->SetWindowRect(rect2); 365e0dac50fSopenharmony_ci windowPair->divider_ = new WindowNode(property2); 366e0dac50fSopenharmony_ci 367e0dac50fSopenharmony_ci ASSERT_EQ(true, windowPair->IsPaired()); 368e0dac50fSopenharmony_ci ASSERT_EQ(true, windowPair->IsDockSliceInExitSplitModeArea(points)); 369e0dac50fSopenharmony_ci windowPair->divider_ = new WindowNode(property3); 370e0dac50fSopenharmony_ci ASSERT_EQ(true, windowPair->IsDockSliceInExitSplitModeArea(points)); 371e0dac50fSopenharmony_ci} 372e0dac50fSopenharmony_ci 373e0dac50fSopenharmony_ci/** 374e0dac50fSopenharmony_ci * @tc.name: IsDockSliceInExitSplitModeArea 375e0dac50fSopenharmony_ci * @tc.desc: whether dock slice in exit split screen mode area 376e0dac50fSopenharmony_ci * @tc.type: FUNC 377e0dac50fSopenharmony_ci */ 378e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, IsDockSliceInExitSplitModeArea03, Function | SmallTest | Level2) 379e0dac50fSopenharmony_ci{ 380e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 381e0dac50fSopenharmony_ci std::vector<int32_t> points {0, 50}; 382e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 383e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 384e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 385e0dac50fSopenharmony_ci property2->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 386e0dac50fSopenharmony_ci 387e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property1); 388e0dac50fSopenharmony_ci windowPair->primary_ = node1; 389e0dac50fSopenharmony_ci sptr<WindowNode> node2 = new WindowNode(property2); 390e0dac50fSopenharmony_ci windowPair->secondary_ = node2; 391e0dac50fSopenharmony_ci Rect rect1 = {1, 1, 10, 20}; 392e0dac50fSopenharmony_ci property2->SetWindowRect(rect1); 393e0dac50fSopenharmony_ci windowPair->divider_ = new WindowNode(property2); 394e0dac50fSopenharmony_ci 395e0dac50fSopenharmony_ci ASSERT_EQ(true, windowPair->IsPaired()); 396e0dac50fSopenharmony_ci ASSERT_EQ(false, windowPair->IsDockSliceInExitSplitModeArea(points)); 397e0dac50fSopenharmony_ci} 398e0dac50fSopenharmony_ci 399e0dac50fSopenharmony_ci/** 400e0dac50fSopenharmony_ci * @tc.name: IsSplitRelated 401e0dac50fSopenharmony_ci * @tc.desc: Gets whether the window is related to split window. 402e0dac50fSopenharmony_ci * @tc.type: FUNC 403e0dac50fSopenharmony_ci */ 404e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, IsSplitRelated01, Function | SmallTest | Level2) 405e0dac50fSopenharmony_ci{ 406e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 407e0dac50fSopenharmony_ci sptr<WindowNode> node = nullptr; 408e0dac50fSopenharmony_ci ASSERT_EQ(false, windowPair->IsSplitRelated(node)); 409e0dac50fSopenharmony_ci} 410e0dac50fSopenharmony_ci 411e0dac50fSopenharmony_ci/** 412e0dac50fSopenharmony_ci * @tc.name: IsSplitRelated 413e0dac50fSopenharmony_ci * @tc.desc: Gets whether the window is related to split window. 414e0dac50fSopenharmony_ci * @tc.type: FUNC 415e0dac50fSopenharmony_ci */ 416e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, IsSplitRelated02, Function | SmallTest | Level2) 417e0dac50fSopenharmony_ci{ 418e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 419e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 420e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 421e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property1); 422e0dac50fSopenharmony_ci ASSERT_EQ(true, windowPair->IsSplitRelated(node1)); 423e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_FULLSCREEN); 424e0dac50fSopenharmony_ci property1->SetWindowType(WindowType::WINDOW_TYPE_DOCK_SLICE); 425e0dac50fSopenharmony_ci sptr<WindowNode> node2 = new WindowNode(property1); 426e0dac50fSopenharmony_ci ASSERT_EQ(true, windowPair->IsSplitRelated(node2)); 427e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_FULLSCREEN); 428e0dac50fSopenharmony_ci property1->SetWindowType(WindowType::APP_WINDOW_BASE); 429e0dac50fSopenharmony_ci sptr<WindowNode> node3 = new WindowNode(property1); 430e0dac50fSopenharmony_ci ASSERT_EQ(false, windowPair->IsSplitRelated(node3)); 431e0dac50fSopenharmony_ci} 432e0dac50fSopenharmony_ci 433e0dac50fSopenharmony_ci/** 434e0dac50fSopenharmony_ci * @tc.name: GetOrderedPair 435e0dac50fSopenharmony_ci * @tc.desc: Get all window node form pair in Z order. 436e0dac50fSopenharmony_ci * @tc.type: FUNC 437e0dac50fSopenharmony_ci */ 438e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, GetOrderedPair01, Function | SmallTest | Level2) 439e0dac50fSopenharmony_ci{ 440e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 441e0dac50fSopenharmony_ci sptr<WindowNode> node1 = nullptr; 442e0dac50fSopenharmony_ci std::vector<sptr<WindowNode>> vec; 443e0dac50fSopenharmony_ci vec.clear(); 444e0dac50fSopenharmony_ci ASSERT_EQ(vec, windowPair->GetOrderedPair(node1)); 445e0dac50fSopenharmony_ci} 446e0dac50fSopenharmony_ci 447e0dac50fSopenharmony_ci/** 448e0dac50fSopenharmony_ci * @tc.name: GetOrderedPair 449e0dac50fSopenharmony_ci * @tc.desc: Get all window node form pair in Z order. 450e0dac50fSopenharmony_ci * @tc.type: FUNC 451e0dac50fSopenharmony_ci */ 452e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, GetOrderedPair02, Function | SmallTest | Level2) 453e0dac50fSopenharmony_ci{ 454e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 455e0dac50fSopenharmony_ci 456e0dac50fSopenharmony_ci // create window property 457e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 458e0dac50fSopenharmony_ci property0->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 459e0dac50fSopenharmony_ci property0->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE); 460e0dac50fSopenharmony_ci property0->SetWindowId(1); 461e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 462e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 463e0dac50fSopenharmony_ci property1->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE); 464e0dac50fSopenharmony_ci property1->SetWindowId(2); 465e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 466e0dac50fSopenharmony_ci property2->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 467e0dac50fSopenharmony_ci property2->SetWindowType(WindowType::WINDOW_TYPE_DOCK_SLICE); 468e0dac50fSopenharmony_ci property2->SetWindowId(3); 469e0dac50fSopenharmony_ci 470e0dac50fSopenharmony_ci // define primary_, secondary_, divider_ 471e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property1); 472e0dac50fSopenharmony_ci 473e0dac50fSopenharmony_ci windowPair->primary_ = new WindowNode(property0); 474e0dac50fSopenharmony_ci windowPair->secondary_ = node1; 475e0dac50fSopenharmony_ci windowPair->divider_ = new WindowNode(property2); 476e0dac50fSopenharmony_ci ASSERT_EQ(3, windowPair->GetOrderedPair(node1).size()); 477e0dac50fSopenharmony_ci} 478e0dac50fSopenharmony_ci 479e0dac50fSopenharmony_ci/** 480e0dac50fSopenharmony_ci * @tc.name: GetOrderedPair 481e0dac50fSopenharmony_ci * @tc.desc: Get all window node form pair in Z order. 482e0dac50fSopenharmony_ci * @tc.type: FUNC 483e0dac50fSopenharmony_ci */ 484e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, GetOrderedPair03, Function | SmallTest | Level2) 485e0dac50fSopenharmony_ci{ 486e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 487e0dac50fSopenharmony_ci 488e0dac50fSopenharmony_ci // create window property 489e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 490e0dac50fSopenharmony_ci property0->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 491e0dac50fSopenharmony_ci property0->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE); 492e0dac50fSopenharmony_ci property0->SetWindowId(1); 493e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 494e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 495e0dac50fSopenharmony_ci property1->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE); 496e0dac50fSopenharmony_ci property1->SetWindowId(2); 497e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 498e0dac50fSopenharmony_ci property2->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 499e0dac50fSopenharmony_ci property2->SetWindowType(WindowType::WINDOW_TYPE_DOCK_SLICE); 500e0dac50fSopenharmony_ci property2->SetWindowId(3); 501e0dac50fSopenharmony_ci 502e0dac50fSopenharmony_ci // define primary_, secondary_, divider_ 503e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property0); 504e0dac50fSopenharmony_ci windowPair->primary_ = node1; 505e0dac50fSopenharmony_ci windowPair->secondary_ = new WindowNode(property1); 506e0dac50fSopenharmony_ci windowPair->divider_ = new WindowNode(property2); 507e0dac50fSopenharmony_ci 508e0dac50fSopenharmony_ci ASSERT_EQ(3, windowPair->GetOrderedPair(node1).size()); 509e0dac50fSopenharmony_ci} 510e0dac50fSopenharmony_ci 511e0dac50fSopenharmony_ci/** 512e0dac50fSopenharmony_ci * @tc.name: GetOrderedPair 513e0dac50fSopenharmony_ci * @tc.desc: Get all window node form pair in Z order. 514e0dac50fSopenharmony_ci * @tc.type: FUNC 515e0dac50fSopenharmony_ci */ 516e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, GetOrderedPair04, Function | SmallTest | Level2) 517e0dac50fSopenharmony_ci{ 518e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 519e0dac50fSopenharmony_ci // create window property 520e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 521e0dac50fSopenharmony_ci property0->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 522e0dac50fSopenharmony_ci property0->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE); 523e0dac50fSopenharmony_ci property0->SetWindowId(1); 524e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 525e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 526e0dac50fSopenharmony_ci property1->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE); 527e0dac50fSopenharmony_ci property1->SetWindowId(2); 528e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 529e0dac50fSopenharmony_ci property2->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 530e0dac50fSopenharmony_ci property2->SetWindowType(WindowType::WINDOW_TYPE_DOCK_SLICE); 531e0dac50fSopenharmony_ci property2->SetWindowId(3); 532e0dac50fSopenharmony_ci // define primary_, secondary_, divider_ 533e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property0); 534e0dac50fSopenharmony_ci windowPair->primary_ = node1; 535e0dac50fSopenharmony_ci windowPair->secondary_ = nullptr; 536e0dac50fSopenharmony_ci windowPair->divider_ = new WindowNode(property2); 537e0dac50fSopenharmony_ci ASSERT_EQ(2, windowPair->GetOrderedPair(node1).size()); 538e0dac50fSopenharmony_ci} 539e0dac50fSopenharmony_ci 540e0dac50fSopenharmony_ci/** 541e0dac50fSopenharmony_ci * @tc.name: GetOrderedPair 542e0dac50fSopenharmony_ci * @tc.desc: Get all window node form pair in Z order. 543e0dac50fSopenharmony_ci * @tc.type: FUNC 544e0dac50fSopenharmony_ci */ 545e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, GetOrderedPair05, Function | SmallTest | Level2) 546e0dac50fSopenharmony_ci{ 547e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 548e0dac50fSopenharmony_ci // create window property 549e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 550e0dac50fSopenharmony_ci property0->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 551e0dac50fSopenharmony_ci property0->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE); 552e0dac50fSopenharmony_ci property0->SetWindowId(1); 553e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 554e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 555e0dac50fSopenharmony_ci property1->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE); 556e0dac50fSopenharmony_ci property1->SetWindowId(2); 557e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 558e0dac50fSopenharmony_ci property2->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 559e0dac50fSopenharmony_ci property2->SetWindowType(WindowType::WINDOW_TYPE_DOCK_SLICE); 560e0dac50fSopenharmony_ci property2->SetWindowId(3); 561e0dac50fSopenharmony_ci // define primary_, secondary_, divider_ 562e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property1); 563e0dac50fSopenharmony_ci windowPair->primary_ = nullptr; 564e0dac50fSopenharmony_ci windowPair->secondary_ = node1; 565e0dac50fSopenharmony_ci windowPair->divider_ = new WindowNode(property2); 566e0dac50fSopenharmony_ci ASSERT_EQ(2, windowPair->GetOrderedPair(node1).size()); 567e0dac50fSopenharmony_ci} 568e0dac50fSopenharmony_ci 569e0dac50fSopenharmony_ci/** 570e0dac50fSopenharmony_ci * @tc.name: GetOrderedPair 571e0dac50fSopenharmony_ci * @tc.desc: Get all window node form pair in Z order. 572e0dac50fSopenharmony_ci * @tc.type: FUNC 573e0dac50fSopenharmony_ci */ 574e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, GetOrderedPair06, Function | SmallTest | Level2) 575e0dac50fSopenharmony_ci{ 576e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 577e0dac50fSopenharmony_ci // create window property 578e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 579e0dac50fSopenharmony_ci property0->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 580e0dac50fSopenharmony_ci property0->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE); 581e0dac50fSopenharmony_ci property0->SetWindowId(1); 582e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 583e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 584e0dac50fSopenharmony_ci property1->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE); 585e0dac50fSopenharmony_ci property1->SetWindowId(2); 586e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 587e0dac50fSopenharmony_ci property2->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 588e0dac50fSopenharmony_ci property2->SetWindowType(WindowType::WINDOW_TYPE_DOCK_SLICE); 589e0dac50fSopenharmony_ci property2->SetWindowId(3); 590e0dac50fSopenharmony_ci // define primary_, secondary_, divider_ 591e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property2); 592e0dac50fSopenharmony_ci windowPair->primary_ = nullptr; 593e0dac50fSopenharmony_ci windowPair->secondary_ = nullptr; 594e0dac50fSopenharmony_ci windowPair->divider_ = node1; 595e0dac50fSopenharmony_ci ASSERT_EQ(1, windowPair->GetOrderedPair(node1).size()); 596e0dac50fSopenharmony_ci} 597e0dac50fSopenharmony_ci 598e0dac50fSopenharmony_ci/** 599e0dac50fSopenharmony_ci * @tc.name: GetOrderedPair 600e0dac50fSopenharmony_ci * @tc.desc: Get all window node form pair in Z order. 601e0dac50fSopenharmony_ci * @tc.type: FUNC 602e0dac50fSopenharmony_ci */ 603e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, GetOrderedPair07, Function | SmallTest | Level2) 604e0dac50fSopenharmony_ci{ 605e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 606e0dac50fSopenharmony_ci // create window property 607e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 608e0dac50fSopenharmony_ci property0->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 609e0dac50fSopenharmony_ci property0->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE); 610e0dac50fSopenharmony_ci property0->SetWindowId(1); 611e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 612e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 613e0dac50fSopenharmony_ci property1->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE); 614e0dac50fSopenharmony_ci property1->SetWindowId(2); 615e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 616e0dac50fSopenharmony_ci property2->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 617e0dac50fSopenharmony_ci property2->SetWindowType(WindowType::WINDOW_TYPE_DOCK_SLICE); 618e0dac50fSopenharmony_ci property2->SetWindowId(3); 619e0dac50fSopenharmony_ci // define primary_, secondary_, divider_ 620e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property0); 621e0dac50fSopenharmony_ci windowPair->primary_ = node1; 622e0dac50fSopenharmony_ci windowPair->secondary_ = new WindowNode(property1); 623e0dac50fSopenharmony_ci windowPair->divider_ = nullptr; 624e0dac50fSopenharmony_ci ASSERT_EQ(2, windowPair->GetOrderedPair(node1).size()); 625e0dac50fSopenharmony_ci} 626e0dac50fSopenharmony_ci 627e0dac50fSopenharmony_ci/** 628e0dac50fSopenharmony_ci * @tc.name: GetPairedWindows 629e0dac50fSopenharmony_ci * @tc.desc: Get all window node form pair. 630e0dac50fSopenharmony_ci * @tc.type: FUNC 631e0dac50fSopenharmony_ci */ 632e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, GetPairedWindows01, Function | SmallTest | Level2) 633e0dac50fSopenharmony_ci{ 634e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 635e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 636e0dac50fSopenharmony_ci property0->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 637e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 638e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 639e0dac50fSopenharmony_ci 640e0dac50fSopenharmony_ci // define primary_, secondary_ 641e0dac50fSopenharmony_ci windowPair->primary_ = new WindowNode(property0); 642e0dac50fSopenharmony_ci windowPair->secondary_ = new WindowNode(property1); 643e0dac50fSopenharmony_ci 644e0dac50fSopenharmony_ci // define status_ 645e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::EMPTY; 646e0dac50fSopenharmony_ci 647e0dac50fSopenharmony_ci ASSERT_EQ(0, windowPair->GetPairedWindows().size()); 648e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::PAIRED_DONE; 649e0dac50fSopenharmony_ci ASSERT_EQ(2, windowPair->GetPairedWindows().size()); 650e0dac50fSopenharmony_ci ASSERT_EQ(windowPair->secondary_, windowPair->GetPairedWindows().at(1)); 651e0dac50fSopenharmony_ci ASSERT_EQ(windowPair->primary_, windowPair->GetPairedWindows().at(0)); 652e0dac50fSopenharmony_ci} 653e0dac50fSopenharmony_ci 654e0dac50fSopenharmony_ci/** 655e0dac50fSopenharmony_ci * @tc.name: Clear 656e0dac50fSopenharmony_ci * @tc.desc: Clear window pair. 657e0dac50fSopenharmony_ci * @tc.type: FUNC 658e0dac50fSopenharmony_ci */ 659e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, Clear01, Function | SmallTest | Level2) 660e0dac50fSopenharmony_ci{ 661e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 662e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 663e0dac50fSopenharmony_ci property0->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 664e0dac50fSopenharmony_ci 665e0dac50fSopenharmony_ci // define divider 666e0dac50fSopenharmony_ci windowPair->divider_ = new WindowNode(property0); 667e0dac50fSopenharmony_ci windowPair->Clear(); 668e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->divider_); 669e0dac50fSopenharmony_ci ASSERT_EQ(WindowPairStatus::EMPTY, windowPair->status_); 670e0dac50fSopenharmony_ci} 671e0dac50fSopenharmony_ci 672e0dac50fSopenharmony_ci/** 673e0dac50fSopenharmony_ci * @tc.name: UpdateWindowPairStatus 674e0dac50fSopenharmony_ci * @tc.desc: Update pair status 675e0dac50fSopenharmony_ci * @tc.type: FUNC 676e0dac50fSopenharmony_ci */ 677e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, UpdateWindowPairStatus01, Function | SmallTest | Level2) 678e0dac50fSopenharmony_ci{ 679e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 680e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 681e0dac50fSopenharmony_ci 682e0dac50fSopenharmony_ci // define primary_, secondary_, divider_ 683e0dac50fSopenharmony_ci windowPair->primary_ = new WindowNode(property0); 684e0dac50fSopenharmony_ci windowPair->secondary_ = new WindowNode(property0); 685e0dac50fSopenharmony_ci windowPair->divider_ = new WindowNode(property0); 686e0dac50fSopenharmony_ci 687e0dac50fSopenharmony_ci // define status_ 688e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::SINGLE_PRIMARY; 689e0dac50fSopenharmony_ci 690e0dac50fSopenharmony_ci windowPair->UpdateWindowPairStatus(); 691e0dac50fSopenharmony_ci ASSERT_EQ(WindowPairStatus::PAIRED_DONE, windowPair->status_); 692e0dac50fSopenharmony_ci} 693e0dac50fSopenharmony_ci 694e0dac50fSopenharmony_ci/** 695e0dac50fSopenharmony_ci * @tc.name: UpdateWindowPairStatus 696e0dac50fSopenharmony_ci * @tc.desc: Update pair status 697e0dac50fSopenharmony_ci * @tc.type: FUNC 698e0dac50fSopenharmony_ci */ 699e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, UpdateWindowPairStatus02, Function | SmallTest | Level2) 700e0dac50fSopenharmony_ci{ 701e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 702e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 703e0dac50fSopenharmony_ci 704e0dac50fSopenharmony_ci // define primary_, secondary_, divider_ 705e0dac50fSopenharmony_ci windowPair->primary_ = new WindowNode(property0); 706e0dac50fSopenharmony_ci windowPair->secondary_ = new WindowNode(property0); 707e0dac50fSopenharmony_ci windowPair->divider_ = nullptr; 708e0dac50fSopenharmony_ci 709e0dac50fSopenharmony_ci // define status_ 710e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::SINGLE_PRIMARY; 711e0dac50fSopenharmony_ci 712e0dac50fSopenharmony_ci windowPair->UpdateWindowPairStatus(); 713e0dac50fSopenharmony_ci ASSERT_EQ(WindowPairStatus::PRIMARY_AND_SECONDARY, windowPair->status_); 714e0dac50fSopenharmony_ci} 715e0dac50fSopenharmony_ci 716e0dac50fSopenharmony_ci/** 717e0dac50fSopenharmony_ci * @tc.name: UpdateWindowPairStatus 718e0dac50fSopenharmony_ci * @tc.desc: Update pair status 719e0dac50fSopenharmony_ci * @tc.type: FUNC 720e0dac50fSopenharmony_ci */ 721e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, UpdateWindowPairStatus03, Function | SmallTest | Level2) 722e0dac50fSopenharmony_ci{ 723e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 724e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 725e0dac50fSopenharmony_ci 726e0dac50fSopenharmony_ci // define primary_, secondary_, divider_ 727e0dac50fSopenharmony_ci windowPair->primary_ = new WindowNode(property0); 728e0dac50fSopenharmony_ci windowPair->secondary_ = nullptr; 729e0dac50fSopenharmony_ci windowPair->divider_ = new WindowNode(property0); 730e0dac50fSopenharmony_ci 731e0dac50fSopenharmony_ci // define status_ 732e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::PAIRED_DONE; 733e0dac50fSopenharmony_ci 734e0dac50fSopenharmony_ci windowPair->UpdateWindowPairStatus(); 735e0dac50fSopenharmony_ci ASSERT_EQ(WindowPairStatus::EMPTY, windowPair->status_); 736e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->primary_); 737e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->secondary_); 738e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->divider_); 739e0dac50fSopenharmony_ci} 740e0dac50fSopenharmony_ci 741e0dac50fSopenharmony_ci/** 742e0dac50fSopenharmony_ci * @tc.name: UpdateWindowPairStatus 743e0dac50fSopenharmony_ci * @tc.desc: Update pair status 744e0dac50fSopenharmony_ci * @tc.type: FUNC 745e0dac50fSopenharmony_ci */ 746e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, UpdateWindowPairStatus04, Function | SmallTest | Level2) 747e0dac50fSopenharmony_ci{ 748e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 749e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 750e0dac50fSopenharmony_ci 751e0dac50fSopenharmony_ci // define primary_, secondary_, divider_ 752e0dac50fSopenharmony_ci windowPair->primary_ = nullptr; 753e0dac50fSopenharmony_ci windowPair->secondary_ = new WindowNode(property0); 754e0dac50fSopenharmony_ci windowPair->divider_ = new WindowNode(property0); 755e0dac50fSopenharmony_ci 756e0dac50fSopenharmony_ci // define status_ 757e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::EMPTY; 758e0dac50fSopenharmony_ci 759e0dac50fSopenharmony_ci sptr<WindowNode> node1 = windowPair->secondary_; 760e0dac50fSopenharmony_ci sptr<WindowNode> node2 = windowPair->divider_; 761e0dac50fSopenharmony_ci windowPair->UpdateWindowPairStatus(); 762e0dac50fSopenharmony_ci ASSERT_EQ(WindowPairStatus::SECONDARY_AND_DIVIDER, windowPair->status_); 763e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->primary_); 764e0dac50fSopenharmony_ci ASSERT_EQ(node1, windowPair->secondary_); 765e0dac50fSopenharmony_ci ASSERT_EQ(node2, windowPair->divider_); 766e0dac50fSopenharmony_ci} 767e0dac50fSopenharmony_ci 768e0dac50fSopenharmony_ci/** 769e0dac50fSopenharmony_ci * @tc.name: UpdateWindowPairStatus 770e0dac50fSopenharmony_ci * @tc.desc: Update pair status 771e0dac50fSopenharmony_ci * @tc.type: FUNC 772e0dac50fSopenharmony_ci */ 773e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, UpdateWindowPairStatus05, Function | SmallTest | Level2) 774e0dac50fSopenharmony_ci{ 775e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 776e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 777e0dac50fSopenharmony_ci 778e0dac50fSopenharmony_ci // define primary_, secondary_, divider_ 779e0dac50fSopenharmony_ci windowPair->primary_ = nullptr; 780e0dac50fSopenharmony_ci windowPair->secondary_ = nullptr; 781e0dac50fSopenharmony_ci windowPair->divider_ = new WindowNode(property0); 782e0dac50fSopenharmony_ci 783e0dac50fSopenharmony_ci // define status_ 784e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::SINGLE_PRIMARY; 785e0dac50fSopenharmony_ci 786e0dac50fSopenharmony_ci sptr<WindowNode> node1 = windowPair->divider_; 787e0dac50fSopenharmony_ci windowPair->UpdateWindowPairStatus(); 788e0dac50fSopenharmony_ci ASSERT_EQ(WindowPairStatus::SINGLE_SPLIT, windowPair->status_); 789e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->primary_); 790e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->secondary_); 791e0dac50fSopenharmony_ci ASSERT_EQ(node1, windowPair->divider_); 792e0dac50fSopenharmony_ci} 793e0dac50fSopenharmony_ci 794e0dac50fSopenharmony_ci/** 795e0dac50fSopenharmony_ci * @tc.name: SwitchPosition 796e0dac50fSopenharmony_ci * @tc.desc: Switch the position of two paired window. 797e0dac50fSopenharmony_ci * @tc.type: FUNC 798e0dac50fSopenharmony_ci */ 799e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, SwitchPosition01, Function | SmallTest | Level2) 800e0dac50fSopenharmony_ci{ 801e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 802e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 803e0dac50fSopenharmony_ci 804e0dac50fSopenharmony_ci // define primary_, secondary_, divider_ 805e0dac50fSopenharmony_ci windowPair->primary_ = nullptr; 806e0dac50fSopenharmony_ci windowPair->secondary_ = nullptr; 807e0dac50fSopenharmony_ci windowPair->divider_ = new WindowNode(property0); 808e0dac50fSopenharmony_ci 809e0dac50fSopenharmony_ci sptr<WindowNode> node1 = windowPair->divider_; 810e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->primary_); 811e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->secondary_); 812e0dac50fSopenharmony_ci ASSERT_EQ(node1, windowPair->divider_); 813e0dac50fSopenharmony_ci} 814e0dac50fSopenharmony_ci 815e0dac50fSopenharmony_ci/** 816e0dac50fSopenharmony_ci * @tc.name: SwitchPosition 817e0dac50fSopenharmony_ci * @tc.desc: Switch the position of two paired window. 818e0dac50fSopenharmony_ci * @tc.type: FUNC 819e0dac50fSopenharmony_ci */ 820e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, SwitchPosition02, Function | SmallTest | Level2) 821e0dac50fSopenharmony_ci{ 822e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 823e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 824e0dac50fSopenharmony_ci property0->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 825e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 826e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 827e0dac50fSopenharmony_ci 828e0dac50fSopenharmony_ci // define primary_, secondary_ 829e0dac50fSopenharmony_ci windowPair->primary_ = new WindowNode(property0); 830e0dac50fSopenharmony_ci windowPair->secondary_ = new WindowNode(property1); 831e0dac50fSopenharmony_ci 832e0dac50fSopenharmony_ci windowPair->SwitchPosition(); 833e0dac50fSopenharmony_ci ASSERT_EQ(WindowMode::WINDOW_MODE_SPLIT_PRIMARY, windowPair->primary_->GetWindowMode()); 834e0dac50fSopenharmony_ci ASSERT_EQ(WindowMode::WINDOW_MODE_SPLIT_SECONDARY, windowPair->secondary_->GetWindowMode()); 835e0dac50fSopenharmony_ci} 836e0dac50fSopenharmony_ci 837e0dac50fSopenharmony_ci/** 838e0dac50fSopenharmony_ci * @tc.name: SwitchPosition 839e0dac50fSopenharmony_ci * @tc.desc: Switch the position of two paired window. 840e0dac50fSopenharmony_ci * @tc.type: FUNC 841e0dac50fSopenharmony_ci */ 842e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, SwitchPosition03, Function | SmallTest | Level2) 843e0dac50fSopenharmony_ci{ 844e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 845e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 846e0dac50fSopenharmony_ci property0->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 847e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 848e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 849e0dac50fSopenharmony_ci 850e0dac50fSopenharmony_ci // define primary_, secondary_ 851e0dac50fSopenharmony_ci windowPair->primary_ = new WindowNode(property0); 852e0dac50fSopenharmony_ci windowPair->secondary_ = new WindowNode(property1); 853e0dac50fSopenharmony_ci 854e0dac50fSopenharmony_ci windowPair->SwitchPosition(); 855e0dac50fSopenharmony_ci ASSERT_EQ(WindowMode::WINDOW_MODE_SPLIT_PRIMARY, windowPair->primary_->GetWindowMode()); 856e0dac50fSopenharmony_ci ASSERT_EQ(WindowMode::WINDOW_MODE_SPLIT_SECONDARY, windowPair->secondary_->GetWindowMode()); 857e0dac50fSopenharmony_ci} 858e0dac50fSopenharmony_ci 859e0dac50fSopenharmony_ci/** 860e0dac50fSopenharmony_ci * @tc.name: HandlePairedNodesChange 861e0dac50fSopenharmony_ci * @tc.desc: Update paired window node 862e0dac50fSopenharmony_ci * @tc.type: FUNC 863e0dac50fSopenharmony_ci */ 864e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, HandlePairedNodesChange01, Function | SmallTest | Level2) 865e0dac50fSopenharmony_ci{ 866e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 867e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 868e0dac50fSopenharmony_ci property0->SetWindowMode(WindowMode::WINDOW_MODE_FULLSCREEN); 869e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 870e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 871e0dac50fSopenharmony_ci 872e0dac50fSopenharmony_ci // define primary_, secondary_ 873e0dac50fSopenharmony_ci windowPair->primary_ = new WindowNode(property0); 874e0dac50fSopenharmony_ci windowPair->secondary_ = new WindowNode(property0); 875e0dac50fSopenharmony_ci 876e0dac50fSopenharmony_ci windowPair->HandlePairedNodesChange(); 877e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->primary_); 878e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->secondary_); 879e0dac50fSopenharmony_ci ASSERT_EQ(WindowPairStatus::EMPTY, windowPair->status_); 880e0dac50fSopenharmony_ci} 881e0dac50fSopenharmony_ci 882e0dac50fSopenharmony_ci/** 883e0dac50fSopenharmony_ci * @tc.name: HandlePairedNodesChange 884e0dac50fSopenharmony_ci * @tc.desc: Update paired window node 885e0dac50fSopenharmony_ci * @tc.type: FUNC 886e0dac50fSopenharmony_ci */ 887e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, HandlePairedNodesChange02, Function | SmallTest | Level2) 888e0dac50fSopenharmony_ci{ 889e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 890e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 891e0dac50fSopenharmony_ci property0->SetWindowMode(WindowMode::WINDOW_MODE_FULLSCREEN); 892e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 893e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 894e0dac50fSopenharmony_ci 895e0dac50fSopenharmony_ci // define primary_, secondary_ 896e0dac50fSopenharmony_ci windowPair->primary_ = new WindowNode(property0); 897e0dac50fSopenharmony_ci windowPair->secondary_ = new WindowNode(property1); 898e0dac50fSopenharmony_ci 899e0dac50fSopenharmony_ci sptr<WindowNode> tmp_node = windowPair->secondary_; 900e0dac50fSopenharmony_ci windowPair->HandlePairedNodesChange(); 901e0dac50fSopenharmony_ci ASSERT_EQ(tmp_node, windowPair->primary_); 902e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->secondary_); 903e0dac50fSopenharmony_ci ASSERT_EQ(WindowPairStatus::SINGLE_PRIMARY, windowPair->status_); 904e0dac50fSopenharmony_ci} 905e0dac50fSopenharmony_ci 906e0dac50fSopenharmony_ci/** 907e0dac50fSopenharmony_ci * @tc.name: HandlePairedNodesChange 908e0dac50fSopenharmony_ci * @tc.desc: Update paired window node 909e0dac50fSopenharmony_ci * @tc.type: FUNC 910e0dac50fSopenharmony_ci */ 911e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, HandlePairedNodesChange03, Function | SmallTest | Level2) 912e0dac50fSopenharmony_ci{ 913e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 914e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 915e0dac50fSopenharmony_ci property0->SetWindowMode(WindowMode::WINDOW_MODE_FULLSCREEN); 916e0dac50fSopenharmony_ci 917e0dac50fSopenharmony_ci // define primary_, secondary_ 918e0dac50fSopenharmony_ci windowPair->primary_ = nullptr; 919e0dac50fSopenharmony_ci windowPair->secondary_ = new WindowNode(property0); 920e0dac50fSopenharmony_ci 921e0dac50fSopenharmony_ci windowPair->HandlePairedNodesChange(); 922e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->primary_); 923e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->secondary_); 924e0dac50fSopenharmony_ci ASSERT_EQ(WindowPairStatus::EMPTY, windowPair->status_); 925e0dac50fSopenharmony_ci} 926e0dac50fSopenharmony_ci 927e0dac50fSopenharmony_ci/** 928e0dac50fSopenharmony_ci * @tc.name: HandlePairedNodesChange 929e0dac50fSopenharmony_ci * @tc.desc: Update paired window node 930e0dac50fSopenharmony_ci * @tc.type: FUNC 931e0dac50fSopenharmony_ci */ 932e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, HandlePairedNodesChange04, Function | SmallTest | Level2) 933e0dac50fSopenharmony_ci{ 934e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 935e0dac50fSopenharmony_ci sptr<WindowProperty> property0 = new WindowProperty(); 936e0dac50fSopenharmony_ci property0->SetWindowMode(WindowMode::WINDOW_MODE_FULLSCREEN); 937e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 938e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 939e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 940e0dac50fSopenharmony_ci property2->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 941e0dac50fSopenharmony_ci 942e0dac50fSopenharmony_ci // define primary_, secondary_ 943e0dac50fSopenharmony_ci windowPair->primary_ = new WindowNode(property2); 944e0dac50fSopenharmony_ci windowPair->secondary_ = new WindowNode(property0); 945e0dac50fSopenharmony_ci 946e0dac50fSopenharmony_ci sptr<WindowNode> tmp_node = windowPair->primary_; 947e0dac50fSopenharmony_ci windowPair->HandlePairedNodesChange(); 948e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->primary_); 949e0dac50fSopenharmony_ci ASSERT_EQ(tmp_node, windowPair->secondary_); 950e0dac50fSopenharmony_ci ASSERT_EQ(WindowPairStatus::SINGLE_SECONDARY, windowPair->status_); 951e0dac50fSopenharmony_ci} 952e0dac50fSopenharmony_ci 953e0dac50fSopenharmony_ci/** 954e0dac50fSopenharmony_ci * @tc.name: HandlePairedNodesChange 955e0dac50fSopenharmony_ci * @tc.desc: Update paired window node 956e0dac50fSopenharmony_ci * @tc.type: FUNC 957e0dac50fSopenharmony_ci */ 958e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, HandlePairedNodesChange05, Function | SmallTest | Level2) 959e0dac50fSopenharmony_ci{ 960e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 961e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 962e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 963e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 964e0dac50fSopenharmony_ci property2->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 965e0dac50fSopenharmony_ci 966e0dac50fSopenharmony_ci // define primary_, secondary_ 967e0dac50fSopenharmony_ci windowPair->primary_ = new WindowNode(property1); 968e0dac50fSopenharmony_ci windowPair->secondary_ = new WindowNode(property2); 969e0dac50fSopenharmony_ci 970e0dac50fSopenharmony_ci windowPair->HandlePairedNodesChange(); 971e0dac50fSopenharmony_ci ASSERT_EQ(WindowMode::WINDOW_MODE_SPLIT_PRIMARY, windowPair->primary_->GetWindowMode()); 972e0dac50fSopenharmony_ci ASSERT_EQ(WindowMode::WINDOW_MODE_SPLIT_SECONDARY, windowPair->secondary_->GetWindowMode()); 973e0dac50fSopenharmony_ci} 974e0dac50fSopenharmony_ci 975e0dac50fSopenharmony_ci/** 976e0dac50fSopenharmony_ci * @tc.name: HandleRemoveWindow 977e0dac50fSopenharmony_ci * @tc.desc: Handle removed window 978e0dac50fSopenharmony_ci * @tc.type: FUNC 979e0dac50fSopenharmony_ci */ 980e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, HandleRemoveWindow01, Function | SmallTest | Level2) 981e0dac50fSopenharmony_ci{ 982e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 983e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 984e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 985e0dac50fSopenharmony_ci windowPair->primary_ = new WindowNode(property1); 986e0dac50fSopenharmony_ci 987e0dac50fSopenharmony_ci sptr<WindowNode> node = nullptr; 988e0dac50fSopenharmony_ci windowPair->HandleRemoveWindow(node); 989e0dac50fSopenharmony_ci ASSERT_EQ(WindowMode::WINDOW_MODE_SPLIT_PRIMARY, windowPair->primary_->GetWindowMode()); 990e0dac50fSopenharmony_ci} 991e0dac50fSopenharmony_ci 992e0dac50fSopenharmony_ci/** 993e0dac50fSopenharmony_ci * @tc.name: HandleRemoveWindow 994e0dac50fSopenharmony_ci * @tc.desc: Handle removed window 995e0dac50fSopenharmony_ci * @tc.type: FUNC 996e0dac50fSopenharmony_ci */ 997e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, HandleRemoveWindow02, Function | SmallTest | Level2) 998e0dac50fSopenharmony_ci{ 999e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 1000e0dac50fSopenharmony_ci 1001e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 1002e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 1003e0dac50fSopenharmony_ci 1004e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property1); 1005e0dac50fSopenharmony_ci sptr<WindowNode> node2 = new WindowNode(property1); 1006e0dac50fSopenharmony_ci 1007e0dac50fSopenharmony_ci // define primary_, secondary_, status_ 1008e0dac50fSopenharmony_ci windowPair->primary_ = nullptr; 1009e0dac50fSopenharmony_ci windowPair->secondary_ = nullptr; 1010e0dac50fSopenharmony_ci windowPair->divider_ = nullptr; 1011e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::PRIMARY_AND_SECONDARY; 1012e0dac50fSopenharmony_ci 1013e0dac50fSopenharmony_ci IWindowMocker* w = new IWindowMocker; 1014e0dac50fSopenharmony_ci sptr<IWindow> window(w); 1015e0dac50fSopenharmony_ci node1->SetWindowToken(window); 1016e0dac50fSopenharmony_ci EXPECT_CALL(*w, UpdateWindowMode(_)).Times(1).WillOnce(Return(WMError::WM_OK)); 1017e0dac50fSopenharmony_ci windowPair->HandleRemoveWindow(node1); 1018e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->primary_); 1019e0dac50fSopenharmony_ci sptr<IWindow> window1 = nullptr; 1020e0dac50fSopenharmony_ci node1->SetWindowToken(window1); 1021e0dac50fSopenharmony_ci windowPair->HandleRemoveWindow(node1); 1022e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->primary_); 1023e0dac50fSopenharmony_ci} 1024e0dac50fSopenharmony_ci 1025e0dac50fSopenharmony_ci/** 1026e0dac50fSopenharmony_ci * @tc.name: TakePairSnapshot 1027e0dac50fSopenharmony_ci * @tc.desc: take pair snapsht 1028e0dac50fSopenharmony_ci * @tc.type: FUNC 1029e0dac50fSopenharmony_ci */ 1030e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, TakePairSnapshot01, Function | SmallTest | Level2) 1031e0dac50fSopenharmony_ci{ 1032e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 1033e0dac50fSopenharmony_ci 1034e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 1035e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 1036e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 1037e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 1038e0dac50fSopenharmony_ci 1039e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property1); 1040e0dac50fSopenharmony_ci sptr<WindowNode> node2 = new WindowNode(property2); 1041e0dac50fSopenharmony_ci 1042e0dac50fSopenharmony_ci // define primary_, secondary_, status_ 1043e0dac50fSopenharmony_ci windowPair->primary_ = node1; 1044e0dac50fSopenharmony_ci windowPair->secondary_ = node2; 1045e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::PAIRED_DONE; 1046e0dac50fSopenharmony_ci 1047e0dac50fSopenharmony_ci ASSERT_EQ(true, windowPair->TakePairSnapshot()); 1048e0dac50fSopenharmony_ci windowPair->primary_ = nullptr; 1049e0dac50fSopenharmony_ci ASSERT_EQ(false, windowPair->TakePairSnapshot()); 1050e0dac50fSopenharmony_ci windowPair->primary_ = node1; 1051e0dac50fSopenharmony_ci windowPair->secondary_ = nullptr; 1052e0dac50fSopenharmony_ci ASSERT_EQ(false, windowPair->TakePairSnapshot()); 1053e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::PRIMARY_AND_SECONDARY; 1054e0dac50fSopenharmony_ci ASSERT_EQ(false, windowPair->TakePairSnapshot()); 1055e0dac50fSopenharmony_ci} 1056e0dac50fSopenharmony_ci 1057e0dac50fSopenharmony_ci/** 1058e0dac50fSopenharmony_ci * @tc.name: ClearPairSnapshot 1059e0dac50fSopenharmony_ci * @tc.desc: Clear Pair Snapshot 1060e0dac50fSopenharmony_ci * @tc.type: FUNC 1061e0dac50fSopenharmony_ci */ 1062e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, ClearPairSnapshot01, Function | SmallTest | Level2) 1063e0dac50fSopenharmony_ci{ 1064e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 1065e0dac50fSopenharmony_ci 1066e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 1067e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 1068e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 1069e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 1070e0dac50fSopenharmony_ci 1071e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property1); 1072e0dac50fSopenharmony_ci sptr<WindowNode> node2 = new WindowNode(property2); 1073e0dac50fSopenharmony_ci 1074e0dac50fSopenharmony_ci // define primary_, secondary_, 1075e0dac50fSopenharmony_ci windowPair->primary_ = node1; 1076e0dac50fSopenharmony_ci windowPair->secondary_ = node2; 1077e0dac50fSopenharmony_ci 1078e0dac50fSopenharmony_ci windowPair->ClearPairSnapshot(); 1079e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->primary_->snapshot_); 1080e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->secondary_->snapshot_); 1081e0dac50fSopenharmony_ci 1082e0dac50fSopenharmony_ci windowPair->primary_ = nullptr; 1083e0dac50fSopenharmony_ci ASSERT_EQ(false, windowPair->TakePairSnapshot()); 1084e0dac50fSopenharmony_ci windowPair->primary_ = node1; 1085e0dac50fSopenharmony_ci windowPair->secondary_ = nullptr; 1086e0dac50fSopenharmony_ci ASSERT_EQ(false, windowPair->TakePairSnapshot()); 1087e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::PRIMARY_AND_SECONDARY; 1088e0dac50fSopenharmony_ci ASSERT_EQ(false, windowPair->TakePairSnapshot()); 1089e0dac50fSopenharmony_ci} 1090e0dac50fSopenharmony_ci/** 1091e0dac50fSopenharmony_ci * @tc.name: ExitSplitMode 1092e0dac50fSopenharmony_ci * @tc.desc: Exit Split Mode 1093e0dac50fSopenharmony_ci * @tc.type: FUNC 1094e0dac50fSopenharmony_ci */ 1095e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, ExitSplitMode01, Function | SmallTest | Level2) 1096e0dac50fSopenharmony_ci{ 1097e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 1098e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 1099e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 1100e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 1101e0dac50fSopenharmony_ci property2->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 1102e0dac50fSopenharmony_ci 1103e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property1); 1104e0dac50fSopenharmony_ci windowPair->primary_ = node1; 1105e0dac50fSopenharmony_ci sptr<WindowNode> node2 = new WindowNode(property2); 1106e0dac50fSopenharmony_ci windowPair->secondary_ = node2; 1107e0dac50fSopenharmony_ci windowPair->divider_ = nullptr; 1108e0dac50fSopenharmony_ci windowPair->ExitSplitMode(); 1109e0dac50fSopenharmony_ci ASSERT_EQ(nullptr, windowPair->divider_); 1110e0dac50fSopenharmony_ci} 1111e0dac50fSopenharmony_ci/** 1112e0dac50fSopenharmony_ci * @tc.name: ExitSplitMode 1113e0dac50fSopenharmony_ci * @tc.desc: Exit Split Mode 1114e0dac50fSopenharmony_ci * @tc.type: FUNC 1115e0dac50fSopenharmony_ci */ 1116e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, ExitSplitMode02, Function | SmallTest | Level2) 1117e0dac50fSopenharmony_ci{ 1118e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 1119e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 1120e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 1121e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 1122e0dac50fSopenharmony_ci property2->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 1123e0dac50fSopenharmony_ci sptr<WindowProperty> property3 = new WindowProperty(); 1124e0dac50fSopenharmony_ci property2->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 1125e0dac50fSopenharmony_ci 1126e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property1); 1127e0dac50fSopenharmony_ci windowPair->primary_ = node1; 1128e0dac50fSopenharmony_ci sptr<WindowNode> node2 = new WindowNode(property2); 1129e0dac50fSopenharmony_ci windowPair->secondary_ = node2; 1130e0dac50fSopenharmony_ci sptr<WindowNode> node3 = new WindowNode(property3); 1131e0dac50fSopenharmony_ci const Rect divider_rect2 = {0, 20, 100, 1}; 1132e0dac50fSopenharmony_ci const Rect primary_rect1 = {0, 0, 20, 20}; 1133e0dac50fSopenharmony_ci const Rect secondary_rect1 = {0, 20, 50, 70}; 1134e0dac50fSopenharmony_ci const Rect secondary_rect2 = {0, 20, 10, 10}; 1135e0dac50fSopenharmony_ci node3->SetWindowRect(divider_rect2); 1136e0dac50fSopenharmony_ci node1->SetWindowRect(primary_rect1); 1137e0dac50fSopenharmony_ci node2->SetWindowRect(secondary_rect1); 1138e0dac50fSopenharmony_ci windowPair->divider_ = node3; 1139e0dac50fSopenharmony_ci windowPair->primary_ = node1; 1140e0dac50fSopenharmony_ci windowPair->secondary_ = node2; 1141e0dac50fSopenharmony_ci windowPair->ExitSplitMode(); 1142e0dac50fSopenharmony_ci std::vector<wptr<WindowNode>> vec1 = MinimizeApp::needMinimizeAppNodes_[MinimizeReason::SPLIT_QUIT]; 1143e0dac50fSopenharmony_ci ASSERT_EQ(0, vec1.size()); 1144e0dac50fSopenharmony_ci node2->SetWindowRect(secondary_rect2); 1145e0dac50fSopenharmony_ci windowPair->secondary_ = node2; 1146e0dac50fSopenharmony_ci windowPair->ExitSplitMode(); 1147e0dac50fSopenharmony_ci std::vector<wptr<WindowNode>> vec2 = MinimizeApp::needMinimizeAppNodes_[MinimizeReason::SPLIT_QUIT]; 1148e0dac50fSopenharmony_ci ASSERT_EQ(0, vec2.size()); 1149e0dac50fSopenharmony_ci windowPair->Clear(); 1150e0dac50fSopenharmony_ci} 1151e0dac50fSopenharmony_ci/** 1152e0dac50fSopenharmony_ci * @tc.name: ExitSplitMode 1153e0dac50fSopenharmony_ci * @tc.desc: Exit Split Mode 1154e0dac50fSopenharmony_ci * @tc.type: FUNC 1155e0dac50fSopenharmony_ci */ 1156e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, ExitSplitMode03, Function | SmallTest | Level2) 1157e0dac50fSopenharmony_ci{ 1158e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 1159e0dac50fSopenharmony_ci sptr<WindowProperty> property1 = new WindowProperty(); 1160e0dac50fSopenharmony_ci property1->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY); 1161e0dac50fSopenharmony_ci sptr<WindowProperty> property2 = new WindowProperty(); 1162e0dac50fSopenharmony_ci property2->SetWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY); 1163e0dac50fSopenharmony_ci sptr<WindowProperty> property3 = new WindowProperty(); 1164e0dac50fSopenharmony_ci property2->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING); 1165e0dac50fSopenharmony_ci 1166e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(property1); 1167e0dac50fSopenharmony_ci windowPair->primary_ = node1; 1168e0dac50fSopenharmony_ci sptr<WindowNode> node2 = new WindowNode(property2); 1169e0dac50fSopenharmony_ci windowPair->secondary_ = node2; 1170e0dac50fSopenharmony_ci sptr<WindowNode> node3 = new WindowNode(property3); 1171e0dac50fSopenharmony_ci const Rect divider_rect1 = {20, 0, 1, 100}; 1172e0dac50fSopenharmony_ci const Rect primary_rect1 = {0, 0, 20, 20}; 1173e0dac50fSopenharmony_ci const Rect secondary_rect1 = {0, 20, 50, 70}; 1174e0dac50fSopenharmony_ci const Rect secondary_rect2 = {0, 20, 10, 20}; 1175e0dac50fSopenharmony_ci node3->SetWindowRect(divider_rect1); // is_vertical false 1176e0dac50fSopenharmony_ci node2->SetWindowRect(secondary_rect1); 1177e0dac50fSopenharmony_ci node1->SetWindowRect(primary_rect1); 1178e0dac50fSopenharmony_ci windowPair->divider_ = node3; 1179e0dac50fSopenharmony_ci windowPair->primary_ = node1; 1180e0dac50fSopenharmony_ci windowPair->secondary_ = node2; 1181e0dac50fSopenharmony_ci windowPair->ExitSplitMode(); 1182e0dac50fSopenharmony_ci std::vector<wptr<WindowNode>> vec1 = MinimizeApp::needMinimizeAppNodes_[MinimizeReason::SPLIT_QUIT]; 1183e0dac50fSopenharmony_ci ASSERT_EQ(0, vec1.size()); 1184e0dac50fSopenharmony_ci node2->SetWindowRect(secondary_rect2); 1185e0dac50fSopenharmony_ci windowPair->secondary_ = node2; 1186e0dac50fSopenharmony_ci std::vector<wptr<WindowNode>> vec2 = MinimizeApp::needMinimizeAppNodes_[MinimizeReason::SPLIT_QUIT]; 1187e0dac50fSopenharmony_ci ASSERT_EQ(0, vec2.size()); 1188e0dac50fSopenharmony_ci windowPair->Clear(); 1189e0dac50fSopenharmony_ci} 1190e0dac50fSopenharmony_ci 1191e0dac50fSopenharmony_ci 1192e0dac50fSopenharmony_ci/** 1193e0dac50fSopenharmony_ci * @tc.name: IsDuringSplit 1194e0dac50fSopenharmony_ci * @tc.desc: check function IsDuringSplit 1195e0dac50fSopenharmony_ci * @tc.type: FUNC 1196e0dac50fSopenharmony_ci */ 1197e0dac50fSopenharmony_ciHWTEST_F(WindowPairTest, IsDuringSplit, Function | SmallTest | Level2) 1198e0dac50fSopenharmony_ci{ 1199e0dac50fSopenharmony_ci sptr<WindowPair> windowPair = new WindowPair(0); 1200e0dac50fSopenharmony_ci auto result = windowPair->IsDuringSplit(); 1201e0dac50fSopenharmony_ci ASSERT_EQ(result, false); 1202e0dac50fSopenharmony_ci 1203e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::EMPTY; 1204e0dac50fSopenharmony_ci result = windowPair->IsDuringSplit(); 1205e0dac50fSopenharmony_ci ASSERT_EQ(result, false); 1206e0dac50fSopenharmony_ci 1207e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::SINGLE_PRIMARY; 1208e0dac50fSopenharmony_ci result = windowPair->IsDuringSplit(); 1209e0dac50fSopenharmony_ci ASSERT_EQ(result, true); 1210e0dac50fSopenharmony_ci 1211e0dac50fSopenharmony_ci windowPair->status_ = WindowPairStatus::PAIRED_DONE; 1212e0dac50fSopenharmony_ci windowPair->primary_ = nullptr; 1213e0dac50fSopenharmony_ci windowPair->secondary_ = nullptr; 1214e0dac50fSopenharmony_ci result = windowPair->IsDuringSplit(); 1215e0dac50fSopenharmony_ci ASSERT_EQ(result, true); 1216e0dac50fSopenharmony_ci 1217e0dac50fSopenharmony_ci sptr<WindowNode> node1 = new WindowNode(); 1218e0dac50fSopenharmony_ci node1->property_->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); 1219e0dac50fSopenharmony_ci windowPair->primary_ = node1; 1220e0dac50fSopenharmony_ci result = windowPair->IsDuringSplit(); 1221e0dac50fSopenharmony_ci ASSERT_EQ(result, true); 1222e0dac50fSopenharmony_ci 1223e0dac50fSopenharmony_ci sptr<WindowNode> node2 = new WindowNode(); 1224e0dac50fSopenharmony_ci node2->property_->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); 1225e0dac50fSopenharmony_ci windowPair->secondary_ = node2; 1226e0dac50fSopenharmony_ci result = windowPair->IsDuringSplit(); 1227e0dac50fSopenharmony_ci ASSERT_EQ(result, false); 1228e0dac50fSopenharmony_ci 1229e0dac50fSopenharmony_ci windowPair->primary_->property_->SetWindowType(WindowType::WINDOW_TYPE_LAUNCHER_RECENT); 1230e0dac50fSopenharmony_ci windowPair->secondary_->property_->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); 1231e0dac50fSopenharmony_ci result = windowPair->IsDuringSplit(); 1232e0dac50fSopenharmony_ci ASSERT_EQ(result, true); 1233e0dac50fSopenharmony_ci 1234e0dac50fSopenharmony_ci windowPair->primary_->property_->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); 1235e0dac50fSopenharmony_ci windowPair->secondary_->property_->SetWindowType(WindowType::WINDOW_TYPE_LAUNCHER_RECENT); 1236e0dac50fSopenharmony_ci ASSERT_EQ(result, true); 1237e0dac50fSopenharmony_ci} 1238e0dac50fSopenharmony_ci} 1239e0dac50fSopenharmony_ci} 1240e0dac50fSopenharmony_ci} 1241