mirror of
https://gitee.com/openharmony/arkui_ace_engine
synced 2024-10-07 16:33:54 +00:00
新增gesturesTDD用例
Signed-off-by: hct95 <hechentao@huawei.com> Change-Id: Iac6171f4c05ef16a3ea960889a85585a91e263c2 Signed-off-by: hct95 <hechentao@huawei.com>
This commit is contained in:
parent
92c78c2588
commit
5e8db2050e
@ -12,16 +12,105 @@
|
||||
# limitations under the License.
|
||||
|
||||
import("//build/test.gni")
|
||||
import("//foundation/arkui/ace_engine/ace_config.gni")
|
||||
import("//foundation/arkui/ace_engine/test/unittest/ace_unittest.gni")
|
||||
|
||||
common_sources = [
|
||||
# inner
|
||||
"$ace_root/frameworks/base/geometry/dimension.cpp",
|
||||
"$ace_root/frameworks/base/geometry/least_square_impl.cpp",
|
||||
"$ace_root/frameworks/base/geometry/matrix3.cpp",
|
||||
"$ace_root/frameworks/base/geometry/matrix4.cpp",
|
||||
"$ace_root/frameworks/base/json/json_util.cpp",
|
||||
"$ace_root/frameworks/base/log/dump_log.cpp",
|
||||
"$ace_root/frameworks/base/memory/memory_monitor.cpp",
|
||||
"$ace_root/frameworks/base/utils/base_id.cpp",
|
||||
"$ace_root/frameworks/base/utils/string_expression.cpp",
|
||||
"$ace_root/frameworks/base/utils/string_utils.cpp",
|
||||
"$ace_root/frameworks/base/utils/time_util.cpp",
|
||||
"$ace_root/frameworks/core/animation/anticipate_curve.cpp",
|
||||
"$ace_root/frameworks/core/animation/chain_animation.cpp",
|
||||
"$ace_root/frameworks/core/animation/cubic_curve.cpp",
|
||||
"$ace_root/frameworks/core/animation/curves.cpp",
|
||||
"$ace_root/frameworks/core/animation/spring_model.cpp",
|
||||
"$ace_root/frameworks/core/animation/spring_motion.cpp",
|
||||
"$ace_root/frameworks/core/components/common/layout/grid_column_info.cpp",
|
||||
"$ace_root/frameworks/core/components/common/layout/grid_container_info.cpp",
|
||||
"$ace_root/frameworks/core/components/common/layout/grid_system_manager.cpp",
|
||||
"$ace_root/frameworks/core/components/common/layout/screen_system_manager.cpp",
|
||||
"$ace_root/frameworks/core/components/common/properties/alignment.cpp",
|
||||
"$ace_root/frameworks/core/components/common/properties/color.cpp",
|
||||
"$ace_root/frameworks/core/components_v2/inspector/inspector_constants.cpp",
|
||||
"$ace_root/frameworks/core/event/key_event.cpp",
|
||||
"$ace_root/frameworks/core/gestures/velocity_tracker.cpp",
|
||||
"$ace_root/frameworks/core/pipeline/base/constants.cpp",
|
||||
|
||||
# components_ng_base
|
||||
"$ace_root/frameworks/core/components_ng/base/frame_node.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/base/geometry_node.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/base/view_stack_processor.cpp",
|
||||
|
||||
# components_ng_render
|
||||
"$ace_root/frameworks/core/components_ng/render/divider_painter.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/render/paint_wrapper.cpp",
|
||||
|
||||
# components_ng_event
|
||||
"$ace_root/frameworks/core/components_ng/event/event_hub.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/event/focus_hub.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/event/gesture_event_hub.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/event/input_event.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/event/input_event_hub.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/event/state_style_manager.cpp",
|
||||
|
||||
# mock
|
||||
"$ace_root/frameworks/base/test/mock/mock_ressched_report.cpp",
|
||||
"$ace_root/frameworks/base/test/mock/mock_system_properties.cpp",
|
||||
"$ace_root/frameworks/core/common/test/mock/mock_ace_application_info.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/test/mock/render/mock_media_player_creator.cpp",
|
||||
"$ace_root/frameworks/core/pipeline_ng/test/mock/mock_pipeline_base.cpp",
|
||||
"$ace_root/test/unittest/core/pipeline/mock_event_manager.cpp",
|
||||
|
||||
# self
|
||||
# gestures
|
||||
"$ace_root/frameworks/core/components_ng/gestures/gesture_group.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/gestures/gesture_referee.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/gestures/long_press_gesture.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/gestures/pan_gesture.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/gestures/pinch_gesture.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/gestures/rotation_gesture.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/gestures/swipe_gesture.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/gestures/tap_gesture.cpp",
|
||||
|
||||
# recognizers
|
||||
"$ace_root/frameworks/core/components_ng/gestures/recognizers/click_recognizer.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/gestures/recognizers/exclusive_recognizer.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/gestures/recognizers/gesture_recognizer.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/gestures/recognizers/long_press_recognizer.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/gestures/recognizers/multi_fingers_recognizer.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/gestures/recognizers/pan_recognizer.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/gestures/recognizers/parallel_recognizer.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/gestures/recognizers/pinch_recognizer.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/gestures/recognizers/recognizer_group.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/gestures/recognizers/rotation_recognizer.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/gestures/recognizers/sequenced_recognizer.cpp",
|
||||
"$ace_root/frameworks/core/components_ng/gestures/recognizers/swipe_recognizer.cpp",
|
||||
|
||||
# NG
|
||||
"$ace_root/frameworks/core/components_ng/pattern/gesture/gesture_model_ng.cpp",
|
||||
]
|
||||
|
||||
ohos_unittest("gestures_test_ng") {
|
||||
module_out_path = gestures_test_output_path
|
||||
|
||||
sources = [ "gestures_test_ng.cpp" ]
|
||||
test_sources = [ "gestures_test_ng.cpp" ]
|
||||
|
||||
sources = common_sources + test_sources
|
||||
|
||||
deps = [
|
||||
"$ace_root/build:ace_ohos_unittest_base",
|
||||
"$ace_root/frameworks/core/components_ng/base:ace_core_components_base_ng_ohos",
|
||||
"$ace_root/test/unittest:ace_unittest_log",
|
||||
"$ace_root/test/unittest:ace_unittest_trace",
|
||||
"$cjson_root:cjson_static",
|
||||
"//third_party/googletest:gmock_main",
|
||||
]
|
||||
|
||||
configs = [ "$ace_root/test/unittest:ace_unittest_config" ]
|
||||
|
@ -14,6 +14,7 @@
|
||||
*/
|
||||
|
||||
#include <optional>
|
||||
#include <vector>
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
@ -23,6 +24,7 @@
|
||||
#include "base/memory/ace_type.h"
|
||||
#include "base/memory/referenced.h"
|
||||
#include "core/components_ng/base/view_stack_processor.h"
|
||||
#include "core/components_ng/event/gesture_event_hub.h"
|
||||
#include "core/components_ng/gestures/gesture_group.h"
|
||||
#include "core/components_ng/gestures/gesture_referee.h"
|
||||
#include "core/components_ng/gestures/long_press_gesture.h"
|
||||
@ -41,6 +43,10 @@
|
||||
#include "core/components_ng/gestures/tap_gesture.h"
|
||||
#include "core/components_ng/layout/layout_property.h"
|
||||
#include "core/components_ng/pattern/gesture/gesture_model_ng.h"
|
||||
#include "core/components_ng/test/mock/render/mock_media_player.h"
|
||||
#include "core/event/axis_event.h"
|
||||
#include "core/event/key_event.h"
|
||||
#include "core/pipeline_ng/test/mock/mock_pipeline_base.h"
|
||||
|
||||
using namespace testing;
|
||||
using namespace testing::ext;
|
||||
@ -67,9 +73,20 @@ constexpr int32_t DEFAULT_PAN_FINGER = 1;
|
||||
constexpr double DEFAULT_PAN_DISTANCE = 5.0;
|
||||
constexpr int32_t DEFAULT_SLIDE_FINGER = DEFAULT_PAN_FINGER;
|
||||
constexpr double DEFAULT_SLIDE_SPEED = 100.0;
|
||||
constexpr double PAN_DISTANCE = 1.0;
|
||||
} // namespace
|
||||
|
||||
class GesturesTestNg : public testing::Test {};
|
||||
class GesturesTestNg : public testing::Test {
|
||||
public:
|
||||
static void SetUpTestSuite()
|
||||
{
|
||||
MockPipelineBase::SetUp();
|
||||
}
|
||||
static void TearDownTestSuite()
|
||||
{
|
||||
MockPipelineBase::TearDown();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @tc.name: GestureRecognizerTest001
|
||||
@ -1913,6 +1930,7 @@ HWTEST_F(GesturesTestNg, PanRecognizerTest006, TestSize.Level1)
|
||||
*/
|
||||
PanRecognizer::GestureAcceptResult result;
|
||||
panRecognizer.direction_.type = PanDirection::ALL;
|
||||
panRecognizer.distance_ = 0;
|
||||
result = panRecognizer.IsPanGestureAccept();
|
||||
EXPECT_EQ(result, PanRecognizer::GestureAcceptResult::ACCEPT);
|
||||
|
||||
@ -4367,7 +4385,7 @@ HWTEST_F(GesturesTestNg, SwipeRecognizerTest004, TestSize.Level1)
|
||||
EXPECT_EQ(swipeRecognizer.lastTouchEvent_.id, touchEvent.id);
|
||||
|
||||
AxisEvent axisEvent;
|
||||
swipeRecognizer.refereeState_ = RefereeState::FAIL;
|
||||
swipeRecognizer.refereeState_ = RefereeState::DETECTING;
|
||||
swipeRecognizer.HandleTouchMoveEvent(axisEvent);
|
||||
EXPECT_EQ(swipeRecognizer.globalPoint_.GetX(), axisEvent.x);
|
||||
EXPECT_EQ(swipeRecognizer.globalPoint_.GetY(), axisEvent.y);
|
||||
@ -5540,4 +5558,344 @@ HWTEST_F(GesturesTestNg, GestureTest001, TestSize.Level1)
|
||||
auto swipeGestureNG = AceType::DynamicCast<NG::SwipeGesture>(gestureProcessor->TopGestureNG());
|
||||
EXPECT_EQ(swipeGestureNG->speed_, speedNum);
|
||||
}
|
||||
|
||||
/*
|
||||
* @tc.name: PanGestureTest001
|
||||
* @tc.desc: Test PanGesture CreateRecognizer function
|
||||
*/
|
||||
HWTEST_F(GesturesTestNg, PanGestureTest001, TestSize.Level1)
|
||||
{
|
||||
/**
|
||||
* @tc.steps: step1. create PanGesture.
|
||||
*/
|
||||
auto panGestureOption = AceType::MakeRefPtr<PanGestureOption>();
|
||||
auto panGesture = AceType::MakeRefPtr<PanGesture>(panGestureOption);
|
||||
ASSERT_NE(panGesture, nullptr);
|
||||
EXPECT_EQ(panGesture->panGestureOption_->fingers_, panGestureOption->fingers_);
|
||||
|
||||
/**
|
||||
* @tc.steps: step2. call CreateRecognizer function and compare result.
|
||||
* @tc.expect: panRecognizer create successfully, use the same Option as panGesture.
|
||||
*/
|
||||
panGesture->priority_ = GesturePriority::Low;
|
||||
panGesture->gestureMask_ = GestureMask::Normal;
|
||||
auto panRecognizer = AceType::DynamicCast<PanRecognizer>(panGesture->CreateRecognizer());
|
||||
ASSERT_NE(panRecognizer, nullptr);
|
||||
EXPECT_EQ(panRecognizer->GetPriority(), GesturePriority::Low);
|
||||
EXPECT_EQ(panRecognizer->GetPriorityMask(), GestureMask::Normal);
|
||||
EXPECT_EQ(panRecognizer->distance_, DEFAULT_PAN_DISTANCE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.name: PanGestureTest002
|
||||
* @tc.desc: Test PanGesture CreateRecognizer function
|
||||
*/
|
||||
HWTEST_F(GesturesTestNg, PanGestureTest002, TestSize.Level1)
|
||||
{
|
||||
/**
|
||||
* @tc.steps: step1. create PanGesture.
|
||||
*/
|
||||
PanDirection panDirection;
|
||||
panDirection.type = PanDirection::RIGHT;
|
||||
auto panGesture = AceType::MakeRefPtr<PanGesture>(SINGLE_FINGER_NUMBER, panDirection, PAN_DISTANCE);
|
||||
ASSERT_NE(panGesture, nullptr);
|
||||
EXPECT_EQ(panGesture->fingers_, SINGLE_FINGER_NUMBER);
|
||||
|
||||
/**
|
||||
* @tc.steps: step2. create onActionStart, onActionUpdate, onActionEnd, onActionCancel for PanRecognizer.
|
||||
* @tc.expect: panRecognizer create successfully with the OnActionCall.
|
||||
*/
|
||||
panGesture->priority_ = GesturePriority::Low;
|
||||
panGesture->gestureMask_ = GestureMask::Normal;
|
||||
auto onActionStart = [](GestureEvent& info) { return true; };
|
||||
auto onActionUpdate = [](GestureEvent& info) { return true; };
|
||||
auto onActionEnd = [](GestureEvent& info) { return true; };
|
||||
auto onActionCancel = []() { return true; };
|
||||
panGesture->SetOnActionStartId(onActionStart);
|
||||
panGesture->SetOnActionUpdateId(onActionUpdate);
|
||||
panGesture->SetOnActionEndId(onActionEnd);
|
||||
panGesture->SetOnActionCancelId(onActionCancel);
|
||||
EXPECT_TRUE(panGesture->onActionStartId_);
|
||||
EXPECT_TRUE(panGesture->onActionUpdateId_);
|
||||
EXPECT_TRUE(panGesture->onActionEndId_);
|
||||
EXPECT_TRUE(panGesture->onActionCancelId_);
|
||||
|
||||
auto panRecognizer = AceType::DynamicCast<PanRecognizer>(panGesture->CreateRecognizer());
|
||||
ASSERT_NE(panRecognizer, nullptr);
|
||||
EXPECT_EQ(panRecognizer->GetPriority(), GesturePriority::Low);
|
||||
EXPECT_EQ(panRecognizer->GetPriorityMask(), GestureMask::Normal);
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.name: PinchGestureTest002
|
||||
* @tc.desc: Test PinchGesture CreateRecognizer function
|
||||
*/
|
||||
HWTEST_F(GesturesTestNg, PinchGestureTest002, TestSize.Level1)
|
||||
{
|
||||
/**
|
||||
* @tc.steps: step1. create PinchGesture.
|
||||
*/
|
||||
auto pinchGesture = AceType::MakeRefPtr<PinchGesture>(FINGER_NUMBER, PINCH_GESTURE_DISTANCE);
|
||||
ASSERT_NE(pinchGesture, nullptr);
|
||||
|
||||
/**
|
||||
* @tc.steps: step2. call CreateRecognizer function and compare result
|
||||
* @tc.expect: pinchRecognizer create successfully, use the same Option as pinchGesture.
|
||||
*/
|
||||
pinchGesture->priority_ = GesturePriority::Low;
|
||||
pinchGesture->gestureMask_ = GestureMask::Normal;
|
||||
auto onActionStart = [](GestureEvent& info) { return true; };
|
||||
auto onActionUpdate = [](GestureEvent& info) { return true; };
|
||||
auto onActionEnd = [](GestureEvent& info) { return true; };
|
||||
auto onActionCancel = []() { return true; };
|
||||
pinchGesture->SetOnActionStartId(onActionStart);
|
||||
pinchGesture->SetOnActionUpdateId(onActionUpdate);
|
||||
pinchGesture->SetOnActionEndId(onActionEnd);
|
||||
pinchGesture->SetOnActionCancelId(onActionCancel);
|
||||
EXPECT_TRUE(pinchGesture->onActionStartId_);
|
||||
EXPECT_TRUE(pinchGesture->onActionUpdateId_);
|
||||
EXPECT_TRUE(pinchGesture->onActionEndId_);
|
||||
EXPECT_TRUE(pinchGesture->onActionCancelId_);
|
||||
auto pinchRecognizer = AceType::DynamicCast<PinchRecognizer>(pinchGesture->CreateRecognizer());
|
||||
ASSERT_NE(pinchRecognizer, nullptr);
|
||||
EXPECT_EQ(pinchRecognizer->GetPriority(), GesturePriority::Low);
|
||||
EXPECT_EQ(pinchRecognizer->GetPriorityMask(), GestureMask::Normal);
|
||||
EXPECT_EQ(pinchRecognizer->distance_, PINCH_GESTURE_DISTANCE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.name: PinchRecognizerTest008
|
||||
* @tc.desc: Test PinchRecognizer function: IsCtrlBeingPressed
|
||||
* @tc.type: FUNC
|
||||
*/
|
||||
HWTEST_F(GesturesTestNg, PinchRecognizerTest008, TestSize.Level1)
|
||||
{
|
||||
/**
|
||||
* @tc.steps: step1. create PinchRecognizer.
|
||||
*/
|
||||
RefPtr<PinchRecognizer> pinchRecognizer = AceType::MakeRefPtr<PinchRecognizer>(SINGLE_FINGER_NUMBER,
|
||||
PINCH_GESTURE_DISTANCE);
|
||||
ASSERT_NE(pinchRecognizer, nullptr);
|
||||
|
||||
/**
|
||||
* @tc.steps: step2. use IsCtrlBeingPressed with no setting.
|
||||
* @tc.expect: IsCtrlBeingPressed return false.
|
||||
*/
|
||||
EXPECT_FALSE(pinchRecognizer->IsCtrlBeingPressed());
|
||||
|
||||
/**
|
||||
* @tc.steps: step3. create keyEvent and Set KeyEvent to pipeline.
|
||||
* @tc.expect: Set KeyCode KEY_CTRL_LEFT or KEY_CTRL_RIGHT , return True.
|
||||
*/
|
||||
KeyEvent keyEvent;
|
||||
keyEvent.code = KeyCode::KEY_CTRL_LEFT;
|
||||
auto context = PipelineContext::GetCurrentContext();
|
||||
ASSERT_NE(context, nullptr);
|
||||
auto eventManager = AceType::MakeRefPtr<EventManager>();
|
||||
ASSERT_NE(eventManager, nullptr);
|
||||
std::vector<KeyCode> keyCodes { KeyCode::KEY_CTRL_LEFT };
|
||||
eventManager->SetPressedKeyCodes(keyCodes);
|
||||
context->SetEventManager(eventManager);
|
||||
EXPECT_TRUE(pinchRecognizer->IsCtrlBeingPressed());
|
||||
keyEvent.code = KeyCode::KEY_CTRL_RIGHT;
|
||||
EXPECT_TRUE(pinchRecognizer->IsCtrlBeingPressed());
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.name: PinchRecognizerTest009
|
||||
* @tc.desc: Test PinchRecognizer function: HandleTouchDownEvent
|
||||
* @tc.type: FUNC
|
||||
*/
|
||||
HWTEST_F(GesturesTestNg, PinchRecognizerTest009, TestSize.Level1)
|
||||
{
|
||||
/**
|
||||
* @tc.steps: step1. create PinchRecognizer.
|
||||
*/
|
||||
RefPtr<PinchRecognizer> pinchRecognizer = AceType::MakeRefPtr<PinchRecognizer>(SINGLE_FINGER_NUMBER,
|
||||
PINCH_GESTURE_DISTANCE);
|
||||
ASSERT_NE(pinchRecognizer, nullptr);
|
||||
|
||||
/**
|
||||
* @tc.steps: step2. use fingers_ > MAX_PINCH_FINGERS in HandleTouchDownEvent(TouchEvent).
|
||||
* @tc.expect: pinchRecognizer->disposal_ is equal to GestureDisposal::REJECT.
|
||||
*/
|
||||
TouchEvent touchEvent;
|
||||
pinchRecognizer->fingers_ = FINGER_NUMBER_OVER_MAX;
|
||||
pinchRecognizer->refereeState_ = RefereeState::READY;
|
||||
pinchRecognizer->HandleTouchDownEvent(touchEvent);
|
||||
EXPECT_EQ(pinchRecognizer->disposal_, GestureDisposal::REJECT);
|
||||
|
||||
/**
|
||||
* @tc.steps: step3. test with HandleTouchDownEvent(AxisEvent).
|
||||
*/
|
||||
pinchRecognizer->fingers_ = SINGLE_FINGER_NUMBER;
|
||||
AxisEvent axisEvent;
|
||||
|
||||
/**
|
||||
* @tc.steps: step3.1. axisEvent NearZero and IsCtrlBeingPressed() is false.
|
||||
* @tc.expect: pinchRecognizer.disposal_ is equal to GestureDisposal::REJECT.
|
||||
*/
|
||||
axisEvent.pinchAxisScale = 0.0;
|
||||
pinchRecognizer->HandleTouchDownEvent(axisEvent);
|
||||
EXPECT_TRUE(pinchRecognizer->IsCtrlBeingPressed());
|
||||
EXPECT_EQ(pinchRecognizer->disposal_, GestureDisposal::REJECT);
|
||||
|
||||
/**
|
||||
* @tc.steps: step3.2. axisEvent not NearZero and IsRefereeFinished() is true.
|
||||
* @tc.expect: pinchRecognizer->disposal_ is equal to GestureDisposal::REJECT.
|
||||
*/
|
||||
axisEvent.pinchAxisScale = 2.0;
|
||||
pinchRecognizer->refereeState_ = RefereeState::SUCCEED;
|
||||
pinchRecognizer->HandleTouchDownEvent(axisEvent);
|
||||
EXPECT_EQ(pinchRecognizer->disposal_, GestureDisposal::REJECT);
|
||||
|
||||
/**
|
||||
* @tc.steps: step3.2. axisEvent with refereeState_ = RefereeState::READY.
|
||||
* @tc.expect: pinchRecognizer->scale_ is equal to 1.0f.
|
||||
*/
|
||||
pinchRecognizer->refereeState_ = RefereeState::READY;
|
||||
pinchRecognizer->HandleTouchDownEvent(axisEvent);
|
||||
EXPECT_EQ(pinchRecognizer->scale_, 1.0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.name: PinchRecognizerTest010
|
||||
* @tc.desc: Test PinchRecognizer function: HandleTouchUpEvent
|
||||
* @tc.type: FUNC
|
||||
*/
|
||||
HWTEST_F(GesturesTestNg, PinchRecognizerTest010, TestSize.Level1)
|
||||
{
|
||||
/**
|
||||
* @tc.steps: step1. create PinchRecognizer.
|
||||
*/
|
||||
RefPtr<PinchRecognizer> pinchRecognizer = AceType::MakeRefPtr<PinchRecognizer>(SINGLE_FINGER_NUMBER,
|
||||
PINCH_GESTURE_DISTANCE);
|
||||
ASSERT_NE(pinchRecognizer, nullptr);
|
||||
|
||||
/**
|
||||
* @tc.steps: step2. use refereeState_ != RefereeState::SUCCEED and refereeState_ != RefereeState::FAIL.
|
||||
* @tc.expect: pinchRecognizer->disposal_ is equal to GestureDisposal::REJECT.
|
||||
*/
|
||||
TouchEvent touchEvent;
|
||||
pinchRecognizer->isPinchEnd_ = false;
|
||||
pinchRecognizer->refereeState_ = RefereeState::FAIL;
|
||||
pinchRecognizer->HandleTouchDownEvent(touchEvent);
|
||||
pinchRecognizer->refereeState_ = RefereeState::READY;
|
||||
pinchRecognizer->HandleTouchDownEvent(touchEvent);
|
||||
EXPECT_EQ(pinchRecognizer->disposal_, GestureDisposal::NONE);
|
||||
|
||||
/**
|
||||
* @tc.steps: step3. test with HandleTouchDownEvent(AxisEvent).
|
||||
*/
|
||||
AxisEvent axisEvent;
|
||||
/**
|
||||
* @tc.steps: step3.1. test with isPinchEnd_ is true.
|
||||
*/
|
||||
pinchRecognizer->isPinchEnd_ = true;
|
||||
pinchRecognizer->HandleTouchUpEvent(axisEvent);
|
||||
|
||||
/**
|
||||
* @tc.steps: step3.2. test with refereeState_ != RefereeState::SUCCEED and refereeState_ != RefereeState::FAIL.
|
||||
* @tc.expect: pinchRecognizer->disposal_ is equal to GestureDisposal::REJECT.
|
||||
*/
|
||||
pinchRecognizer->isPinchEnd_ = false;
|
||||
pinchRecognizer->refereeState_ = RefereeState::DETECTING;
|
||||
pinchRecognizer->HandleTouchUpEvent(axisEvent);
|
||||
EXPECT_EQ(pinchRecognizer->disposal_, GestureDisposal::REJECT);
|
||||
|
||||
/**
|
||||
* @tc.steps: step3.2. test with refereeState_ != RefereeState::SUCCEED.
|
||||
* @tc.expect: pinchRecognizer->isPinchEnd_ is true.
|
||||
*/
|
||||
pinchRecognizer->refereeState_ = RefereeState::SUCCEED;
|
||||
pinchRecognizer->HandleTouchUpEvent(axisEvent);
|
||||
EXPECT_EQ(pinchRecognizer->isPinchEnd_, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.name: PinchRecognizerTest011
|
||||
* @tc.desc: Test PinchRecognizer function: HandleTouchMoveEvent
|
||||
* @tc.type: FUNC
|
||||
*/
|
||||
HWTEST_F(GesturesTestNg, PinchRecognizerTest011, TestSize.Level1)
|
||||
{
|
||||
/**
|
||||
* @tc.steps: step1. create PinchRecognizer.
|
||||
*/
|
||||
RefPtr<PinchRecognizer> pinchRecognizer = AceType::MakeRefPtr<PinchRecognizer>(SINGLE_FINGER_NUMBER,
|
||||
PINCH_GESTURE_DISTANCE);
|
||||
ASSERT_NE(pinchRecognizer, nullptr);
|
||||
|
||||
/**
|
||||
* @tc.steps: step2. test HandleTouchMoveEvent(TouchEvent).
|
||||
*/
|
||||
pinchRecognizer->refereeState_ = RefereeState::DETECTING;
|
||||
std::vector<TouchEvent> touchEvents;
|
||||
for (std::size_t i = 0; i < 5; ++i) {
|
||||
TouchEvent touchEvent;
|
||||
touchEvent.x = 100.0 * (i + 1);
|
||||
touchEvent.y = 100.0 * (i + 1);
|
||||
pinchRecognizer->touchPoints_[i] = touchEvent;
|
||||
}
|
||||
pinchRecognizer->initialDev_ = 1.0;
|
||||
TouchEvent touchEvent;
|
||||
touchEvent.x = 100.0;
|
||||
touchEvent.y = 100.0;
|
||||
|
||||
/**
|
||||
* @tc.steps: step2.1. test HandleTouchMoveEvent(TouchEvent) with fabs(currentDev_ - initialDev_) >= distance_.
|
||||
* @tc.expect: scale_ = pinchRecognizer->ComputeAverageDeviation() / initialDev_.
|
||||
*/
|
||||
pinchRecognizer->HandleTouchMoveEvent(touchEvent);
|
||||
EXPECT_EQ(pinchRecognizer->scale_, pinchRecognizer->ComputeAverageDeviation() / pinchRecognizer->initialDev_);
|
||||
EXPECT_EQ(pinchRecognizer->disposal_, GestureDisposal::ACCEPT);
|
||||
|
||||
/**
|
||||
* @tc.steps: step2.2. test HandleTouchMoveEvent(TouchEvent) with refereeState_ == RefereeState::SUCCEED.
|
||||
* @tc.expect: scale_ = pinchRecognizer->ComputeAverageDeviation() / initialDev_
|
||||
*/
|
||||
pinchRecognizer->refereeState_ = RefereeState::SUCCEED;
|
||||
pinchRecognizer->initialDev_ = 2.0;
|
||||
pinchRecognizer->OnFlushTouchEventsEnd();
|
||||
pinchRecognizer->HandleTouchMoveEvent(touchEvent);
|
||||
EXPECT_EQ(pinchRecognizer->scale_, pinchRecognizer->ComputeAverageDeviation() / pinchRecognizer->initialDev_);
|
||||
|
||||
/**
|
||||
* @tc.steps: step3. test HandleTouchMoveEvent(AxisEvent).
|
||||
*/
|
||||
AxisEvent axisEvent;
|
||||
pinchRecognizer->isPinchEnd_ = false;
|
||||
|
||||
/**
|
||||
* @tc.steps: step3.1. axisEvent NearZero and IsCtrlBeingPressed() is false.
|
||||
* @tc.expect: pinchRecognizer->disposal_ is equal to GestureDisposal::REJECT.
|
||||
*/
|
||||
axisEvent.pinchAxisScale = 0.0;
|
||||
pinchRecognizer->refereeState_ = RefereeState::DETECTING;
|
||||
auto context = PipelineContext::GetCurrentContext();
|
||||
ASSERT_NE(context, nullptr);
|
||||
context->eventManager_ = nullptr;
|
||||
pinchRecognizer->HandleTouchMoveEvent(axisEvent);
|
||||
EXPECT_EQ(pinchRecognizer->disposal_, GestureDisposal::REJECT);
|
||||
|
||||
/**
|
||||
* @tc.steps: step3.2. test with refereeState_ = RefereeState::SUCCEED.
|
||||
* @tc.expect: pinchRecognizer->refereeState_ is equal to RefereeState::READY.
|
||||
*/
|
||||
pinchRecognizer->isPinchEnd_ = false;
|
||||
pinchRecognizer->refereeState_ = RefereeState::SUCCEED;
|
||||
pinchRecognizer->HandleTouchMoveEvent(axisEvent);
|
||||
EXPECT_EQ(pinchRecognizer->refereeState_, RefereeState::READY);
|
||||
EXPECT_EQ(pinchRecognizer->isPinchEnd_, true);
|
||||
|
||||
/**
|
||||
* @tc.steps: step3.3. test with axisEvent not NearZero .
|
||||
* @tc.expect: pinchRecognizer->scale_ is equal to axisEvent.pinchAxisScale.
|
||||
*/
|
||||
pinchRecognizer->isPinchEnd_ = false;
|
||||
axisEvent.pinchAxisScale = 1.0;
|
||||
pinchRecognizer->refereeState_ = RefereeState::DETECTING;
|
||||
pinchRecognizer->HandleTouchMoveEvent(axisEvent);
|
||||
EXPECT_EQ(pinchRecognizer->scale_, axisEvent.pinchAxisScale);
|
||||
}
|
||||
} // namespace OHOS::Ace::NG
|
||||
|
Loading…
Reference in New Issue
Block a user