From 125a125f9bfda62432ce78615359372ba2381b31 Mon Sep 17 00:00:00 2001 From: duguangshuo Date: Wed, 27 Sep 2023 17:41:22 +0800 Subject: [PATCH] new_test Signed-off-by: duguangshuo --- .../test/pattern/swiper/swiper_test_ng.cpp | 239 ++++++++++++++++++ 1 file changed, 239 insertions(+) diff --git a/frameworks/core/components_ng/test/pattern/swiper/swiper_test_ng.cpp b/frameworks/core/components_ng/test/pattern/swiper/swiper_test_ng.cpp index 21e9b363a44..a3f0eefa52b 100644 --- a/frameworks/core/components_ng/test/pattern/swiper/swiper_test_ng.cpp +++ b/frameworks/core/components_ng/test/pattern/swiper/swiper_test_ng.cpp @@ -13373,4 +13373,243 @@ HWTEST_F(SwiperTestNg, SwiperPatternRegisterVisibleAreaChange002, TestSize.Level swiperPattern->RegisterVisibleAreaChange(); EXPECT_EQ(swiperPattern->hasVisibleChangeRegistered_, true); } + +/** + * @tc.name: SwiperLayoutAlgorithmLayout006 + * @tc.desc: Layout + * @tc.type: FUNC + */ +HWTEST_F(SwiperTestNg, SwiperLayoutAlgorithmLayout006, TestSize.Level1) +{ + /** + * @tc.steps: step1. Create swipernode. + */ + auto* stack = ViewStackProcessor::GetInstance(); + auto swiperNode = + FrameNode::GetOrCreateFrameNode("Swiper", 0, []() { return AceType::MakeRefPtr(); }); + stack->Push(swiperNode); + auto swiperPattern = swiperNode->GetPattern(); + ASSERT_NE(swiperPattern, nullptr); + auto swiperLayoutAlgorithm = AceType::DynamicCast(swiperPattern->CreateLayoutAlgorithm()); + ASSERT_NE(swiperLayoutAlgorithm, nullptr); + auto indicatorNode = FrameNode::GetOrCreateFrameNode(V2::SWIPER_ETS_TAG, + ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr(); }); + ASSERT_NE(indicatorNode, nullptr); + indicatorNode->layoutProperty_ = AceType::MakeRefPtr(); + auto geometryNode = AceType::MakeRefPtr(); + ASSERT_NE(geometryNode, nullptr); + auto layoutWrapper = LayoutWrapperNode(indicatorNode, geometryNode, indicatorNode->GetLayoutProperty()); + LayoutConstraintF layoutConstraint; + layoutConstraint.maxSize = CONTAINER_SIZE; + layoutConstraint.percentReference = CONTAINER_SIZE; + layoutConstraint.parentIdealSize.SetSize(CONTAINER_SIZE); + ASSERT_NE(layoutWrapper.layoutProperty_, nullptr); + layoutWrapper.GetLayoutProperty()->UpdateLayoutConstraint(layoutConstraint); + swiperLayoutAlgorithm->targetIndex_ = 0; + swiperLayoutAlgorithm->isLoop_ = true; + swiperLayoutAlgorithm->itemPosition_.emplace(std::make_pair(0, SwiperItemInfo { 0.0f, 2.0f })); + swiperLayoutAlgorithm->itemPosition_.emplace(std::make_pair(1, SwiperItemInfo { 0.0f, 2.0f })); + swiperLayoutAlgorithm->totalItemCount_ = 2; + layoutWrapper.childrenMap_.emplace(std::make_pair( + 0, AceType::MakeRefPtr(indicatorNode, geometryNode, indicatorNode->GetLayoutProperty()))); + auto swiperLayoutProperty = AceType::DynamicCast(layoutWrapper.GetLayoutProperty()); + swiperLayoutProperty->UpdateDisplayCount(1); + + /** + * @tc.steps: step2. call Layout. + * @tc.expected: Related function runs ok. + */ + swiperLayoutAlgorithm->Layout(&layoutWrapper); + + auto indicatorNode_test = FrameNode::GetOrCreateFrameNode(V2::SWIPER_INDICATOR_ETS_TAG, + ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr(); }); + layoutWrapper.childrenMap_.emplace(std::make_pair(1, + AceType::MakeRefPtr(indicatorNode_test, geometryNode, indicatorNode->GetLayoutProperty()))); + swiperLayoutProperty->UpdateDirection(Axis::VERTICAL); + swiperLayoutAlgorithm->Layout(&layoutWrapper); + swiperLayoutAlgorithm->prevMargin_ = 1.0f; + swiperLayoutAlgorithm->Layout(&layoutWrapper); +} + +/** + * @tc.name: SwiperLayoutAlgorithmMeasure002 + * @tc.desc: Measure + * @tc.type: FUNC + */ +HWTEST_F(SwiperTestNg, SwiperLayoutAlgorithmMeasure002, TestSize.Level1) +{ + /** + * @tc.steps: step1. Create swipernode. + */ + auto* stack = ViewStackProcessor::GetInstance(); + auto swiperNode = + FrameNode::GetOrCreateFrameNode("Swiper", 0, []() { return AceType::MakeRefPtr(); }); + stack->Push(swiperNode); + auto swiperPattern = swiperNode->GetPattern(); + ASSERT_NE(swiperPattern, nullptr); + auto swiperLayoutAlgorithm = AceType::DynamicCast(swiperPattern->CreateLayoutAlgorithm()); + ASSERT_NE(swiperLayoutAlgorithm, nullptr); + auto indicatorNode = FrameNode::GetOrCreateFrameNode(V2::SWIPER_ETS_TAG, + ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr(); }); + ASSERT_NE(indicatorNode, nullptr); + indicatorNode->layoutProperty_ = AceType::MakeRefPtr(); + auto geometryNode = AceType::MakeRefPtr(); + ASSERT_NE(geometryNode, nullptr); + auto layoutWrapper = LayoutWrapperNode(indicatorNode, geometryNode, indicatorNode->GetLayoutProperty()); + LayoutConstraintF layoutConstraint; + layoutConstraint.maxSize = CONTAINER_SIZE; + layoutConstraint.percentReference = CONTAINER_SIZE; + layoutConstraint.parentIdealSize.SetSize(CONTAINER_SIZE); + ASSERT_NE(layoutWrapper.layoutProperty_, nullptr); + layoutWrapper.GetLayoutProperty()->UpdateLayoutConstraint(layoutConstraint); + swiperLayoutAlgorithm->targetIndex_ = 0; + swiperLayoutAlgorithm->isLoop_ = true; + swiperLayoutAlgorithm->itemPosition_.emplace(std::make_pair(0, SwiperItemInfo { 0.0f, 2.0f })); + swiperLayoutAlgorithm->itemPosition_.emplace(std::make_pair(1, SwiperItemInfo { 0.0f, 2.0f })); + swiperLayoutAlgorithm->totalItemCount_ = 2; + layoutWrapper.childrenMap_.emplace(std::make_pair( + 0, AceType::MakeRefPtr(indicatorNode, geometryNode, indicatorNode->GetLayoutProperty()))); + auto swiperLayoutProperty = AceType::DynamicCast(layoutWrapper.GetLayoutProperty()); + swiperLayoutProperty->UpdateDisplayCount(1); + swiperLayoutProperty->UpdateMinSize(Dimension(1)); + swiperLayoutProperty->contentConstraint_ = layoutConstraint; + + /** + * @tc.steps: step2. call Measure. + * @tc.expected: Related function runs ok. + */ + swiperLayoutAlgorithm->Measure(&layoutWrapper); + swiperLayoutProperty->UpdateMinSize(Dimension(0)); + swiperLayoutAlgorithm->Measure(&layoutWrapper); +} + +/** + * @tc.name: SwiperLayoutAlgorithmLayoutForwardItem002 + * @tc.desc: LayoutForwardItem + * @tc.type: FUNC + */ +HWTEST_F(SwiperTestNg, SwiperLayoutAlgorithmLayoutForwardItem002, TestSize.Level1) +{ + /** + * @tc.steps: step1. Create swipernode. + */ + auto* stack = ViewStackProcessor::GetInstance(); + auto swiperNode = + FrameNode::GetOrCreateFrameNode("Swiper", 0, []() { return AceType::MakeRefPtr(); }); + stack->Push(swiperNode); + auto swiperPattern = swiperNode->GetPattern(); + ASSERT_NE(swiperPattern, nullptr); + auto indicatorNode = FrameNode::GetOrCreateFrameNode(V2::SWIPER_ETS_TAG, + ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr(); }); + ASSERT_NE(indicatorNode, nullptr); + auto geometryNode = AceType::MakeRefPtr(); + ASSERT_NE(geometryNode, nullptr); + auto layoutWrapper = LayoutWrapperNode(swiperNode, geometryNode, swiperNode->GetLayoutProperty()); + LayoutConstraintF layoutConstraint; + layoutConstraint.maxSize = CONTAINER_SIZE; + layoutConstraint.percentReference = CONTAINER_SIZE; + layoutConstraint.parentIdealSize.SetSize(CONTAINER_SIZE); + ASSERT_NE(layoutWrapper.layoutProperty_, nullptr); + layoutWrapper.GetLayoutProperty()->UpdateLayoutConstraint(layoutConstraint); + Axis axis = Axis::HORIZONTAL; + int32_t currentIndex = 0; + float endPos = 0.1f; + float startPos = 0.2f; + auto swiperLayoutAlgorithm = AceType::DynamicCast(swiperPattern->CreateLayoutAlgorithm()); + swiperLayoutAlgorithm->isLoop_ = true; + auto firstLayoutWrapper = + AceType::MakeRefPtr(indicatorNode, geometryNode, indicatorNode->GetLayoutProperty()); + auto secondLayoutWrapper = + AceType::MakeRefPtr(indicatorNode, geometryNode, indicatorNode->GetLayoutProperty()); + layoutWrapper.currentChildCount_ = 0; + layoutWrapper.AppendChild(firstLayoutWrapper); + layoutWrapper.AppendChild(secondLayoutWrapper); + swiperLayoutAlgorithm->totalItemCount_ = 2; + swiperNode->layoutProperty_ = AceType::MakeRefPtr(); + indicatorNode->layoutProperty_ = AceType::MakeRefPtr(); + AceType::DynamicCast(layoutWrapper.GetLayoutProperty())->UpdateDisplayCount(1); + AceType::DynamicCast(layoutWrapper.GetLayoutProperty())->ResetMinSize(); + auto layoutProperty = secondLayoutWrapper->GetLayoutProperty(); + layoutProperty->UpdateVisibility(VisibleType::INVISIBLE); + + /** + * @tc.steps: step2. call LayoutForwardItem. + * @tc.expected: Related function runs ok. + */ + swiperLayoutAlgorithm->LayoutForwardItem(&layoutWrapper, layoutConstraint, axis, currentIndex, endPos, startPos); + secondLayoutWrapper->GetLayoutProperty()->UpdateVisibility(VisibleType::GONE); + swiperLayoutAlgorithm->LayoutForwardItem(&layoutWrapper, layoutConstraint, axis, currentIndex, endPos, startPos); + AceType::DynamicCast(layoutWrapper.GetLayoutProperty())->UpdateDisplayCount(0); + swiperLayoutAlgorithm->LayoutForwardItem(&layoutWrapper, layoutConstraint, axis, currentIndex, endPos, startPos); +} + +/** + * @tc.name: SwiperLayoutAlgorithmLayoutBackwardItem002 + * @tc.desc: LayoutBackwardItem + * @tc.type: FUNC + */ +HWTEST_F(SwiperTestNg, SwiperLayoutAlgorithmLayoutBackwardItem002, TestSize.Level1) +{ + /** + * @tc.steps: step1. Create swipernode. + */ + auto* stack = ViewStackProcessor::GetInstance(); + auto swiperNode = + FrameNode::GetOrCreateFrameNode("Swiper", 0, []() { return AceType::MakeRefPtr(); }); + stack->Push(swiperNode); + auto swiperPattern = swiperNode->GetPattern(); + ASSERT_NE(swiperPattern, nullptr); + auto indicatorNode = FrameNode::GetOrCreateFrameNode(V2::SWIPER_INDICATOR_ETS_TAG, + ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr(); }); + auto indicatorNode1 = FrameNode::GetOrCreateFrameNode(V2::SWIPER_ETS_TAG, + ElementRegister::GetInstance()->MakeUniqueId(), []() { return AceType::MakeRefPtr(); }); + ASSERT_NE(indicatorNode, nullptr); + auto geometryNode = AceType::MakeRefPtr(); + ASSERT_NE(geometryNode, nullptr); + auto layoutWrapper = LayoutWrapperNode(swiperNode, geometryNode, swiperNode->GetLayoutProperty()); + LayoutConstraintF layoutConstraint; + layoutConstraint.maxSize = CONTAINER_SIZE; + layoutConstraint.percentReference = CONTAINER_SIZE; + layoutConstraint.parentIdealSize.SetSize(CONTAINER_SIZE); + ASSERT_NE(layoutWrapper.layoutProperty_, nullptr); + layoutWrapper.GetLayoutProperty()->UpdateLayoutConstraint(layoutConstraint); + Axis axis = Axis::HORIZONTAL; + int32_t currentIndex = 1; + float endPos = 1.0f; + float startPos = 0.2f; + auto swiperLayoutAlgorithm = AceType::DynamicCast(swiperPattern->CreateLayoutAlgorithm()); + swiperLayoutAlgorithm->isLoop_ = true; + indicatorNode->layoutProperty_ = AceType::MakeRefPtr(); + indicatorNode1->layoutProperty_ = AceType::MakeRefPtr(); + auto firstLayoutWrapper = + AceType::MakeRefPtr(indicatorNode, geometryNode, indicatorNode->GetLayoutProperty()); + auto secondLayoutWrapper = + AceType::MakeRefPtr(indicatorNode1, geometryNode, indicatorNode->GetLayoutProperty()); + layoutWrapper.AppendChild(firstLayoutWrapper); + auto swiperLayoutProperty = AceType::DynamicCast(layoutWrapper.GetLayoutProperty()); + ASSERT_NE(swiperLayoutProperty, nullptr); + swiperLayoutProperty->UpdateDisplayCount(1); + swiperLayoutAlgorithm->totalItemCount_ = 2; + + /** + * @tc.steps: step2. call LayoutBackwardItem. + * @tc.expected: Related function runs ok. + */ + swiperLayoutAlgorithm->LayoutBackwardItem(&layoutWrapper, layoutConstraint, axis, currentIndex, endPos, startPos); + swiperLayoutProperty->ResetDisplayCount(); + swiperLayoutAlgorithm->LayoutBackwardItem(&layoutWrapper, layoutConstraint, axis, currentIndex, endPos, startPos); + swiperLayoutProperty->UpdateDisplayCount(1); + layoutWrapper.AppendChild(secondLayoutWrapper); + currentIndex = 2; + swiperLayoutProperty->ResetMinSize(); + auto layoutProperty = secondLayoutWrapper->GetLayoutProperty(); + layoutProperty->UpdateVisibility(VisibleType::INVISIBLE); + for (int i = 0; i <= 1; i++) { + swiperLayoutAlgorithm->LayoutBackwardItem( + &layoutWrapper, layoutConstraint, axis, currentIndex, endPos, startPos); + layoutProperty->UpdateVisibility(VisibleType::GONE); + swiperLayoutProperty->UpdateDisplayCount(0); + } + EXPECT_FLOAT_EQ(startPos, 0.0f); +} } // namespace OHOS::Ace::NG -- Gitee