• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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