diff --git a/test/unittest/core/base/view_abstract_test_ng_new.cpp b/test/unittest/core/base/view_abstract_test_ng_new.cpp index a4c6ed5826ff3f899fcfd0dcea3c7f43c20f5a59..049ca999de4e80ec1b1b30cd3c86346cb7cca22a 100644 --- a/test/unittest/core/base/view_abstract_test_ng_new.cpp +++ b/test/unittest/core/base/view_abstract_test_ng_new.cpp @@ -2189,4 +2189,146 @@ HWTEST_F(ViewAbstractTestNg, CheckPositionOrOffsetLocalizedEdges002, TestSize.Le EXPECT_FALSE(edges.left.has_value()); EXPECT_FALSE(edges.right.has_value()); } + +/** + * @tc.name: CancelPropertyAnimationsTest001 + * @tc.desc: Test CancelPropertyAnimations + * @tc.type: FUNC + */ +HWTEST_F(ViewAbstractTestNg, CancelPropertyAnimationsTest001, TestSize.Level1) +{ + g_isConfigChangePerform = true; + std::string key = "clipShape"; + ViewAbstract::ResetResObj(key); + g_isConfigChangePerform = false; + ViewAbstract::ResetResObj(key); + ViewStackProcessor::GetInstance()->Push(FRAME_NODE_CHILD); + auto topFrameNodeOne = ViewStackProcessor::GetInstance()->GetMainElementNode(); + EXPECT_EQ(strcmp(topFrameNodeOne->GetTag().c_str(), TAG_CHILD), 0); + auto frameNode = AceType::DynamicCast(topFrameNodeOne); + ASSERT_NE(frameNode, nullptr); + auto node = AceType::DynamicCast(frameNode); + ASSERT_NE(node, nullptr); + /** + * @tc.steps: step1. The properties.empty() is true. + */ + const std::vector properties; + auto result = ViewAbstract::CancelPropertyAnimations(AceType::RawPtr(node), properties); + EXPECT_EQ(result, true); + /** + * @tc.steps: step2. The status is CancelAnimationStatus::SUCCESS. + */ + const std::vector propertie = { AnimationPropertyType::ROTATION, + AnimationPropertyType::TRANSLATION, AnimationPropertyType::SCALE, AnimationPropertyType::OPACITY }; + result = ViewAbstract::CancelPropertyAnimations(AceType::RawPtr(node), propertie); + EXPECT_EQ(result, true); +} + +/** + * @tc.name: CreatePropertyAnimationTest001 + * @tc.desc: Test CreatePropertyAnimation + * @tc.type: FUNC + */ +HWTEST_F(ViewAbstractTestNg, CreatePropertyAnimationTest001, TestSize.Level1) +{ + ViewStackProcessor::GetInstance()->Push(FRAME_NODE_CHILD); + auto topFrameNodeOne = ViewStackProcessor::GetInstance()->GetMainElementNode(); + EXPECT_EQ(strcmp(topFrameNodeOne->GetTag().c_str(), TAG_CHILD), 0); + auto frameNode = AceType::DynamicCast(topFrameNodeOne); + ASSERT_NE(frameNode, nullptr); + auto node = AceType::DynamicCast(frameNode); + ASSERT_NE(node, nullptr); + std::string key = "clipShape"; + g_isConfigChangePerform = true; + ViewAbstract::ResetResObj(AceType::RawPtr(node), key); + /** + * @tc.steps: step1. The startValue.size() and option.GetOnFinishEvent() are false. + */ + auto property = AnimationPropertyType::TRANSLATION; + const std::vector startValue; + const std::vector endValue; + AnimationOption option; + auto result = ViewAbstract::CreatePropertyAnimation(AceType::RawPtr(node), property, startValue, endValue, option); + EXPECT_NE(result, true); + /** + * @tc.steps: step2. The startValue.size() and option.GetOnFinishEvent() are true. + */ + AnimationOption options { Curves::LINEAR, 0 }; + options.SetOnFinishEvent([&key]() { key = "one"; }); + const std::vector startValues = { 0.0f, 0.0f, 0.0f }; + const std::vector endValues = { 0.0f, 0.0f, 0.0f }; + result = ViewAbstract::CreatePropertyAnimation(AceType::RawPtr(node), property, startValues, endValues, options); + EXPECT_NE(result, true); +} + +/** + * @tc.name: SetOnVisibleAreaApproximateChangeTest001 + * @tc.desc: Test SetOnVisibleAreaApproximateChange + * @tc.type: FUNC + */ +HWTEST_F(ViewAbstractTestNg, SetOnVisibleAreaApproximateChangeTest001, TestSize.Level1) +{ + ViewStackProcessor::GetInstance()->Push(FRAME_NODE_CHILD); + auto topFrameNodeOne = ViewStackProcessor::GetInstance()->GetMainElementNode(); + EXPECT_EQ(strcmp(topFrameNodeOne->GetTag().c_str(), TAG_CHILD), 0); + auto frameNode = AceType::DynamicCast(topFrameNodeOne); + ASSERT_NE(frameNode, nullptr); + auto node = AceType::DynamicCast(frameNode); + ASSERT_NE(node, nullptr); + const std::function onVisibleChange = [](bool isVisible, double ratio) { + isVisible = true; + ratio = 3.0; + }; + const std::vector ratioList = { 1.0, 2.0, 3.0 }; + int32_t expectedUpdateInterval = -1; + node->eventHub_->throttledVisibleAreaCallback_.callback = nullptr; + /** + * @tc.steps: step1. expectedUpdateInterval < 0 and static_cast(expectedUpdateInterval) < minInterval. + */ + ViewAbstract::SetOnVisibleAreaApproximateChange( + AceType::RawPtr(node), std::move(onVisibleChange), ratioList, expectedUpdateInterval); + EXPECT_NE(node->eventHub_->throttledVisibleAreaCallback_.callback, nullptr); + + /** + * @tc.steps: step2. expectedUpdateInterval > 0 and static_cast(expectedUpdateInterval) < minInterval. + */ + node->eventHub_->throttledVisibleAreaCallback_.callback = nullptr; + expectedUpdateInterval = 0; + ViewAbstract::SetOnVisibleAreaApproximateChange( + AceType::RawPtr(node), std::move(onVisibleChange), ratioList, expectedUpdateInterval); + EXPECT_NE(node->eventHub_->throttledVisibleAreaCallback_.callback, nullptr); + + /** + * @tc.steps: step3. expectedUpdateInterval > 0 and static_cast(expectedUpdateInterval) > minInterval. + */ + node->eventHub_->throttledVisibleAreaCallback_.callback = nullptr; + expectedUpdateInterval = 100; + ViewAbstract::SetOnVisibleAreaApproximateChange( + AceType::RawPtr(node), std::move(onVisibleChange), ratioList, expectedUpdateInterval); + EXPECT_NE(node->eventHub_->throttledVisibleAreaCallback_.callback, nullptr); + + /** + * @tc.steps: step4. expectedUpdateInterval < 0 and static_cast(expectedUpdateInterval) < minInterval. + */ + node->eventHub_->throttledVisibleAreaCallback_.callback = nullptr; + expectedUpdateInterval = -1; + ViewAbstract::SetOnVisibleAreaApproximateChange(std::move(onVisibleChange), ratioList, expectedUpdateInterval); + EXPECT_NE(node->eventHub_->throttledVisibleAreaCallback_.callback, nullptr); + + /** + * @tc.steps: step5. expectedUpdateInterval > 0 and static_cast(expectedUpdateInterval) < minInterval. + */ + node->eventHub_->throttledVisibleAreaCallback_.callback = nullptr; + expectedUpdateInterval = 0; + ViewAbstract::SetOnVisibleAreaApproximateChange(std::move(onVisibleChange), ratioList, expectedUpdateInterval); + EXPECT_NE(node->eventHub_->throttledVisibleAreaCallback_.callback, nullptr); + + /** + * @tc.steps: step6. expectedUpdateInterval > 0 and static_cast(expectedUpdateInterval) > minInterval. + */ + node->eventHub_->throttledVisibleAreaCallback_.callback = nullptr; + expectedUpdateInterval = 100; + ViewAbstract::SetOnVisibleAreaApproximateChange(std::move(onVisibleChange), ratioList, expectedUpdateInterval); + EXPECT_NE(node->eventHub_->throttledVisibleAreaCallback_.callback, nullptr); +} } // namespace OHOS::Ace::NG \ No newline at end of file