1 /*
2 * Copyright (c) 2025 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
18 #define protected public
19 #define private public
20 #include "core/common/agingadapation/aging_adapation_dialog_util.h"
21 #include "core/components/dialog/dialog_properties.h"
22 #include "core/components_ng/pattern/button/button_pattern.h"
23 #include "core/components_ng/pattern/dialog/dialog_pattern.h"
24 #include "core/components_ng/pattern/dialog/dialog_view.h"
25 #include "core/components_ng/pattern/navigation/navigation_pattern.h"
26 #include "core/components_ng/pattern/navigation/title_bar_pattern.h"
27 #include "core/components_ng/pattern/navigation/tool_bar_pattern.h"
28 #include "core/components_ng/pattern/navrouter/navdestination_pattern.h"
29 #include "core/components_ng/pattern/text/text_pattern.h"
30 #include "test/mock/base/mock_system_bar_style.h"
31 #include "test/mock/core/common/mock_container.h"
32 #include "test/mock/core/common/mock_theme_manager.h"
33 #include "test/mock/core/pipeline/mock_pipeline_context.h"
34 #include "test/mock/core/render/mock_render_context.h"
35 #include "test/unittest/core/pattern/navigation/mock_navigation_stack.h"
36
37 using namespace testing;
38 using namespace testing::ext;
39 namespace OHOS::Ace::NG {
40
41 class NavDestinationPatternTestNg : public testing::Test {
42 public:
43 static void SetUpTestCase();
44 static void TearDownTestCase();
45 static RefPtr<FrameNode> CreateDialogNode();
46 };
47
SetUpTestCase()48 void NavDestinationPatternTestNg::SetUpTestCase()
49 {
50 MockPipelineContext::SetUp();
51 MockContainer::SetUp();
52
53 auto themeManager = AceType::MakeRefPtr<MockThemeManager>();
54 EXPECT_CALL(*themeManager, GetTheme(_)).WillRepeatedly([](ThemeType type) -> RefPtr<Theme> {
55 if (type == DialogTheme::TypeId()) {
56 return AceType::MakeRefPtr<DialogTheme>();
57 } else {
58 return nullptr;
59 }
60 });
61 MockPipelineContext::GetCurrent()->SetThemeManager(themeManager);
62 }
63
TearDownTestCase()64 void NavDestinationPatternTestNg::TearDownTestCase()
65 {
66 MockPipelineContext::TearDown();
67 MockContainer::TearDown();
68 }
69
CreateDialogNode()70 RefPtr<FrameNode> NavDestinationPatternTestNg::CreateDialogNode()
71 {
72 auto contentNode = FrameNode::CreateFrameNode(V2::BLANK_ETS_TAG, 100, AceType::MakeRefPtr<Pattern>());
73 DialogProperties dialogProperties {
74 .title = "Title",
75 .content = "Content",
76 .width = 300,
77 .height = 200,
78 };
79 return DialogView::CreateDialogNode(dialogProperties, contentNode);
80 }
81
82 /**
83 * @tc.name: NeedIgnoreKeyboard001
84 * @tc.desc: Branch: if (opts && (opts->type & KEYBOARD) && (opts->edges & BOTTOM)) = false
85 * Condition: opts = false
86 * @tc.type: FUNC
87 */
88 HWTEST_F(NavDestinationPatternTestNg, NeedIgnoreKeyboard001, TestSize.Level1)
89 {
90 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80090202() 91 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
92 auto navDestinationLayoutProperty = navDestinationNode->GetLayoutProperty<NavDestinationLayoutProperty>();
93 ASSERT_NE(navDestinationLayoutProperty, nullptr);
94 navDestinationLayoutProperty->safeAreaExpandOpts_ = nullptr;
95
96 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
97 ASSERT_NE(navDestinationPattern, nullptr);
98 bool ret = navDestinationPattern->NeedIgnoreKeyboard();
99 EXPECT_FALSE(ret);
100 }
101
102 /**
103 * @tc.name: NeedIgnoreKeyboard002
104 * @tc.desc: Branch: if (opts && (opts->type & KEYBOARD) && (opts->edges & BOTTOM)) = false
105 * Condition: opts = true, opts->type & KEYBOARD = false
106 * @tc.type: FUNC
107 */
108 HWTEST_F(NavDestinationPatternTestNg, NeedIgnoreKeyboard002, TestSize.Level1)
109 {
110 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80090302() 111 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
112 auto navDestinationLayoutProperty = navDestinationNode->GetLayoutProperty<NavDestinationLayoutProperty>();
113 ASSERT_NE(navDestinationLayoutProperty, nullptr);
114 navDestinationLayoutProperty->safeAreaExpandOpts_ = std::make_unique<SafeAreaExpandOpts>();
115 navDestinationLayoutProperty->safeAreaExpandOpts_->type = SAFE_AREA_TYPE_NONE;
116 navDestinationLayoutProperty->safeAreaExpandOpts_->edges = SAFE_AREA_EDGE_NONE;
117
118 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
119 ASSERT_NE(navDestinationPattern, nullptr);
120 bool ret = navDestinationPattern->NeedIgnoreKeyboard();
121 EXPECT_FALSE(ret);
122 }
123
124 /**
125 * @tc.name: NeedIgnoreKeyboard003
126 * @tc.desc: Branch: if (opts && (opts->type & KEYBOARD) && (opts->edges & BOTTOM)) = false
127 * Condition: opts = true, opts->type & KEYBOARD = true, opts->edges & BOTTOM = false
128 * @tc.type: FUNC
129 */
130 HWTEST_F(NavDestinationPatternTestNg, NeedIgnoreKeyboard003, TestSize.Level1)
131 {
132 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80090402() 133 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
134 auto navDestinationLayoutProperty = navDestinationNode->GetLayoutProperty<NavDestinationLayoutProperty>();
135 ASSERT_NE(navDestinationLayoutProperty, nullptr);
136 navDestinationLayoutProperty->safeAreaExpandOpts_ = std::make_unique<SafeAreaExpandOpts>();
137 navDestinationLayoutProperty->safeAreaExpandOpts_->type = SAFE_AREA_TYPE_KEYBOARD;
138 navDestinationLayoutProperty->safeAreaExpandOpts_->edges = SAFE_AREA_EDGE_NONE;
139
140 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
141 ASSERT_NE(navDestinationPattern, nullptr);
142 bool ret = navDestinationPattern->NeedIgnoreKeyboard();
143 EXPECT_FALSE(ret);
144 }
145
146 /**
147 * @tc.name: NeedIgnoreKeyboard004
148 * @tc.desc: Branch: if (opts && (opts->type & KEYBOARD) && (opts->edges & BOTTOM)) = true
149 * Condition: opts = true, opts->type & KEYBOARD = true, opts->edges & BOTTOM = true
150 * @tc.type: FUNC
151 */
152 HWTEST_F(NavDestinationPatternTestNg, NeedIgnoreKeyboard004, TestSize.Level1)
153 {
154 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80090502() 155 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
156 auto navDestinationLayoutProperty = navDestinationNode->GetLayoutProperty<NavDestinationLayoutProperty>();
157 ASSERT_NE(navDestinationLayoutProperty, nullptr);
158 navDestinationLayoutProperty->safeAreaExpandOpts_ = std::make_unique<SafeAreaExpandOpts>();
159 navDestinationLayoutProperty->safeAreaExpandOpts_->type = SAFE_AREA_TYPE_KEYBOARD;
160 navDestinationLayoutProperty->safeAreaExpandOpts_->edges = SAFE_AREA_EDGE_BOTTOM;
161
162 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
163 ASSERT_NE(navDestinationPattern, nullptr);
164 bool ret = navDestinationPattern->NeedIgnoreKeyboard();
165 EXPECT_TRUE(ret);
166 }
167
168 /**
169 * @tc.name: OnFontScaleConfigurationUpdate001
170 * @tc.desc: Branch: if (LessNotEqual(GetFontScale(), GetDialogBigFontSizeScale()) = true
171 * @tc.type: FUNC
172 */
173 HWTEST_F(NavDestinationPatternTestNg, OnFontScaleConfigurationUpdate001, TestSize.Level1)
174 {
175 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80090602() 176 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
177 navDestinationNode->titleBarNode_ = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80090702() 178 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
179 auto titleBarNode = AceType::DynamicCast<TitleBarNode>(navDestinationNode->GetTitleBarNode());
180 ASSERT_NE(titleBarNode, nullptr);
181 titleBarNode->backButton_ = FrameNode::CreateFrameNode(V2::BUTTON_ETS_TAG,
182 ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<ButtonPattern>());
183 auto backButtonNode = AceType::DynamicCast<FrameNode>(titleBarNode->GetBackButton());
184 ASSERT_NE(backButtonNode, nullptr);
185 auto gestureHub = backButtonNode->GetOrCreateGestureEventHub();
186 ASSERT_NE(gestureHub, nullptr);
__anon4ffe80090802(GestureEvent& info) 187 auto longPressCallback = [](GestureEvent& info) { };
188 auto longPressEvent = AceType::MakeRefPtr<LongPressEvent>(longPressCallback);
189 gestureHub->SetLongPressEvent(longPressEvent);
190 auto pipelineContext = navDestinationNode->GetContext();
191 ASSERT_NE(pipelineContext, nullptr);
192 pipelineContext->fontScale_ = AgingAdapationDialogUtil::GetDialogBigFontSizeScale() - 1.0f;
193
194 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
195 ASSERT_NE(navDestinationPattern, nullptr);
196 navDestinationPattern->OnFontScaleConfigurationUpdate();
197 ASSERT_NE(gestureHub->longPressEventActuator_, nullptr);
198 EXPECT_EQ(gestureHub->longPressEventActuator_->longPressEvent_, nullptr);
199 }
200
201 /**
202 * @tc.name: OnFontScaleConfigurationUpdate002
203 * @tc.desc: Branch: if (LessNotEqual(GetFontScale(), GetDialogBigFontSizeScale()) = false
204 * @tc.type: FUNC
205 */
206 HWTEST_F(NavDestinationPatternTestNg, OnFontScaleConfigurationUpdate002, TestSize.Level1)
207 {
208 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80090902() 209 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
210 navDestinationNode->titleBarNode_ = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80090a02() 211 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
212 auto titleBarNode = AceType::DynamicCast<TitleBarNode>(navDestinationNode->GetTitleBarNode());
213 ASSERT_NE(titleBarNode, nullptr);
214 titleBarNode->backButton_ = FrameNode::CreateFrameNode(V2::BUTTON_ETS_TAG,
215 ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<ButtonPattern>());
216 auto backButtonNode = AceType::DynamicCast<FrameNode>(titleBarNode->GetBackButton());
217 ASSERT_NE(backButtonNode, nullptr);
218 auto gestureHub = backButtonNode->GetOrCreateGestureEventHub();
219 ASSERT_NE(gestureHub, nullptr);
__anon4ffe80090b02(GestureEvent& info) 220 auto longPressCallback = [](GestureEvent& info) { };
221 auto longPressEvent = AceType::MakeRefPtr<LongPressEvent>(longPressCallback);
222 gestureHub->SetLongPressEvent(longPressEvent);
223 auto pipelineContext = navDestinationNode->GetContext();
224 ASSERT_NE(pipelineContext, nullptr);
225 pipelineContext->fontScale_ = AgingAdapationDialogUtil::GetDialogBigFontSizeScale() + 1.0f;
226
227 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
228 ASSERT_NE(navDestinationPattern, nullptr);
229 navDestinationPattern->OnFontScaleConfigurationUpdate();
230 ASSERT_NE(gestureHub->longPressEventActuator_, nullptr);
231 EXPECT_NE(gestureHub->longPressEventActuator_->longPressEvent_, nullptr);
232 }
233
234 /**
235 * @tc.name: SetSystemBarStyle001
236 * @tc.desc: Branch: if (!backupStyle_.has_value()) = true
237 * Branch: if (IsFullPageNavigation() && IsTopNavDestination(host)) = false
238 * Condition: IsFullPageNavigation() = false
239 * @tc.type: FUNC
240 */
241 HWTEST_F(NavDestinationPatternTestNg, SetSystemBarStyle001, TestSize.Level1)
242 {
243 auto navigationNode = NavigationGroupNode::GetOrCreateGroupNode(
__anon4ffe80090c02() 244 V2::NAVIGATION_VIEW_ETS_TAG, 101, []() { return AceType::MakeRefPtr<NavigationPattern>(); });
245 auto navigationPattern = navigationNode->GetPattern<NavigationPattern>();
246 ASSERT_NE(navigationPattern, nullptr);
247 auto navigationStack = AceType::MakeRefPtr<NavigationStack>();
248 navigationPattern->SetNavigationStack(navigationStack);
249 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80090d02() 250 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
251 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
252 ASSERT_NE(navDestinationPattern, nullptr);
253 navDestinationPattern->navigationNode_ = navigationNode;
254 navDestinationPattern->backupStyle_ = std::nullopt;
255 auto pipelineContext = navDestinationNode->GetContext();
256 ASSERT_NE(pipelineContext, nullptr);
257 auto windowManager = pipelineContext->GetWindowManager();
258 // Make GetSystemBarStyle return nullptr
259 windowManager->getSystemBarStyleCallback_ = nullptr;
260 navigationPattern->isFullPageNavigation_ = false;
261 std::optional<RefPtr<SystemBarStyle>> systemBarStyle = std::nullopt;
__anon4ffe80090e02(const RefPtr<SystemBarStyle>& style) 262 windowManager->SetSetSystemBarStyleCallBack([&systemBarStyle](const RefPtr<SystemBarStyle>& style) {
263 systemBarStyle = style;
264 });
265
266 auto mockSystemBarStyle = AceType::MakeRefPtr<MockSystemBarStyle>();
267 navDestinationPattern->SetSystemBarStyle(mockSystemBarStyle);
268 EXPECT_EQ(navDestinationPattern->backupStyle_, nullptr);
269 EXPECT_EQ(systemBarStyle, std::nullopt);
270 }
271
272 /**
273 * @tc.name: SetSystemBarStyle002
274 * @tc.desc: Branch: if (!backupStyle_.has_value()) = false
275 * Branch: if (IsFullPageNavigation() && IsTopNavDestination(host)) = false
276 * Condition: IsFullPageNavigation() = true, IsTopNavDestination(host) = false
277 * @tc.type: FUNC
278 */
279 HWTEST_F(NavDestinationPatternTestNg, SetSystemBarStyle002, TestSize.Level1)
280 {
281 auto navigationNode = NavigationGroupNode::GetOrCreateGroupNode(
__anon4ffe80090f02() 282 V2::NAVIGATION_VIEW_ETS_TAG, 101, []() { return AceType::MakeRefPtr<NavigationPattern>(); });
283 auto navigationPattern = navigationNode->GetPattern<NavigationPattern>();
284 ASSERT_NE(navigationPattern, nullptr);
285 auto navigationStack = AceType::MakeRefPtr<NavigationStack>();
286 navigationPattern->SetNavigationStack(navigationStack);
287 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80091002() 288 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
289 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
290 ASSERT_NE(navDestinationPattern, nullptr);
291 navDestinationPattern->navigationNode_ = navigationNode;
292 navDestinationPattern->backupStyle_ = AceType::MakeRefPtr<MockSystemBarStyle>();
293 auto pipelineContext = navDestinationNode->GetContext();
294 ASSERT_NE(pipelineContext, nullptr);
295 auto windowManager = pipelineContext->GetWindowManager();
296 // Make GetSystemBarStyle return nullptr
297 windowManager->getSystemBarStyleCallback_ = nullptr;
298 navigationPattern->isFullPageNavigation_ = true;
299 std::optional<RefPtr<SystemBarStyle>> systemBarStyle = std::nullopt;
__anon4ffe80091102(const RefPtr<SystemBarStyle>& style) 300 windowManager->SetSetSystemBarStyleCallBack([&systemBarStyle](const RefPtr<SystemBarStyle>& style) {
301 systemBarStyle = style;
302 });
303
304 auto mockSystemBarStyle = AceType::MakeRefPtr<MockSystemBarStyle>();
305 navDestinationPattern->SetSystemBarStyle(mockSystemBarStyle);
306 EXPECT_NE(navDestinationPattern->backupStyle_, nullptr);
307 EXPECT_EQ(systemBarStyle, std::nullopt);
308 }
309
310 /**
311 * @tc.name: SetSystemBarStyle003
312 * @tc.desc: Branch: if (IsFullPageNavigation() && IsTopNavDestination(host)) = true
313 * Condition: IsFullPageNavigation() = true, IsTopNavDestination(host) = true
314 * Branch: if (currStyle_.value() != nullptr) = true
315 * @tc.type: FUNC
316 */
317 HWTEST_F(NavDestinationPatternTestNg, SetSystemBarStyle003, TestSize.Level1)
318 {
319 auto navigationNode = NavigationGroupNode::GetOrCreateGroupNode(
__anon4ffe80091202() 320 V2::NAVIGATION_VIEW_ETS_TAG, 101, []() { return AceType::MakeRefPtr<NavigationPattern>(); });
321 auto navigationPattern = navigationNode->GetPattern<NavigationPattern>();
322 ASSERT_NE(navigationPattern, nullptr);
323 auto navigationStack = AceType::MakeRefPtr<NavigationStack>();
324 navigationPattern->SetNavigationStack(navigationStack);
325 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80091302() 326 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
327 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
328 ASSERT_NE(navDestinationPattern, nullptr);
329 navDestinationPattern->navigationNode_ = navigationNode;
330 navDestinationPattern->backupStyle_ = AceType::MakeRefPtr<MockSystemBarStyle>();
331 navigationPattern->isFullPageNavigation_ = true;
332 navigationStack->navPathList_.emplace_back(std::make_pair("Page1", navDestinationNode));
333 auto pipelineContext = navDestinationNode->GetContext();
334 ASSERT_NE(pipelineContext, nullptr);
335 auto windowManager = pipelineContext->GetWindowManager();
336 std::optional<RefPtr<SystemBarStyle>> systemBarStyle = std::nullopt;
__anon4ffe80091402(const RefPtr<SystemBarStyle>& style) 337 windowManager->SetSetSystemBarStyleCallBack([&systemBarStyle](const RefPtr<SystemBarStyle>& style) {
338 systemBarStyle = style;
339 });
340
341 auto mockSystemBarStyle = AceType::MakeRefPtr<MockSystemBarStyle>();
342 navDestinationPattern->SetSystemBarStyle(mockSystemBarStyle);
343 EXPECT_EQ(systemBarStyle, mockSystemBarStyle);
344 }
345
346 /**
347 * @tc.name: SetSystemBarStyle004
348 * @tc.desc: Branch: if (IsFullPageNavigation() && IsTopNavDestination(host)) = true
349 * Condition: IsFullPageNavigation() = true, IsTopNavDestination(host) = true
350 * Branch: if (currStyle_.value() != nullptr) = false
351 * @tc.type: FUNC
352 */
353 HWTEST_F(NavDestinationPatternTestNg, SetSystemBarStyle004, TestSize.Level1)
354 {
355 auto navigationNode = NavigationGroupNode::GetOrCreateGroupNode(
__anon4ffe80091502() 356 V2::NAVIGATION_VIEW_ETS_TAG, 101, []() { return AceType::MakeRefPtr<NavigationPattern>(); });
357 auto navigationPattern = navigationNode->GetPattern<NavigationPattern>();
358 ASSERT_NE(navigationPattern, nullptr);
359 auto navigationStack = AceType::MakeRefPtr<NavigationStack>();
360 navigationPattern->SetNavigationStack(navigationStack);
361 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80091602() 362 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
363 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
364 ASSERT_NE(navDestinationPattern, nullptr);
365 navDestinationPattern->navigationNode_ = navigationNode;
366 auto mockSystemBarStyle = AceType::MakeRefPtr<MockSystemBarStyle>();
367 navDestinationPattern->backupStyle_ = mockSystemBarStyle;
368 navigationPattern->backupStyle_ = mockSystemBarStyle;
369 navigationPattern->isFullPageNavigation_ = true;
370 navigationStack->navPathList_.emplace_back(std::make_pair("Page1", navDestinationNode));
371 auto pipelineContext = navDestinationNode->GetContext();
372 ASSERT_NE(pipelineContext, nullptr);
373 auto windowManager = pipelineContext->GetWindowManager();
374 std::optional<RefPtr<SystemBarStyle>> systemBarStyle = std::nullopt;
__anon4ffe80091702(const RefPtr<SystemBarStyle>& style) 375 windowManager->SetSetSystemBarStyleCallBack([&systemBarStyle](const RefPtr<SystemBarStyle>& style) {
376 systemBarStyle = style;
377 });
378
379 navDestinationPattern->SetSystemBarStyle(nullptr);
380 EXPECT_EQ(systemBarStyle, mockSystemBarStyle);
381 }
382
383 /**
384 * @tc.name: OnWindowHide001
385 * @tc.desc: Branch: if (!navPathInfo->GetIsEntry()) = true
386 * @tc.type: FUNC
387 */
388 HWTEST_F(NavDestinationPatternTestNg, OnWindowHide001, TestSize.Level1)
389 {
390 auto navigationNode = NavigationGroupNode::GetOrCreateGroupNode(
__anon4ffe80091802() 391 V2::NAVIGATION_VIEW_ETS_TAG, 101, []() { return AceType::MakeRefPtr<NavigationPattern>(); });
392 auto navigationPattern = navigationNode->GetPattern<NavigationPattern>();
393 ASSERT_NE(navigationPattern, nullptr);
394 auto mockNavigationStack = AceType::MakeRefPtr<MockNavigationStack>();
395 navigationPattern->SetNavigationStack(mockNavigationStack);
396 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80091902() 397 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
398 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
399 ASSERT_NE(navDestinationPattern, nullptr);
400 auto navDestinationContext = AceType::MakeRefPtr<NavDestinationContext>();
401 auto navPathInfo = AceType::MakeRefPtr<NavPathInfo>();
402 navDestinationContext->SetNavPathInfo(navPathInfo);
403 navDestinationPattern->SetNavDestinationContext(navDestinationContext);
404 navDestinationContext->pathInfo_->isEntry_ = false;
405 mockNavigationStack->SetIsEntryByIndex(navDestinationContext->GetIndex(), true);
406
407 navDestinationPattern->OnWindowHide();
408 EXPECT_EQ(navDestinationContext->pathInfo_->GetIsEntry(), false);
409 EXPECT_EQ(mockNavigationStack->mockIsEntryMap_[navDestinationContext->index_], true);
410 }
411
412 /**
413 * @tc.name: OnWindowHide002
414 * @tc.desc: Branch: if (!navPathInfo->GetIsEntry()) = false
415 * @tc.type: FUNC
416 */
417 HWTEST_F(NavDestinationPatternTestNg, OnWindowHide002, TestSize.Level1)
418 {
419 auto navigationNode = NavigationGroupNode::GetOrCreateGroupNode(
__anon4ffe80091a02() 420 V2::NAVIGATION_VIEW_ETS_TAG, 101, []() { return AceType::MakeRefPtr<NavigationPattern>(); });
421 auto navigationPattern = navigationNode->GetPattern<NavigationPattern>();
422 ASSERT_NE(navigationPattern, nullptr);
423 auto mockNavigationStack = AceType::MakeRefPtr<MockNavigationStack>();
424 navigationPattern->SetNavigationStack(mockNavigationStack);
425 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80091b02() 426 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
427 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
428 ASSERT_NE(navDestinationPattern, nullptr);
429 auto navDestinationContext = AceType::MakeRefPtr<NavDestinationContext>();
430 auto navPathInfo = AceType::MakeRefPtr<NavPathInfo>();
431 navDestinationContext->SetNavPathInfo(navPathInfo);
432 WeakPtr<NavigationStack> navigationStackWeak = navigationPattern->GetNavigationStack();
433 navDestinationContext->SetNavigationStack(navigationStackWeak);
434 navDestinationPattern->SetNavDestinationContext(navDestinationContext);
435 navDestinationContext->pathInfo_->isEntry_ = true;
436 mockNavigationStack->SetIsEntryByIndex(navDestinationContext->GetIndex(), true);
437
438 navDestinationPattern->OnWindowHide();
439 EXPECT_EQ(navDestinationContext->pathInfo_->GetIsEntry(), false);
440 EXPECT_EQ(mockNavigationStack->mockIsEntryMap_[navDestinationContext->index_], false);
441 }
442
443 /**
444 * @tc.name: OnWindowSizeChanged001
445 * @tc.desc: Branch: if (preWidth_.has_value() && preWidth_.value() != width) = false
446 * Condition: preWidth_.has_value() = false
447 * Branch: if (navDestinationGroupNode->GetPrevMenuIsCustomValue(false)) = false
448 * Branch: if (targetNum == maxMenuNums_) = false
449 * Branch: if (type == WindowSizeChangeReason::ROTATION) = false
450 * @tc.type: FUNC
451 */
452 HWTEST_F(NavDestinationPatternTestNg, OnWindowSizeChanged001, TestSize.Level1)
453 {
454 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80091c02() 455 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
456 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
457 ASSERT_NE(navDestinationPattern, nullptr);
458 int32_t width = 1000.0f;
459 int32_t height = 800.0f;
460 navDestinationPattern->preWidth_ = std::nullopt;
461 navDestinationNode->propPrevMenuIsCustom_ = false;
462 AnimationOption option;
__anon4ffe80091d02() 463 auto propertyCallback = []() {};
__anon4ffe80091e02() 464 auto finishCallback = []() {};
465 auto animation = AnimationUtils::StartAnimation(option, propertyCallback, finishCallback);
466 navDestinationPattern->barAnimations_.emplace(101, animation);
467 navDestinationPattern->maxMenuNums_ = 0;
468 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80091f02() 469 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
470 navDestinationNode->titleBarNode_ = titleBarNode;
471 auto titleBarPattern = titleBarNode->GetPattern<TitleBarPattern>();
472 ASSERT_NE(titleBarPattern, nullptr);
473 titleBarPattern->dialogNode_ = FrameNode::GetOrCreateFrameNode(V2::TEXT_ETS_TAG,
__anon4ffe80092002() 474 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TextPattern>(); });
475 auto largeFontPopUpDialogNode = FrameNode::GetOrCreateFrameNode(V2::TEXT_ETS_TAG,
__anon4ffe80092102() 476 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TextPattern>(); });
477 titleBarPattern->largeFontPopUpDialogNode_ = AceType::WeakClaim(AceType::RawPtr(largeFontPopUpDialogNode));
478
479 navDestinationPattern->OnWindowSizeChanged(width, height, WindowSizeChangeReason::MOVE);
480 EXPECT_EQ(navDestinationPattern->barAnimations_.size(), 1);
481 auto targetNum = SystemProperties::GetDeviceOrientation() == DeviceOrientation::LANDSCAPE
482 ? MAX_MENU_NUM_LARGE : MAX_MENU_NUM_SMALL;
483 EXPECT_EQ(navDestinationPattern->maxMenuNums_, targetNum);
484 EXPECT_NE(titleBarPattern->GetBackButtonDialogNode(), nullptr);
485 EXPECT_NE(titleBarPattern->GetLargeFontPopUpDialogNode(), nullptr);
486 }
487
488 /**
489 * @tc.name: OnWindowSizeChanged002
490 * @tc.desc: Branch: if (preWidth_.has_value() && preWidth_.value() != width) = false
491 * Condition: preWidth_.has_value() = true, preWidth_.value() != width = false
492 * Branch: if (navDestinationGroupNode->GetPrevMenuIsCustomValue(false)) = false
493 * Branch: if (targetNum == maxMenuNums_) = true
494 * Branch: if (type == WindowSizeChangeReason::ROTATION) = true
495 * @tc.type: FUNC
496 */
497 HWTEST_F(NavDestinationPatternTestNg, OnWindowSizeChanged002, TestSize.Level1)
498 {
499 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80092202() 500 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
501 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
502 ASSERT_NE(navDestinationPattern, nullptr);
503 int32_t width = 1000.0f;
504 int32_t height = 800.0f;
505 navDestinationPattern->preWidth_ = width;
506 navDestinationNode->propPrevMenuIsCustom_ = false;
507 AnimationOption option;
__anon4ffe80092302() 508 auto propertyCallback = []() {};
__anon4ffe80092402() 509 auto finishCallback = []() {};
510 auto animation = AnimationUtils::StartAnimation(option, propertyCallback, finishCallback);
511 navDestinationPattern->barAnimations_.emplace(101, animation);
512 auto targetNum = SystemProperties::GetDeviceOrientation() == DeviceOrientation::LANDSCAPE
513 ? MAX_MENU_NUM_LARGE : MAX_MENU_NUM_SMALL;
514 navDestinationPattern->maxMenuNums_ = targetNum;
515 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80092502() 516 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
517 navDestinationNode->titleBarNode_ = titleBarNode;
518 auto titleBarPattern = titleBarNode->GetPattern<TitleBarPattern>();
519 ASSERT_NE(titleBarPattern, nullptr);
520 titleBarPattern->dialogNode_ = FrameNode::GetOrCreateFrameNode(V2::TEXT_ETS_TAG,
__anon4ffe80092602() 521 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TextPattern>(); });
522 auto largeFontPopUpDialogNode = FrameNode::GetOrCreateFrameNode(V2::TEXT_ETS_TAG,
__anon4ffe80092702() 523 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TextPattern>(); });
524 titleBarPattern->largeFontPopUpDialogNode_ = AceType::WeakClaim(AceType::RawPtr(largeFontPopUpDialogNode));
525
526 navDestinationPattern->OnWindowSizeChanged(width, height, WindowSizeChangeReason::ROTATION);
527 EXPECT_EQ(navDestinationPattern->barAnimations_.size(), 1);
528 EXPECT_EQ(navDestinationPattern->maxMenuNums_, targetNum);
529 EXPECT_EQ(titleBarPattern->GetBackButtonDialogNode(), nullptr);
530 EXPECT_EQ(titleBarPattern->GetLargeFontPopUpDialogNode(), nullptr);
531 }
532
533 /**
534 * @tc.name: OnWindowSizeChanged003
535 * @tc.desc: Branch: if (preWidth_.has_value() && preWidth_.value() != width) = true
536 * Condition: preWidth_.has_value() = true, preWidth_.value() != width = true
537 * Branch: if (navDestinationGroupNode->GetPrevMenuIsCustomValue(false)) = false
538 * @tc.type: FUNC
539 */
540 HWTEST_F(NavDestinationPatternTestNg, OnWindowSizeChanged003, TestSize.Level1)
541 {
542 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80092802() 543 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
544 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
545 ASSERT_NE(navDestinationPattern, nullptr);
546 int32_t width = 1000.0f;
547 int32_t height = 800.0f;
548 navDestinationPattern->preWidth_ = width / 2;
549 navDestinationNode->propPrevMenuIsCustom_ = true;
550 AnimationOption option;
551 auto propertyCallback = [](
552
__anon4ffe80092902( ) 553 ) {};
__anon4ffe80092a02() 554 auto finishCallback = []() {};
555 auto animation = AnimationUtils::StartAnimation(option, propertyCallback, finishCallback);
556 navDestinationPattern->barAnimations_.emplace(101, animation);
557 navDestinationPattern->maxMenuNums_ = 0;
558
559 navDestinationPattern->OnWindowSizeChanged(width, height, WindowSizeChangeReason::ROTATION);
560 EXPECT_EQ(navDestinationPattern->barAnimations_.size(), 0);
561 EXPECT_EQ(navDestinationPattern->maxMenuNums_, 0);
562 }
563
564 /**
565 * @tc.name: CloseLongPressDialog001
566 * @tc.desc: Branch: if (backButtonDialogNode) = true
567 * Branch: if (menuItemDialogNode) = true
568 * @tc.type: FUNC
569 */
570 HWTEST_F(NavDestinationPatternTestNg, CloseLongPressDialog001, TestSize.Level1)
571 {
572 NavDestinationPatternTestNg::SetUpTestCase();
573 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80092b02() 574 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
575 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
576 ASSERT_NE(navDestinationPattern, nullptr);
577 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80092c02() 578 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
579 navDestinationNode->titleBarNode_ = titleBarNode;
580 auto titleBarPattern = titleBarNode->GetPattern<TitleBarPattern>();
581 ASSERT_NE(titleBarPattern, nullptr);
582 titleBarPattern->dialogNode_ = NavDestinationPatternTestNg::CreateDialogNode();
583 int32_t backButtonDialogNodeId = titleBarPattern->dialogNode_->GetId();
584 auto pipelineContext = navDestinationNode->GetContext();
585 ASSERT_NE(pipelineContext, nullptr);
586 auto overlayManager = pipelineContext->GetOverlayManager();
587 ASSERT_NE(overlayManager, nullptr);
588 overlayManager->dialogMap_.emplace(backButtonDialogNodeId, titleBarPattern->dialogNode_);
589 auto menuItemDialogNode = NavDestinationPatternTestNg::CreateDialogNode();
590 int32_t menuItemDialogNodeId = menuItemDialogNode->GetId();
591 titleBarPattern->largeFontPopUpDialogNode_ = AceType::WeakClaim(AceType::RawPtr(menuItemDialogNode));
592 overlayManager->dialogMap_.emplace(menuItemDialogNodeId, menuItemDialogNode);
593
594 navDestinationPattern->CloseLongPressDialog();
595 EXPECT_EQ(overlayManager->dialogMap_.find(backButtonDialogNodeId), overlayManager->dialogMap_.end());
596 EXPECT_EQ(overlayManager->dialogMap_.find(menuItemDialogNodeId), overlayManager->dialogMap_.end());
597 EXPECT_EQ(titleBarPattern->GetBackButtonDialogNode(), nullptr);
598 EXPECT_EQ(titleBarPattern->GetLargeFontPopUpDialogNode(), nullptr);
599 NavDestinationPatternTestNg::TearDownTestCase();
600 }
601
602 /**
603 * @tc.name: CloseLongPressDialog002
604 * @tc.desc: Branch: if (backButtonDialogNode) = false
605 * Branch: if (menuItemDialogNode) = false
606 * @tc.type: FUNC
607 */
608 HWTEST_F(NavDestinationPatternTestNg, CloseLongPressDialog002, TestSize.Level1)
609 {
610 NavDestinationPatternTestNg::SetUpTestCase();
611 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80092d02() 612 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
613 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
614 ASSERT_NE(navDestinationPattern, nullptr);
615 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80092e02() 616 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
617 navDestinationNode->titleBarNode_ = titleBarNode;
618 auto titleBarPattern = titleBarNode->GetPattern<TitleBarPattern>();
619 ASSERT_NE(titleBarPattern, nullptr);
620 titleBarPattern->dialogNode_ = nullptr;
621 titleBarPattern->largeFontPopUpDialogNode_ = nullptr;
622
623 navDestinationPattern->CloseLongPressDialog();
624 auto pipelineContext = navDestinationNode->GetContext();
625 ASSERT_NE(pipelineContext, nullptr);
626 auto overlayManager = pipelineContext->GetOverlayManager();
627 ASSERT_NE(overlayManager, nullptr);
628 EXPECT_EQ(overlayManager->dialogMap_.size(), 0);
629 EXPECT_EQ(titleBarPattern->GetBackButtonDialogNode(), nullptr);
630 EXPECT_EQ(titleBarPattern->GetLargeFontPopUpDialogNode(), nullptr);
631 NavDestinationPatternTestNg::TearDownTestCase();
632 }
633
634 /**
635 * @tc.name: UpdateBarHiddenOffset001
636 * @tc.desc: Branch: if (ctx.isBarShowing || ctx.isBarHiding) = true
637 * Condition: ctx.isBarShowing = true
638 * @tc.type: FUNC
639 */
640 HWTEST_F(NavDestinationPatternTestNg, UpdateBarHiddenOffset001, TestSize.Level1)
641 {
642 NavDestinationPatternTestNg::SetUpTestCase();
643 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80092f02() 644 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
645 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
646 ASSERT_NE(navDestinationPattern, nullptr);
647 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80093002() 648 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
649 navDestinationNode->titleBarNode_ = titleBarNode;
650 auto& swipeContext = navDestinationPattern->GetSwipeContext(false);
651 swipeContext.isBarShowing = true;
652 auto titleBarRenderContext = AceType::DynamicCast<MockRenderContext>(titleBarNode->GetRenderContext());
653 ASSERT_NE(titleBarRenderContext, nullptr);
654 titleBarRenderContext->UpdateTransformTranslate({ 0.0f, 50.0f, 0.0f });
655 titleBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 400.0f));
656 titleBarRenderContext->UpdateOpacity(1.0f);
657
658 navDestinationPattern->UpdateBarHiddenOffset(navDestinationNode, titleBarNode, 150.0f, false);
659 EXPECT_EQ(titleBarRenderContext->GetOpacity(), 1.0f);
660 NavDestinationPatternTestNg::TearDownTestCase();
661 }
662
663 /**
664 * @tc.name: UpdateBarHiddenOffset002
665 * @tc.desc: Branch: if (ctx.isBarShowing || ctx.isBarHiding) = true
666 * Condition: ctx.isBarShowing = false, ctx.isBarHiding = true
667 * @tc.type: FUNC
668 */
669 HWTEST_F(NavDestinationPatternTestNg, UpdateBarHiddenOffset002, TestSize.Level1)
670 {
671 NavDestinationPatternTestNg::SetUpTestCase();
672 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80093102() 673 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
674 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
675 ASSERT_NE(navDestinationPattern, nullptr);
676 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80093202() 677 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
678 navDestinationNode->titleBarNode_ = titleBarNode;
679 auto& swipeContext = navDestinationPattern->GetSwipeContext(false);
680 swipeContext.isBarShowing = false;
681 swipeContext.isBarHiding = true;
682 auto titleBarRenderContext = AceType::DynamicCast<MockRenderContext>(titleBarNode->GetRenderContext());
683 ASSERT_NE(titleBarRenderContext, nullptr);
684 titleBarRenderContext->UpdateTransformTranslate({ 0.0f, 50.0f, 0.0f });
685 titleBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 400.0f));
686 titleBarRenderContext->UpdateOpacity(1.0f);
687
688 navDestinationPattern->UpdateBarHiddenOffset(navDestinationNode, titleBarNode, 150.0f, false);
689 EXPECT_EQ(titleBarRenderContext->GetOpacity(), 1.0f);
690 NavDestinationPatternTestNg::TearDownTestCase();
691 }
692
693 /**
694 * @tc.name: UpdateBarHiddenOffset003
695 * @tc.desc: Branch: if (ctx.isBarShowing || ctx.isBarHiding) = false
696 * Condition: ctx.isBarShowing = false, ctx.isBarHiding = false
697 * Branch: if (!GetTitleOrToolBarTranslateAndHeight() || NearZero(barHeight)) = true
698 * Condition: !GetTitleOrToolBarTranslateAndHeight() = true
699 * @tc.type: FUNC
700 */
701 HWTEST_F(NavDestinationPatternTestNg, UpdateBarHiddenOffset003, TestSize.Level1)
702 {
703 NavDestinationPatternTestNg::SetUpTestCase();
704 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80093302() 705 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
706 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
707 ASSERT_NE(navDestinationPattern, nullptr);
708 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80093402() 709 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
710 navDestinationNode->titleBarNode_ = titleBarNode;
711 auto& swipeContext = navDestinationPattern->GetSwipeContext(false);
712 swipeContext.isBarShowing = false;
713 swipeContext.isBarHiding = false;
714 titleBarNode->renderContext_ = nullptr;
715
716 navDestinationPattern->UpdateBarHiddenOffset(navDestinationNode, titleBarNode, 150.0f, false);
717 EXPECT_EQ(titleBarNode->GetRenderContext(), nullptr);
718 NavDestinationPatternTestNg::TearDownTestCase();
719 }
720
721 /**
722 * @tc.name: UpdateBarHiddenOffset004
723 * @tc.desc: Branch: if (ctx.isBarShowing || ctx.isBarHiding) = false
724 * Condition: ctx.isBarShowing = false, ctx.isBarHiding = false
725 * Branch: if (!GetTitleOrToolBarTranslateAndHeight() || NearZero(barHeight)) = true
726 * Condition: !GetTitleOrToolBarTranslateAndHeight() = false, NearZero(barHeight) = true
727 * @tc.type: FUNC
728 */
729 HWTEST_F(NavDestinationPatternTestNg, UpdateBarHiddenOffset004, TestSize.Level1)
730 {
731 NavDestinationPatternTestNg::SetUpTestCase();
732 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80093502() 733 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
734 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
735 ASSERT_NE(navDestinationPattern, nullptr);
736 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80093602() 737 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
738 navDestinationNode->titleBarNode_ = titleBarNode;
739 auto& swipeContext = navDestinationPattern->GetSwipeContext(false);
740 swipeContext.isBarShowing = false;
741 swipeContext.isBarHiding = false;
742 auto titleBarRenderContext = AceType::DynamicCast<MockRenderContext>(titleBarNode->GetRenderContext());
743 ASSERT_NE(titleBarRenderContext, nullptr);
744 titleBarRenderContext->UpdateTransformTranslate({ 0.0f, 50.0f, 0.0f });
745 titleBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 0.0f));
746 titleBarRenderContext->UpdateOpacity(1.0f);
747
748 navDestinationPattern->UpdateBarHiddenOffset(navDestinationNode, titleBarNode, 150.0f, false);
749 EXPECT_EQ(titleBarRenderContext->GetOpacity(), 1.0f);
750 NavDestinationPatternTestNg::TearDownTestCase();
751 }
752
753 /**
754 * @tc.name: UpdateBarHiddenOffset005
755 * @tc.desc: Branch: if (ctx.isBarShowing || ctx.isBarHiding) = false
756 * Condition: ctx.isBarShowing = false, ctx.isBarHiding = false
757 * Branch: if (!GetTitleOrToolBarTranslateAndHeight() || NearZero(barHeight)) = false
758 * Condition: !GetTitleOrToolBarTranslateAndHeight() = false, NearZero(barHeight) = false
759 * Branch: if (isTitle) = false
760 * Branch: if (GreatOrEqual(threshold, halfBarHeight)) = false
761 * Branch: if (Positive(offset) && LessNotEqual(std::abs(preTranslate), threshold) &&
762 * GreatOrEqual(std::abs(newTranslate), threshold)) = false
763 * Condition: Positive(offset) = true, LessNotEqual(std::abs(preTranslate), threshold) = false
764 * Branch: if (Negative(offset) && LessNotEqual(barHeight - std::abs(preTranslate), threshold) &&
765 * GreatOrEqual(barHeight - std::abs(newTranslate), threshold)) = false
766 * Condition: Negative(offset) = false
767 * @tc.type: FUNC
768 */
769 HWTEST_F(NavDestinationPatternTestNg, UpdateBarHiddenOffset005, TestSize.Level1)
770 {
771 NavDestinationPatternTestNg::SetUpTestCase();
772 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80093702() 773 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
774 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
775 ASSERT_NE(navDestinationPattern, nullptr);
776 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80093802() 777 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
778 navDestinationNode->titleBarNode_ = titleBarNode;
779 auto& swipeContext = navDestinationPattern->GetSwipeContext(false);
780 swipeContext.isBarShowing = false;
781 swipeContext.isBarHiding = false;
782 auto titleBarRenderContext = AceType::DynamicCast<MockRenderContext>(titleBarNode->GetRenderContext());
783 ASSERT_NE(titleBarRenderContext, nullptr);
784 titleBarRenderContext->UpdateTransformTranslate({ 0.0f, 50.0f, 0.0f });
785 titleBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 400.0f));
786 titleBarRenderContext->UpdateOpacity(1.0f);
787
788 navDestinationPattern->UpdateBarHiddenOffset(navDestinationNode, titleBarNode, 150.0f, false);
789 EXPECT_EQ(titleBarRenderContext->GetOpacity(), 0.5f);
790 NavDestinationPatternTestNg::TearDownTestCase();
791 }
792
793 /**
794 * @tc.name: UpdateBarHiddenOffset006
795 * @tc.desc: Branch: if (ctx.isBarShowing || ctx.isBarHiding) = false
796 * Condition: ctx.isBarShowing = false, ctx.isBarHiding = false
797 * Branch: if (!GetTitleOrToolBarTranslateAndHeight() || NearZero(barHeight)) = false
798 * Condition: !GetTitleOrToolBarTranslateAndHeight() = false, NearZero(barHeight) = false
799 * Branch: if (isTitle) = true
800 * Branch: if (GreatOrEqual(threshold, halfBarHeight)) = true
801 * Branch: if (Positive(offset) && LessNotEqual(std::abs(preTranslate), threshold) &&
802 * GreatOrEqual(std::abs(newTranslate), threshold)) = false
803 * Condition: Positive(offset) = true, LessNotEqual(std::abs(preTranslate), threshold) = true,
804 * GreatOrEqual(std::abs(newTranslate), threshold)) = false
805 * Branch: if (Negative(offset) && LessNotEqual(barHeight - std::abs(preTranslate), threshold) &&
806 * GreatOrEqual(barHeight - std::abs(newTranslate), threshold)) = false
807 * Condition: Negative(offset) = false
808 * @tc.type: FUNC
809 */
810 HWTEST_F(NavDestinationPatternTestNg, UpdateBarHiddenOffset006, TestSize.Level1)
811 {
812 NavDestinationPatternTestNg::SetUpTestCase();
813 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80093902() 814 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
815 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
816 ASSERT_NE(navDestinationPattern, nullptr);
817 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80093a02() 818 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
819 navDestinationNode->titleBarNode_ = titleBarNode;
820 auto& swipeContext = navDestinationPattern->GetSwipeContext(false);
821 swipeContext.isBarShowing = false;
822 swipeContext.isBarHiding = false;
823 auto titleBarRenderContext = AceType::DynamicCast<MockRenderContext>(titleBarNode->GetRenderContext());
824 ASSERT_NE(titleBarRenderContext, nullptr);
825 titleBarRenderContext->UpdateTransformTranslate({ 0.0f, 0.0f, 0.0f });
826 titleBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 50.0f));
827 titleBarRenderContext->UpdateOpacity(1.0f);
828
829 navDestinationPattern->UpdateBarHiddenOffset(navDestinationNode, titleBarNode, 20.0f, true);
830 EXPECT_EQ(titleBarRenderContext->GetOpacity(), 0.6f);
831 NavDestinationPatternTestNg::TearDownTestCase();
832 }
833
834 /**
835 * @tc.name: UpdateBarHiddenOffset007
836 * @tc.desc: Branch: if (ctx.isBarShowing || ctx.isBarHiding) = false
837 * Condition: ctx.isBarShowing = false, ctx.isBarHiding = false
838 * Branch: if (!GetTitleOrToolBarTranslateAndHeight() || NearZero(barHeight)) = false
839 * Condition: !GetTitleOrToolBarTranslateAndHeight() = false, NearZero(barHeight) = false
840 * Branch: if (isTitle) = false
841 * Branch: if (GreatOrEqual(threshold, halfBarHeight)) = true
842 * Branch: if (Positive(offset) && LessNotEqual(std::abs(preTranslate), threshold) &&
843 * GreatOrEqual(std::abs(newTranslate), threshold)) = true
844 * Condition: Positive(offset) = true, LessNotEqual(std::abs(preTranslate), threshold) = true,
845 * GreatOrEqual(std::abs(newTranslate), threshold)) = true
846 * Branch: if (Negative(offset) && LessNotEqual(barHeight - std::abs(preTranslate), threshold) &&
847 * GreatOrEqual(barHeight - std::abs(newTranslate), threshold)) = false
848 * Condition: Negative(offset) = false
849 * @tc.type: FUNC
850 */
851 HWTEST_F(NavDestinationPatternTestNg, UpdateBarHiddenOffset007, TestSize.Level1)
852 {
853 NavDestinationPatternTestNg::SetUpTestCase();
854 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80093b02() 855 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
856 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
857 ASSERT_NE(navDestinationPattern, nullptr);
858 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80093c02() 859 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
860 navDestinationNode->toolBarNode_ = toolBarNode;
861 auto& swipeContext = navDestinationPattern->GetSwipeContext(false);
862 swipeContext.isBarShowing = false;
863 swipeContext.isBarHiding = false;
864 auto toolBarRenderContext = AceType::DynamicCast<MockRenderContext>(toolBarNode->GetRenderContext());
865 ASSERT_NE(toolBarRenderContext, nullptr);
866 toolBarRenderContext->UpdateTransformTranslate({ 0.0f, 10.0f, 0.0f });
867 toolBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 50.0f));
868 toolBarRenderContext->UpdateOpacity(1.0f);
869
870 navDestinationPattern->UpdateBarHiddenOffset(navDestinationNode, toolBarNode, 20.0f, false);
871 EXPECT_EQ(toolBarRenderContext->GetOpacity(), 0.0f);
872 NavDestinationPatternTestNg::TearDownTestCase();
873 }
874
875 /**
876 * @tc.name: UpdateBarHiddenOffset008
877 * @tc.desc: Branch: if (ctx.isBarShowing || ctx.isBarHiding) = false
878 * Condition: ctx.isBarShowing = false, ctx.isBarHiding = false
879 * Branch: if (!GetTitleOrToolBarTranslateAndHeight() || NearZero(barHeight)) = false
880 * Condition: !GetTitleOrToolBarTranslateAndHeight() = false, NearZero(barHeight) = false
881 * Branch: if (isTitle) = false
882 * Branch: if (GreatOrEqual(threshold, halfBarHeight)) = false
883 * Branch: if (Positive(offset) && LessNotEqual(std::abs(preTranslate), threshold) &&
884 * GreatOrEqual(std::abs(newTranslate), threshold)) = false
885 * Condition: Positive(offset) = false
886 * Branch: if (Negative(offset) && LessNotEqual(barHeight - std::abs(preTranslate), threshold) &&
887 * GreatOrEqual(barHeight - std::abs(newTranslate), threshold)) = false
888 * Condition: Negative(offset) = true, LessNotEqual(barHeight - std::abs(preTranslate), threshold) = false
889 * @tc.type: FUNC
890 */
891 HWTEST_F(NavDestinationPatternTestNg, UpdateBarHiddenOffset008, TestSize.Level1)
892 {
893 NavDestinationPatternTestNg::SetUpTestCase();
894 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80093d02() 895 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
896 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
897 ASSERT_NE(navDestinationPattern, nullptr);
898 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80093e02() 899 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
900 navDestinationNode->toolBarNode_ = toolBarNode;
901 auto& swipeContext = navDestinationPattern->GetSwipeContext(false);
902 swipeContext.isBarShowing = false;
903 swipeContext.isBarHiding = false;
904 auto toolBarRenderContext = AceType::DynamicCast<MockRenderContext>(toolBarNode->GetRenderContext());
905 ASSERT_NE(toolBarRenderContext, nullptr);
906 toolBarRenderContext->UpdateTransformTranslate({ 0.0f, 10.0f, 0.0f });
907 toolBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 50.0f));
908 toolBarRenderContext->UpdateOpacity(1.0f);
909
910 navDestinationPattern->UpdateBarHiddenOffset(navDestinationNode, toolBarNode, -20.0f, false);
911 EXPECT_EQ(toolBarRenderContext->GetOpacity(), 1.0f);
912 NavDestinationPatternTestNg::TearDownTestCase();
913 }
914
915 /**
916 * @tc.name: UpdateBarHiddenOffset009
917 * @tc.desc: Branch: if (ctx.isBarShowing || ctx.isBarHiding) = false
918 * Condition: ctx.isBarShowing = false, ctx.isBarHiding = false
919 * Branch: if (!GetTitleOrToolBarTranslateAndHeight() || NearZero(barHeight)) = false
920 * Condition: !GetTitleOrToolBarTranslateAndHeight() = false, NearZero(barHeight) = false
921 * Branch: if (isTitle) = false
922 * Branch: if (GreatOrEqual(threshold, halfBarHeight)) = false
923 * Branch: if (Positive(offset) && LessNotEqual(std::abs(preTranslate), threshold) &&
924 * GreatOrEqual(std::abs(newTranslate), threshold)) = false
925 * Condition: Positive(offset) = false
926 * Branch: if (Negative(offset) && LessNotEqual(barHeight - std::abs(preTranslate), threshold) &&
927 * GreatOrEqual(barHeight - std::abs(newTranslate), threshold)) = false
928 * Condition: Negative(offset) = true, LessNotEqual(barHeight - std::abs(preTranslate), threshold) = true,
929 * GreatOrEqual(barHeight - std::abs(newTranslate), threshold)) = false
930 * @tc.type: FUNC
931 */
932 HWTEST_F(NavDestinationPatternTestNg, UpdateBarHiddenOffset009, TestSize.Level1)
933 {
934 NavDestinationPatternTestNg::SetUpTestCase();
935 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80093f02() 936 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
937 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
938 ASSERT_NE(navDestinationPattern, nullptr);
939 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80094002() 940 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
941 navDestinationNode->toolBarNode_ = toolBarNode;
942 auto& swipeContext = navDestinationPattern->GetSwipeContext(false);
943 swipeContext.isBarShowing = false;
944 swipeContext.isBarHiding = false;
945 auto toolBarRenderContext = AceType::DynamicCast<MockRenderContext>(toolBarNode->GetRenderContext());
946 ASSERT_NE(toolBarRenderContext, nullptr);
947 toolBarRenderContext->UpdateTransformTranslate({ 0.0f, 30.0f, 0.0f });
948 toolBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 50.0f));
949 toolBarRenderContext->UpdateOpacity(1.0f);
950
951 navDestinationPattern->UpdateBarHiddenOffset(navDestinationNode, toolBarNode, -1.0f, false);
952 EXPECT_TRUE(NearEqual(toolBarRenderContext->GetOpacity().value_or(0.0f), 0.42f));
953 NavDestinationPatternTestNg::TearDownTestCase();
954 }
955
956 /**
957 * @tc.name: UpdateBarHiddenOffset010
958 * @tc.desc: Branch: if (ctx.isBarShowing || ctx.isBarHiding) = false
959 * Condition: ctx.isBarShowing = false, ctx.isBarHiding = false
960 * Branch: if (!GetTitleOrToolBarTranslateAndHeight() || NearZero(barHeight)) = false
961 * Condition: !GetTitleOrToolBarTranslateAndHeight() = false, NearZero(barHeight) = false
962 * Branch: if (isTitle) = false
963 * Branch: if (GreatOrEqual(threshold, halfBarHeight)) = false
964 * Branch: if (Positive(offset) && LessNotEqual(std::abs(preTranslate), threshold) &&
965 * GreatOrEqual(std::abs(newTranslate), threshold)) = false
966 * Condition: Positive(offset) = false
967 * Branch: if (Negative(offset) && LessNotEqual(barHeight - std::abs(preTranslate), threshold) &&
968 * GreatOrEqual(barHeight - std::abs(newTranslate), threshold)) = true
969 * Condition: Negative(offset) = true, LessNotEqual(barHeight - std::abs(preTranslate), threshold) = true,
970 * GreatOrEqual(barHeight - std::abs(newTranslate), threshold)) = true
971 * @tc.type: FUNC
972 */
973 HWTEST_F(NavDestinationPatternTestNg, UpdateBarHiddenOffset010, TestSize.Level1)
974 {
975 NavDestinationPatternTestNg::SetUpTestCase();
976 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80094102() 977 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
978 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
979 ASSERT_NE(navDestinationPattern, nullptr);
980 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80094202() 981 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
982 navDestinationNode->toolBarNode_ = toolBarNode;
983 auto& swipeContext = navDestinationPattern->GetSwipeContext(false);
984 swipeContext.isBarShowing = false;
985 swipeContext.isBarHiding = false;
986 auto toolBarRenderContext = AceType::DynamicCast<MockRenderContext>(toolBarNode->GetRenderContext());
987 ASSERT_NE(toolBarRenderContext, nullptr);
988 toolBarRenderContext->UpdateTransformTranslate({ 0.0f, 30.0f, 0.0f });
989 toolBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 50.0f));
990 toolBarRenderContext->UpdateOpacity(1.0f);
991
992 navDestinationPattern->UpdateBarHiddenOffset(navDestinationNode, toolBarNode, -10.0f, false);
993 EXPECT_EQ(toolBarRenderContext->GetOpacity(), 1.0f);
994 NavDestinationPatternTestNg::TearDownTestCase();
995 }
996
997 /**
998 * @tc.name: UpdateTitleAndToolBarHiddenOffset001
999 * @tc.desc: Branch: if (EnableTitleBarSwipe(nodeBase)) = false
1000 * Branch: if (EnableToolBarSwipe(nodeBase)) = false
1001 * @tc.type: FUNC
1002 */
1003 HWTEST_F(NavDestinationPatternTestNg, UpdateTitleAndToolBarHiddenOffset001, TestSize.Level1)
1004 {
1005 NavDestinationPatternTestNg::SetUpTestCase();
1006 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80094302() 1007 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1008 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1009 ASSERT_NE(navDestinationPattern, nullptr);
1010 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80094402() 1011 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
1012 navDestinationNode->titleBarNode_ = titleBarNode;
1013 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80094502() 1014 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
1015 navDestinationNode->toolBarNode_ = toolBarNode;
1016 auto navDestinationLayoutProperty = navDestinationNode->GetLayoutProperty<NavDestinationLayoutPropertyBase>();
1017 navDestinationLayoutProperty->propHideTitleBar_ = true;
1018 navDestinationLayoutProperty->propHideToolBar_ = true;
1019 auto titleBarRenderContext = AceType::DynamicCast<MockRenderContext>(titleBarNode->GetRenderContext());
1020 ASSERT_NE(titleBarRenderContext, nullptr);
1021 titleBarRenderContext->UpdateTransformTranslate({ 0.0f, 50.0f, 0.0f });
1022 titleBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 400.0f));
1023 titleBarRenderContext->UpdateOpacity(1.0f);
1024 auto toolBarRenderContext = AceType::DynamicCast<MockRenderContext>(toolBarNode->GetRenderContext());
1025 ASSERT_NE(toolBarRenderContext, nullptr);
1026 toolBarRenderContext->UpdateTransformTranslate({ 0.0f, 50.0f, 0.0f });
1027 toolBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 400.0f));
1028 toolBarRenderContext->UpdateOpacity(1.0f);
1029
1030 navDestinationPattern->UpdateTitleAndToolBarHiddenOffset(0.0f);
1031 EXPECT_EQ(titleBarRenderContext->GetOpacity(), 1.0f);
1032 EXPECT_EQ(toolBarRenderContext->GetOpacity(), 1.0f);
1033 NavDestinationPatternTestNg::TearDownTestCase();
1034 }
1035
1036 /**
1037 * @tc.name: UpdateTitleAndToolBarHiddenOffset002
1038 * @tc.desc: Branch: if (EnableTitleBarSwipe(nodeBase)) = true
1039 * Branch: if (EnableToolBarSwipe(nodeBase)) = true
1040 * @tc.type: FUNC
1041 */
1042 HWTEST_F(NavDestinationPatternTestNg, UpdateTitleAndToolBarHiddenOffset002, TestSize.Level1)
1043 {
1044 NavDestinationPatternTestNg::SetUpTestCase();
1045 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80094602() 1046 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1047 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1048 ASSERT_NE(navDestinationPattern, nullptr);
1049 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80094702() 1050 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
1051 navDestinationNode->titleBarNode_ = titleBarNode;
1052 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80094802() 1053 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
1054 navDestinationNode->toolBarNode_ = toolBarNode;
1055 auto navDestinationLayoutProperty = navDestinationNode->GetLayoutProperty<NavDestinationLayoutPropertyBase>();
1056 navDestinationLayoutProperty->propHideTitleBar_ = false;
1057 navDestinationLayoutProperty->propHideToolBar_ = false;
1058 auto titleBarRenderContext = AceType::DynamicCast<MockRenderContext>(titleBarNode->GetRenderContext());
1059 ASSERT_NE(titleBarRenderContext, nullptr);
1060 titleBarRenderContext->UpdateTransformTranslate({ 0.0f, 50.0f, 0.0f });
1061 titleBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 400.0f));
1062 titleBarRenderContext->UpdateOpacity(1.0f);
1063 auto toolBarRenderContext = AceType::DynamicCast<MockRenderContext>(toolBarNode->GetRenderContext());
1064 ASSERT_NE(toolBarRenderContext, nullptr);
1065 toolBarRenderContext->UpdateTransformTranslate({ 0.0f, 50.0f, 0.0f });
1066 toolBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 400.0f));
1067 toolBarRenderContext->UpdateOpacity(1.0f);
1068
1069 navDestinationPattern->UpdateTitleAndToolBarHiddenOffset(0.0f);
1070 EXPECT_EQ(titleBarRenderContext->GetOpacity(), 1.0f);
1071 EXPECT_EQ(toolBarRenderContext->GetOpacity(), 0.875f);
1072 NavDestinationPatternTestNg::TearDownTestCase();
1073 }
1074
1075 /**
1076 * @tc.name: CancelShowTitleAndToolBarTask001
1077 * @tc.desc: Branch: if (titleBarSwipeContext_.showBarTask) = true
1078 * Branch: if (toolBarSwipeContext_.showBarTask) = true
1079 * @tc.type: FUNC
1080 */
1081 HWTEST_F(NavDestinationPatternTestNg, CancelShowTitleAndToolBarTask001, TestSize.Level1)
1082 {
1083 NavDestinationPatternTestNg::SetUpTestCase();
1084 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80094902() 1085 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1086 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1087 ASSERT_NE(navDestinationPattern, nullptr);
__anon4ffe80094a02null1088 navDestinationPattern->titleBarSwipeContext_.showBarTask.Reset([] { });
__anon4ffe80094b02null1089 navDestinationPattern->toolBarSwipeContext_.showBarTask.Reset([] { });
1090
1091 navDestinationPattern->CancelShowTitleAndToolBarTask();
1092 EXPECT_FALSE(navDestinationPattern->titleBarSwipeContext_.showBarTask);
1093 EXPECT_FALSE(navDestinationPattern->toolBarSwipeContext_.showBarTask);
1094 NavDestinationPatternTestNg::TearDownTestCase();
1095 }
1096
1097 /**
1098 * @tc.name: CancelShowTitleAndToolBarTask002
1099 * @tc.desc: Branch: if (titleBarSwipeContext_.showBarTask) = false
1100 * Branch: if (toolBarSwipeContext_.showBarTask) = false
1101 * @tc.type: FUNC
1102 */
1103 HWTEST_F(NavDestinationPatternTestNg, CancelShowTitleAndToolBarTask002, TestSize.Level1)
1104 {
1105 NavDestinationPatternTestNg::SetUpTestCase();
1106 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80094c02() 1107 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1108 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1109 ASSERT_NE(navDestinationPattern, nullptr);
1110 navDestinationPattern->titleBarSwipeContext_.showBarTask.Reset(nullptr);
1111 navDestinationPattern->toolBarSwipeContext_.showBarTask.Reset(nullptr);
1112
1113 navDestinationPattern->CancelShowTitleAndToolBarTask();
1114 EXPECT_FALSE(navDestinationPattern->titleBarSwipeContext_.showBarTask);
1115 EXPECT_FALSE(navDestinationPattern->toolBarSwipeContext_.showBarTask);
1116 NavDestinationPatternTestNg::TearDownTestCase();
1117 }
1118
1119 /**
1120 * @tc.name: ResetBarState001
1121 * @tc.desc: Branch: if (ctx.isBarHiding || ctx.isBarShowing) = true
1122 * Condition: ctx.isBarHiding = true
1123 * @tc.type: FUNC
1124 */
1125 HWTEST_F(NavDestinationPatternTestNg, ResetBarState001, TestSize.Level1)
1126 {
1127 NavDestinationPatternTestNg::SetUpTestCase();
1128 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80094d02() 1129 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1130 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1131 ASSERT_NE(navDestinationPattern, nullptr);
1132 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80094e02() 1133 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
1134 navDestinationNode->toolBarNode_ = toolBarNode;
1135 auto& swipeContext = navDestinationPattern->GetSwipeContext(false);
1136 swipeContext.isBarHiding = true;
1137 swipeContext.isBarShowing = false;
1138 auto toolBarRenderContext = AceType::DynamicCast<MockRenderContext>(toolBarNode->GetRenderContext());
1139 ASSERT_NE(toolBarRenderContext, nullptr);
1140 toolBarRenderContext->UpdateTransformTranslate({ 0.0f, 120.0f, 0.0f });
1141 toolBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 100.0f));
1142 toolBarRenderContext->UpdateOpacity(1.0f);
1143
1144 navDestinationPattern->ResetBarState(navDestinationNode, toolBarNode, false);
1145 EXPECT_EQ(toolBarRenderContext->GetOpacity(), 1.0f);
1146 NavDestinationPatternTestNg::TearDownTestCase();
1147 }
1148
1149 /**
1150 * @tc.name: ResetBarState002
1151 * @tc.desc: Branch: if (ctx.isBarHiding || ctx.isBarShowing) = true
1152 * Condition: ctx.isBarHiding = false, ctx.isBarShowing = true
1153 * @tc.type: FUNC
1154 */
1155 HWTEST_F(NavDestinationPatternTestNg, ResetBarState002, TestSize.Level1)
1156 {
1157 NavDestinationPatternTestNg::SetUpTestCase();
1158 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80094f02() 1159 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1160 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1161 ASSERT_NE(navDestinationPattern, nullptr);
1162 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80095002() 1163 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
1164 navDestinationNode->toolBarNode_ = toolBarNode;
1165 auto& swipeContext = navDestinationPattern->GetSwipeContext(false);
1166 swipeContext.isBarHiding = false;
1167 swipeContext.isBarShowing = true;
1168 auto toolBarRenderContext = AceType::DynamicCast<MockRenderContext>(toolBarNode->GetRenderContext());
1169 ASSERT_NE(toolBarRenderContext, nullptr);
1170 toolBarRenderContext->UpdateTransformTranslate({ 0.0f, 120.0f, 0.0f });
1171 toolBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 100.0f));
1172 toolBarRenderContext->UpdateOpacity(1.0f);
1173
1174 navDestinationPattern->ResetBarState(navDestinationNode, toolBarNode, false);
1175 EXPECT_EQ(toolBarRenderContext->GetOpacity(), 1.0f);
1176 NavDestinationPatternTestNg::TearDownTestCase();
1177 }
1178
1179 /**
1180 * @tc.name: ResetBarState003
1181 * @tc.desc: Branch: if (ctx.isBarHiding || ctx.isBarShowing) = false
1182 * Condition: ctx.isBarHiding = false, ctx.isBarShowing = false
1183 * Branch: if (!GetTitleOrToolBarTranslateAndHeight() || NearZero(barHeight)) = true
1184 * Condition: !GetTitleOrToolBarTranslateAndHeight() = true
1185 * @tc.type: FUNC
1186 */
1187 HWTEST_F(NavDestinationPatternTestNg, ResetBarState003, TestSize.Level1)
1188 {
1189 NavDestinationPatternTestNg::SetUpTestCase();
1190 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80095102() 1191 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1192 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1193 ASSERT_NE(navDestinationPattern, nullptr);
1194 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80095202() 1195 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
1196 navDestinationNode->toolBarNode_ = toolBarNode;
1197 auto& swipeContext = navDestinationPattern->GetSwipeContext(false);
1198 swipeContext.isBarHiding = false;
1199 swipeContext.isBarShowing = false;
1200 toolBarNode->renderContext_ = nullptr;
1201
1202 navDestinationPattern->ResetBarState(navDestinationNode, toolBarNode, false);
1203 EXPECT_EQ(toolBarNode->GetRenderContext(), nullptr);
1204 NavDestinationPatternTestNg::TearDownTestCase();
1205 }
1206
1207 /**
1208 * @tc.name: ResetBarState004
1209 * @tc.desc: Branch: if (ctx.isBarHiding || ctx.isBarShowing) = false
1210 * Condition: ctx.isBarHiding = false, ctx.isBarShowing = false
1211 * Branch: if (!GetTitleOrToolBarTranslateAndHeight() || NearZero(barHeight)) = true
1212 * Condition: !GetTitleOrToolBarTranslateAndHeight() = false, NearZero(barHeight) = true
1213 * @tc.type: FUNC
1214 */
1215 HWTEST_F(NavDestinationPatternTestNg, ResetBarState004, TestSize.Level1)
1216 {
1217 NavDestinationPatternTestNg::SetUpTestCase();
1218 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80095302() 1219 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1220 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1221 ASSERT_NE(navDestinationPattern, nullptr);
1222 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80095402() 1223 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
1224 navDestinationNode->toolBarNode_ = toolBarNode;
1225 auto& swipeContext = navDestinationPattern->GetSwipeContext(false);
1226 swipeContext.isBarHiding = false;
1227 swipeContext.isBarShowing = false;
1228 auto toolBarRenderContext = AceType::DynamicCast<MockRenderContext>(toolBarNode->GetRenderContext());
1229 ASSERT_NE(toolBarRenderContext, nullptr);
1230 toolBarRenderContext->UpdateTransformTranslate({ 0.0f, 120.0f, 0.0f });
1231 toolBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 0.0f));
1232 toolBarRenderContext->UpdateOpacity(1.0f);
1233
1234 navDestinationPattern->ResetBarState(navDestinationNode, toolBarNode, false);
1235 EXPECT_EQ(toolBarRenderContext->GetOpacity(), 1.0f);
1236 NavDestinationPatternTestNg::TearDownTestCase();
1237 }
1238
1239 /**
1240 * @tc.name: ResetBarState005
1241 * @tc.desc: Branch: if (ctx.isBarHiding || ctx.isBarShowing) = false
1242 * Condition: ctx.isBarHiding = false, ctx.isBarShowing = false
1243 * Branch: if (!GetTitleOrToolBarTranslateAndHeight() || NearZero(barHeight)) = false
1244 * Condition: !GetTitleOrToolBarTranslateAndHeight() = false, NearZero(barHeight) = false
1245 * Branch: if (GreatOrEqual(threshold, halfBarHeight)) = false
1246 * Branch: if (GreatNotEqual(showAreaHeight, 0.0f) && LessNotEqual(showAreaHeight, threshold)) = false
1247 * Condition: GreatNotEqual(showAreaHeight, 0.0f) = false
1248 * Branch: if (GreatOrEqual(showAreaHeight, barHeight - threshold) &&
1249 * LessNotEqual(showAreaHeight, barHeight)) = false
1250 * Condition: GreatOrEqual(showAreaHeight, barHeight - threshold) = false
1251 * @tc.type: FUNC
1252 */
1253 HWTEST_F(NavDestinationPatternTestNg, ResetBarState005, TestSize.Level1)
1254 {
1255 NavDestinationPatternTestNg::SetUpTestCase();
1256 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80095502() 1257 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1258 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1259 ASSERT_NE(navDestinationPattern, nullptr);
1260 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80095602() 1261 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
1262 navDestinationNode->toolBarNode_ = toolBarNode;
1263 auto& swipeContext = navDestinationPattern->GetSwipeContext(false);
1264 swipeContext.isBarShowing = false;
1265 swipeContext.isBarHiding = false;
1266 auto toolBarRenderContext = AceType::DynamicCast<MockRenderContext>(toolBarNode->GetRenderContext());
1267 ASSERT_NE(toolBarRenderContext, nullptr);
1268 toolBarRenderContext->UpdateTransformTranslate({ 0.0f, 120.0f, 0.0f });
1269 toolBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 100.0f));
1270 toolBarRenderContext->UpdateOpacity(1.0f);
1271
1272 navDestinationPattern->ResetBarState(navDestinationNode, toolBarNode, false);
1273 EXPECT_EQ(toolBarRenderContext->GetOpacity(), 1.0f);
1274 NavDestinationPatternTestNg::TearDownTestCase();
1275 }
1276
1277 /**
1278 * @tc.name: ResetBarState006
1279 * @tc.desc: Branch: if (ctx.isBarHiding || ctx.isBarShowing) = false
1280 * Condition: ctx.isBarHiding = false, ctx.isBarShowing = false
1281 * Branch: if (!GetTitleOrToolBarTranslateAndHeight() || NearZero(barHeight)) = false
1282 * Condition: !GetTitleOrToolBarTranslateAndHeight() = false, NearZero(barHeight) = false
1283 * Branch: if (GreatOrEqual(threshold, halfBarHeight)) = true
1284 * Branch: if (GreatNotEqual(showAreaHeight, 0.0f) && LessNotEqual(showAreaHeight, threshold)) = false
1285 * Condition: GreatNotEqual(showAreaHeight, 0.0f) = true, LessNotEqual(showAreaHeight, threshold) = false
1286 * Branch: if (GreatOrEqual(showAreaHeight, barHeight - threshold) &&
1287 * LessNotEqual(showAreaHeight, barHeight)) = true
1288 * Condition: GreatOrEqual(showAreaHeight, barHeight - threshold) = true,
1289 * LessNotEqual(showAreaHeight, barHeight)) = true
1290 * @tc.type: FUNC
1291 */
1292 HWTEST_F(NavDestinationPatternTestNg, ResetBarState006, TestSize.Level1)
1293 {
1294 NavDestinationPatternTestNg::SetUpTestCase();
1295 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80095702() 1296 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1297 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1298 ASSERT_NE(navDestinationPattern, nullptr);
1299 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80095802() 1300 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
1301 navDestinationNode->toolBarNode_ = toolBarNode;
1302 auto& swipeContext = navDestinationPattern->GetSwipeContext(false);
1303 swipeContext.isBarShowing = false;
1304 swipeContext.isBarHiding = false;
1305 auto toolBarRenderContext = AceType::DynamicCast<MockRenderContext>(toolBarNode->GetRenderContext());
1306 ASSERT_NE(toolBarRenderContext, nullptr);
1307 toolBarRenderContext->UpdateTransformTranslate({ 0.0f, 10.0f, 0.0f });
1308 toolBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 50.0f));
1309 toolBarRenderContext->UpdateOpacity(0.0f);
1310
1311 navDestinationPattern->ResetBarState(navDestinationNode, toolBarNode, false);
1312 EXPECT_EQ(toolBarRenderContext->GetOpacity(), 1.0f);
1313 NavDestinationPatternTestNg::TearDownTestCase();
1314 }
1315
1316 /**
1317 * @tc.name: ResetBarState007
1318 * @tc.desc: Branch: if (ctx.isBarHiding || ctx.isBarShowing) = false
1319 * Condition: ctx.isBarHiding = false, ctx.isBarShowing = false
1320 * Branch: if (!GetTitleOrToolBarTranslateAndHeight() || NearZero(barHeight)) = false
1321 * Condition: !GetTitleOrToolBarTranslateAndHeight() = false, NearZero(barHeight) = false
1322 * Branch: if (GreatOrEqual(threshold, halfBarHeight)) = true
1323 * Branch: if (GreatNotEqual(showAreaHeight, 0.0f) && LessNotEqual(showAreaHeight, threshold)) = true
1324 * Condition: GreatNotEqual(showAreaHeight, 0.0f) = true, LessNotEqual(showAreaHeight, threshold)) = true
1325 * @tc.type: FUNC
1326 */
1327 HWTEST_F(NavDestinationPatternTestNg, ResetBarState007, TestSize.Level1)
1328 {
1329 NavDestinationPatternTestNg::SetUpTestCase();
1330 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80095902() 1331 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1332 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1333 ASSERT_NE(navDestinationPattern, nullptr);
1334 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80095a02() 1335 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
1336 navDestinationNode->toolBarNode_ = toolBarNode;
1337 auto& swipeContext = navDestinationPattern->GetSwipeContext(false);
1338 swipeContext.isBarShowing = false;
1339 swipeContext.isBarHiding = false;
1340 auto toolBarRenderContext = AceType::DynamicCast<MockRenderContext>(toolBarNode->GetRenderContext());
1341 ASSERT_NE(toolBarRenderContext, nullptr);
1342 toolBarRenderContext->UpdateTransformTranslate({ 0.0f, 30.0f, 0.0f });
1343 toolBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 50.0f));
1344 toolBarRenderContext->UpdateOpacity(1.0f);
1345
1346 navDestinationPattern->ResetBarState(navDestinationNode, toolBarNode, false);
1347 EXPECT_EQ(toolBarRenderContext->GetOpacity(), 0.0f);
1348 NavDestinationPatternTestNg::TearDownTestCase();
1349 }
1350
1351 /**
1352 * @tc.name: ResetBarState008
1353 * @tc.desc: Branch: if (ctx.isBarHiding || ctx.isBarShowing) = false
1354 * Condition: ctx.isBarHiding = false, ctx.isBarShowing = false
1355 * Branch: if (!GetTitleOrToolBarTranslateAndHeight() || NearZero(barHeight)) = false
1356 * Condition: !GetTitleOrToolBarTranslateAndHeight() = false, NearZero(barHeight) = false
1357 * Branch: if (GreatOrEqual(threshold, halfBarHeight)) = true
1358 * Branch: if (GreatNotEqual(showAreaHeight, 0.0f) && LessNotEqual(showAreaHeight, threshold)) = true
1359 * Condition: GreatNotEqual(showAreaHeight, 0.0f) = true, LessNotEqual(showAreaHeight, threshold)) = true
1360 * Branch: if (GreatOrEqual(showAreaHeight, barHeight - threshold) &&
1361 * LessNotEqual(showAreaHeight, barHeight)) = false
1362 * Condition: GreatOrEqual(showAreaHeight, barHeight - threshold) = true,
1363 * LessNotEqual(showAreaHeight, barHeight)) = false
1364 * @tc.type: FUNC
1365 */
1366 HWTEST_F(NavDestinationPatternTestNg, ResetBarState008, TestSize.Level1)
1367 {
1368 NavDestinationPatternTestNg::SetUpTestCase();
1369 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80095b02() 1370 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1371 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1372 ASSERT_NE(navDestinationPattern, nullptr);
1373 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80095c02() 1374 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
1375 navDestinationNode->toolBarNode_ = toolBarNode;
1376 auto& swipeContext = navDestinationPattern->GetSwipeContext(false);
1377 swipeContext.isBarShowing = false;
1378 swipeContext.isBarHiding = false;
1379 auto toolBarRenderContext = AceType::DynamicCast<MockRenderContext>(toolBarNode->GetRenderContext());
1380 ASSERT_NE(toolBarRenderContext, nullptr);
1381 toolBarRenderContext->UpdateTransformTranslate({ 0.0f, 0.0f, 0.0f });
1382 toolBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 50.0f));
1383 toolBarRenderContext->UpdateOpacity(0.0f);
1384
1385 navDestinationPattern->ResetBarState(navDestinationNode, toolBarNode, false);
1386 EXPECT_EQ(toolBarRenderContext->GetOpacity(), 0.0f);
1387 NavDestinationPatternTestNg::TearDownTestCase();
1388 }
1389
1390 /**
1391 * @tc.name: ResetTitleAndToolBarState001
1392 * @tc.desc: Branch: if (EnableTitleBarSwipe(nodeBase)) = false
1393 * Branch: if (EnableToolBarSwipe(nodeBase)) = false
1394 * @tc.type: FUNC
1395 */
1396 HWTEST_F(NavDestinationPatternTestNg, ResetTitleAndToolBarState001, TestSize.Level1)
1397 {
1398 NavDestinationPatternTestNg::SetUpTestCase();
1399 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80095d02() 1400 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1401 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1402 ASSERT_NE(navDestinationPattern, nullptr);
1403 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80095e02() 1404 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
1405 navDestinationNode->titleBarNode_ = titleBarNode;
1406 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80095f02() 1407 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
1408 navDestinationNode->toolBarNode_ = toolBarNode;
1409 auto navDestinationLayoutProperty = navDestinationNode->GetLayoutProperty<NavDestinationLayoutPropertyBase>();
1410 navDestinationLayoutProperty->propHideTitleBar_ = true;
1411 navDestinationLayoutProperty->propHideToolBar_ = true;
1412 auto titleBarRenderContext = AceType::DynamicCast<MockRenderContext>(titleBarNode->GetRenderContext());
1413 ASSERT_NE(titleBarRenderContext, nullptr);
1414 titleBarRenderContext->UpdateTransformTranslate({ 0.0f, 50.0f, 0.0f });
1415 titleBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 400.0f));
1416 titleBarRenderContext->UpdateOpacity(0.0f);
1417 auto toolBarRenderContext = AceType::DynamicCast<MockRenderContext>(toolBarNode->GetRenderContext());
1418 ASSERT_NE(toolBarRenderContext, nullptr);
1419 toolBarRenderContext->UpdateTransformTranslate({ 0.0f, 50.0f, 0.0f });
1420 toolBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 400.0f));
1421 toolBarRenderContext->UpdateOpacity(0.0f);
1422
1423 navDestinationPattern->ResetTitleAndToolBarState();
1424 EXPECT_EQ(titleBarRenderContext->GetOpacity(), 0.0f);
1425 EXPECT_EQ(toolBarRenderContext->GetOpacity(), 0.0f);
1426 NavDestinationPatternTestNg::TearDownTestCase();
1427 }
1428
1429 /**
1430 * @tc.name: ResetTitleAndToolBarState002
1431 * @tc.desc: Branch: if (EnableTitleBarSwipe(nodeBase)) = true
1432 * Branch: if (EnableToolBarSwipe(nodeBase)) = true
1433 * @tc.type: FUNC
1434 */
1435 HWTEST_F(NavDestinationPatternTestNg, ResetTitleAndToolBarState002, TestSize.Level1)
1436 {
1437 NavDestinationPatternTestNg::SetUpTestCase();
1438 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80096002() 1439 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1440 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1441 ASSERT_NE(navDestinationPattern, nullptr);
1442 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80096102() 1443 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
1444 navDestinationNode->titleBarNode_ = titleBarNode;
1445 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80096202() 1446 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
1447 navDestinationNode->toolBarNode_ = toolBarNode;
1448 auto navDestinationLayoutProperty = navDestinationNode->GetLayoutProperty<NavDestinationLayoutPropertyBase>();
1449 navDestinationLayoutProperty->propHideTitleBar_ = false;
1450 navDestinationLayoutProperty->propHideToolBar_ = false;
1451 auto titleBarRenderContext = AceType::DynamicCast<MockRenderContext>(titleBarNode->GetRenderContext());
1452 ASSERT_NE(titleBarRenderContext, nullptr);
1453 titleBarRenderContext->UpdateTransformTranslate({ 0.0f, 10.0f, 0.0f });
1454 titleBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 50.0f));
1455 titleBarRenderContext->UpdateOpacity(0.0f);
1456 auto toolBarRenderContext = AceType::DynamicCast<MockRenderContext>(toolBarNode->GetRenderContext());
1457 ASSERT_NE(toolBarRenderContext, nullptr);
1458 toolBarRenderContext->UpdateTransformTranslate({ 0.0f, 10.0f, 0.0f });
1459 toolBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 50.0f));
1460 toolBarRenderContext->UpdateOpacity(0.0f);
1461
1462 navDestinationPattern->ResetTitleAndToolBarState();
1463 EXPECT_EQ(titleBarRenderContext->GetOpacity(), 1.0f);
1464 EXPECT_EQ(toolBarRenderContext->GetOpacity(), 1.0f);
1465 NavDestinationPatternTestNg::TearDownTestCase();
1466 }
1467
1468 /**
1469 * @tc.name: ShowTitleAndToolBar001
1470 * @tc.desc: Branch: if (EnableTitleBarSwipe(nodeBase)) = false
1471 * Branch: if (EnableToolBarSwipe(nodeBase)) = false
1472 * @tc.type: FUNC
1473 */
1474 HWTEST_F(NavDestinationPatternTestNg, ShowTitleAndToolBar001, TestSize.Level1)
1475 {
1476 NavDestinationPatternTestNg::SetUpTestCase();
1477 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80096302() 1478 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1479 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1480 ASSERT_NE(navDestinationPattern, nullptr);
1481 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80096402() 1482 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
1483 navDestinationNode->titleBarNode_ = titleBarNode;
1484 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80096502() 1485 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
1486 navDestinationNode->toolBarNode_ = toolBarNode;
1487 auto navDestinationLayoutProperty = navDestinationNode->GetLayoutProperty<NavDestinationLayoutPropertyBase>();
1488 navDestinationLayoutProperty->propHideTitleBar_ = true;
1489 navDestinationLayoutProperty->propHideToolBar_ = true;
1490 auto titleBarRenderContext = AceType::DynamicCast<MockRenderContext>(titleBarNode->GetRenderContext());
1491 ASSERT_NE(titleBarRenderContext, nullptr);
1492 titleBarRenderContext->UpdateTransformTranslate({ 0.0f, 50.0f, 0.0f });
1493 titleBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 400.0f));
1494 titleBarRenderContext->UpdateOpacity(0.0f);
1495 auto toolBarRenderContext = AceType::DynamicCast<MockRenderContext>(toolBarNode->GetRenderContext());
1496 ASSERT_NE(toolBarRenderContext, nullptr);
1497 toolBarRenderContext->UpdateTransformTranslate({ 0.0f, 50.0f, 0.0f });
1498 toolBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 400.0f));
1499 toolBarRenderContext->UpdateOpacity(0.0f);
1500
1501 navDestinationPattern->ShowTitleAndToolBar();
1502 EXPECT_EQ(titleBarRenderContext->GetOpacity(), 0.0f);
1503 EXPECT_EQ(toolBarRenderContext->GetOpacity(), 0.0f);
1504 NavDestinationPatternTestNg::TearDownTestCase();
1505 }
1506
1507 /**
1508 * @tc.name: ShowTitleAndToolBar002
1509 * @tc.desc: Branch: if (EnableTitleBarSwipe(nodeBase)) = true
1510 * Branch: if (GetTitleOrToolBarTranslateAndHeight(titleBarNode, translate, barHeight)) = false
1511 * Branch: if (EnableToolBarSwipe(nodeBase)) = true
1512 * Branch: if (GetTitleOrToolBarTranslateAndHeight(toolBarNode, translate, barHeight)) = false
1513 * @tc.type: FUNC
1514 */
1515 HWTEST_F(NavDestinationPatternTestNg, ShowTitleAndToolBar002, TestSize.Level1)
1516 {
1517 NavDestinationPatternTestNg::SetUpTestCase();
1518 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80096602() 1519 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1520 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1521 ASSERT_NE(navDestinationPattern, nullptr);
1522 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80096702() 1523 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
1524 navDestinationNode->titleBarNode_ = titleBarNode;
1525 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80096802() 1526 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
1527 navDestinationNode->toolBarNode_ = toolBarNode;
1528 auto navDestinationLayoutProperty = navDestinationNode->GetLayoutProperty<NavDestinationLayoutPropertyBase>();
1529 navDestinationLayoutProperty->propHideTitleBar_ = false;
1530 titleBarNode->renderContext_ = nullptr;
1531 navDestinationLayoutProperty->propHideToolBar_ = false;
1532 toolBarNode->renderContext_ = nullptr;
1533
1534 navDestinationPattern->ShowTitleAndToolBar();
1535 EXPECT_EQ(titleBarNode->GetRenderContext(), nullptr);
1536 EXPECT_EQ(toolBarNode->GetRenderContext(), nullptr);
1537 NavDestinationPatternTestNg::TearDownTestCase();
1538 }
1539
1540 /**
1541 * @tc.name: ShowTitleAndToolBar003
1542 * @tc.desc: Branch: if (EnableTitleBarSwipe(nodeBase)) = true
1543 * Branch: if (GetTitleOrToolBarTranslateAndHeight(titleBarNode, translate, barHeight)) = true
1544 * Branch: if (titleBarSwipeContext_.showBarTask) = false
1545 * Branch: if (EnableToolBarSwipe(nodeBase)) = true
1546 * Branch: if (GetTitleOrToolBarTranslateAndHeight(toolBarNode, translate, barHeight)) = true
1547 * Branch: if (toolBarSwipeContext_.showBarTask) = false
1548 * @tc.type: FUNC
1549 */
1550 HWTEST_F(NavDestinationPatternTestNg, ShowTitleAndToolBar003, TestSize.Level1)
1551 {
1552 NavDestinationPatternTestNg::SetUpTestCase();
1553 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80096902() 1554 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1555 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1556 ASSERT_NE(navDestinationPattern, nullptr);
1557 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80096a02() 1558 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
1559 navDestinationNode->titleBarNode_ = titleBarNode;
1560 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80096b02() 1561 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
1562 navDestinationNode->toolBarNode_ = toolBarNode;
1563 auto navDestinationLayoutProperty = navDestinationNode->GetLayoutProperty<NavDestinationLayoutPropertyBase>();
1564 navDestinationLayoutProperty->propHideTitleBar_ = false;
1565 auto titleBarRenderContext = AceType::DynamicCast<MockRenderContext>(titleBarNode->GetRenderContext());
1566 ASSERT_NE(titleBarRenderContext, nullptr);
1567 titleBarRenderContext->UpdateTransformTranslate({ 0.0f, 50.0f, 0.0f });
1568 titleBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 400.0f));
1569 titleBarRenderContext->UpdateOpacity(0.0f);
1570 navDestinationPattern->titleBarSwipeContext_.showBarTask.Reset(nullptr);
1571 navDestinationLayoutProperty->propHideToolBar_ = false;
1572 auto toolBarRenderContext = AceType::DynamicCast<MockRenderContext>(toolBarNode->GetRenderContext());
1573 ASSERT_NE(toolBarRenderContext, nullptr);
1574 toolBarRenderContext->UpdateTransformTranslate({ 0.0f, 50.0f, 0.0f });
1575 toolBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 400.0f));
1576 toolBarRenderContext->UpdateOpacity(0.0f);
1577 navDestinationPattern->toolBarSwipeContext_.showBarTask.Reset(nullptr);
1578
1579 navDestinationPattern->ShowTitleAndToolBar();
1580 EXPECT_EQ(titleBarRenderContext->GetOpacity(), 1.0f);
1581 EXPECT_FALSE(navDestinationPattern->titleBarSwipeContext_.showBarTask);
1582 EXPECT_EQ(toolBarRenderContext->GetOpacity(), 1.0f);
1583 EXPECT_FALSE(navDestinationPattern->toolBarSwipeContext_.showBarTask);
1584 NavDestinationPatternTestNg::TearDownTestCase();
1585 }
1586
1587 /**
1588 * @tc.name: ShowTitleAndToolBar004
1589 * @tc.desc: Branch: if (EnableTitleBarSwipe(nodeBase)) = true
1590 * Branch: if (GetTitleOrToolBarTranslateAndHeight(titleBarNode, translate, barHeight)) = true
1591 * Branch: if (titleBarSwipeContext_.showBarTask) = true
1592 * Branch: if (EnableToolBarSwipe(nodeBase)) = true
1593 * Branch: if (GetTitleOrToolBarTranslateAndHeight(toolBarNode, translate, barHeight)) = true
1594 * Branch: if (toolBarSwipeContext_.showBarTask) = true
1595 * @tc.type: FUNC
1596 */
1597 HWTEST_F(NavDestinationPatternTestNg, ShowTitleAndToolBar004, TestSize.Level1)
1598 {
1599 NavDestinationPatternTestNg::SetUpTestCase();
1600 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80096c02() 1601 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1602 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1603 ASSERT_NE(navDestinationPattern, nullptr);
1604 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80096d02() 1605 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
1606 navDestinationNode->titleBarNode_ = titleBarNode;
1607 auto toolBarNode = NavToolbarNode::GetOrCreateToolbarNode(V2::TOOL_BAR_ETS_TAG,
__anon4ffe80096e02() 1608 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavToolbarPattern>(); });
1609 navDestinationNode->toolBarNode_ = toolBarNode;
1610 auto navDestinationLayoutProperty = navDestinationNode->GetLayoutProperty<NavDestinationLayoutPropertyBase>();
1611 navDestinationLayoutProperty->propHideTitleBar_ = false;
1612 auto titleBarRenderContext = AceType::DynamicCast<MockRenderContext>(titleBarNode->GetRenderContext());
1613 ASSERT_NE(titleBarRenderContext, nullptr);
1614 titleBarRenderContext->UpdateTransformTranslate({ 0.0f, 50.0f, 0.0f });
1615 titleBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 400.0f));
1616 titleBarRenderContext->UpdateOpacity(0.0f);
__anon4ffe80096f02null1617 navDestinationPattern->titleBarSwipeContext_.showBarTask.Reset([] { });
1618 navDestinationLayoutProperty->propHideToolBar_ = false;
1619 auto toolBarRenderContext = AceType::DynamicCast<MockRenderContext>(toolBarNode->GetRenderContext());
1620 ASSERT_NE(toolBarRenderContext, nullptr);
1621 toolBarRenderContext->UpdateTransformTranslate({ 0.0f, 50.0f, 0.0f });
1622 toolBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 400.0f));
1623 toolBarRenderContext->UpdateOpacity(0.0f);
__anon4ffe80097002null1624 navDestinationPattern->toolBarSwipeContext_.showBarTask.Reset([] { });
1625
1626 navDestinationPattern->ShowTitleAndToolBar();
1627 EXPECT_EQ(titleBarRenderContext->GetOpacity(), 1.0f);
1628 EXPECT_FALSE(navDestinationPattern->titleBarSwipeContext_.showBarTask);
1629 EXPECT_EQ(toolBarRenderContext->GetOpacity(), 1.0f);
1630 EXPECT_FALSE(navDestinationPattern->toolBarSwipeContext_.showBarTask);
1631 NavDestinationPatternTestNg::TearDownTestCase();
1632 }
1633
1634 /**
1635 * @tc.name: StopHideBarIfNeeded001
1636 * @tc.desc: Branch: if (!ctx.isBarHiding) = false
1637 * @tc.type: FUNC
1638 */
1639 HWTEST_F(NavDestinationPatternTestNg, StopHideBarIfNeeded001, TestSize.Level1)
1640 {
1641 NavDestinationPatternTestNg::SetUpTestCase();
1642 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80097102() 1643 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1644 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1645 ASSERT_NE(navDestinationPattern, nullptr);
1646 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80097202() 1647 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
1648 navDestinationNode->titleBarNode_ = titleBarNode;
1649 auto& swipeContext = navDestinationPattern->GetSwipeContext(true);
1650 swipeContext.isBarHiding = true;
1651 auto titleBarRenderContext = AceType::DynamicCast<MockRenderContext>(titleBarNode->GetRenderContext());
1652 ASSERT_NE(titleBarRenderContext, nullptr);
1653 titleBarRenderContext->UpdateTransformTranslate({ 0.0f, 50.0f, 0.0f });
1654 titleBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 100.0f));
1655 titleBarRenderContext->UpdateOpacity(0.0f);
1656
1657 navDestinationPattern->StopHideBarIfNeeded(0.0f, true);
1658 EXPECT_FALSE(swipeContext.isBarHiding);
1659 EXPECT_EQ(titleBarRenderContext->GetOpacity(), 1.0f);
1660 NavDestinationPatternTestNg::TearDownTestCase();
1661 }
1662
1663 /**
1664 * @tc.name: StopHideBarIfNeeded002
1665 * @tc.desc: Branch: if (!ctx.isBarHiding) = true
1666 * @tc.type: FUNC
1667 */
1668 HWTEST_F(NavDestinationPatternTestNg, StopHideBarIfNeeded002, TestSize.Level1)
1669 {
1670 NavDestinationPatternTestNg::SetUpTestCase();
1671 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80097302() 1672 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1673 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1674 ASSERT_NE(navDestinationPattern, nullptr);
1675 auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode(V2::TITLE_BAR_ETS_TAG,
__anon4ffe80097402() 1676 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<TitleBarPattern>(); });
1677 navDestinationNode->titleBarNode_ = titleBarNode;
1678 auto& swipeContext = navDestinationPattern->GetSwipeContext(true);
1679 swipeContext.isBarHiding = false;
1680 auto titleBarRenderContext = AceType::DynamicCast<MockRenderContext>(titleBarNode->GetRenderContext());
1681 ASSERT_NE(titleBarRenderContext, nullptr);
1682 titleBarRenderContext->UpdateTransformTranslate({ 0.0f, 50.0f, 0.0f });
1683 titleBarRenderContext->UpdatePaintRect(RectF(0.0f, 0.0f, 500.0f, 100.0f));
1684 titleBarRenderContext->UpdateOpacity(0.0f);
1685
1686 navDestinationPattern->StopHideBarIfNeeded(0.0f, true);
1687 EXPECT_FALSE(swipeContext.isBarHiding);
1688 EXPECT_EQ(titleBarRenderContext->GetOpacity(), 0.0f);
1689 NavDestinationPatternTestNg::TearDownTestCase();
1690 }
1691
1692 /**
1693 * @tc.name: GetSerializedParamTest001
1694 * @tc.desc: Branch: if UpdateSerializedParam done
1695 * @tc.type: FUNC
1696 */
1697 HWTEST_F(NavDestinationPatternTestNg, GetSerializedParamTest001, TestSize.Level1)
1698 {
1699 NavDestinationPatternTestNg::SetUpTestCase();
1700 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80097502() 1701 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1702 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1703 ASSERT_NE(navDestinationPattern, nullptr);
1704 const std::string param = "{}";
1705 navDestinationPattern->UpdateSerializedParam(param);
1706 ASSERT_EQ(navDestinationPattern->GetSerializedParam(), param);
1707 NavDestinationPatternTestNg::TearDownTestCase();
1708 }
1709
1710 /**
1711 * @tc.name: OnModifyDone
1712 * @tc.desc: Branch: if (layoutPolicy.has_value()) true
1713 * @tc.type: FUNC
1714 */
1715 HWTEST_F(NavDestinationPatternTestNg, OnModifyDone, TestSize.Level1)
1716 {
1717 NavDestinationPatternTestNg::SetUpTestCase();
1718 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80097602() 1719 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1720 auto navDestinationPattern = navDestinationNode->GetPattern<NavDestinationPattern>();
1721 ASSERT_NE(navDestinationPattern, nullptr);
1722 auto layoutProperty = navDestinationNode->GetLayoutProperty<NavDestinationLayoutProperty>();
1723 ASSERT_NE(layoutProperty, nullptr);
1724
1725 auto navDestinationContentNode = FrameNode::GetOrCreateFrameNode(V2::NAVDESTINATION_CONTENT_ETS_TAG,
1726 ElementRegister::GetInstance()->MakeUniqueId(),
__anon4ffe80097702() 1727 []() { return AceType::MakeRefPtr<LinearLayoutPattern>(true); });
1728 ASSERT_NE(navDestinationContentNode, nullptr);
1729 navDestinationNode->AddChild(navDestinationContentNode);
1730 navDestinationNode->SetContentNode(navDestinationContentNode);
1731
1732 layoutProperty->UpdateLayoutPolicyProperty(LayoutCalPolicy::WRAP_CONTENT, true);
1733 layoutProperty->UpdateLayoutPolicyProperty(LayoutCalPolicy::MATCH_PARENT, false);
1734
1735 navDestinationPattern->OnModifyDone();
1736
1737 auto contentLayoutProperty = navDestinationNode->GetLayoutProperty();
1738 ASSERT_NE(contentLayoutProperty, nullptr);
1739 auto layoutPolicy = contentLayoutProperty->GetLayoutPolicyProperty();
1740 ASSERT_EQ(layoutPolicy.has_value(), true);
1741 EXPECT_EQ(layoutPolicy->IsWidthWrap(), true);
1742 EXPECT_EQ(layoutPolicy->IsHeightMatch(), true);
1743 }
1744
1745 /**
1746 * @tc.name: ReCalcNavDestinationSize001
1747 * @tc.desc: Test Navdestination constraintSize no branch
1748 * @tc.type: FUNC
1749 */
1750 HWTEST_F(NavDestinationPatternTestNg, ReCalcNavDestinationSize001, TestSize.Level1)
1751 {
1752 /**
1753 * @tc.steps: step1. Create navdestinationNode
1754 */
1755 auto navDestinationNode = NavDestinationGroupNode::GetOrCreateGroupNode(V2::NAVDESTINATION_VIEW_ETS_TAG,
__anon4ffe80097802() 1756 ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr<NavDestinationPattern>(); });
1757 auto navDestinationLayoutProperty = navDestinationNode->GetLayoutProperty<NavDestinationLayoutProperty>();
1758 ASSERT_NE(navDestinationLayoutProperty, nullptr);
1759
1760 /**
1761 * @tc.steps: step2. Update CalcSize
1762 */
1763 auto size = CalcSize(CalcLength(500), CalcLength(500));
1764 navDestinationLayoutProperty->UpdateCalcMaxSize(size);
1765 auto layoutWrapper = navDestinationNode->CreateLayoutWrapper();
1766 ASSERT_NE(layoutWrapper, nullptr);
1767 auto geometryNode = layoutWrapper->GetGeometryNode();
1768 ASSERT_NE(geometryNode, nullptr);
1769 geometryNode->SetFrameSize(SizeF(600, 600));
1770
1771 auto navdestinationLayoutAlgorithm = AceType::MakeRefPtr<NavDestinationLayoutAlgorithm>();
1772 ASSERT_NE(navdestinationLayoutAlgorithm, nullptr);
1773
1774 SizeF frameSize = SizeF(600, 600);
1775 navdestinationLayoutAlgorithm->ReCalcNavDestinationSize(AceType::RawPtr(layoutWrapper), frameSize);
1776
1777 SizeF targetSize = SizeF(600, 600);
1778 EXPECT_EQ(geometryNode->GetFrameSize(), targetSize);
1779 }
1780 } // namespace OHOS::Ace::NG