X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali%2Futc-Dali-LongPressGestureDetector.cpp;h=e179f2da4a67ac9dd7c067c2f77688cefde48f6c;hb=ec92619120660e73d83cc3dc7f73c4662b704a03;hp=6c7ba8101fb003890f75e387235e904423a815dc;hpb=a86ae47738c5baf9707e366912e1f52dbba39129;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/automated-tests/src/dali/utc-Dali-LongPressGestureDetector.cpp b/automated-tests/src/dali/utc-Dali-LongPressGestureDetector.cpp index 6c7ba81..e179f2d 100644 --- a/automated-tests/src/dali/utc-Dali-LongPressGestureDetector.cpp +++ b/automated-tests/src/dali/utc-Dali-LongPressGestureDetector.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,15 +15,16 @@ * */ -#include - -#include -#include -#include -#include -#include #include -#include +#include +#include +#include +#include +#include +#include +#include + +#include using namespace Dali; @@ -40,45 +41,46 @@ void utc_dali_long_press_gesture_detector_cleanup(void) /////////////////////////////////////////////////////////////////////////////// namespace { - // Stores data that is populated in the callback and will be read by the TET cases struct SignalData { SignalData() - : functorCalled( false ), - voidFunctorCalled( false ), - receivedGesture( Gesture::Clear ), + : functorCalled(false), + voidFunctorCalled(false), + receivedGesture(), pressedActor() - {} + { + } void Reset() { - functorCalled = false; + functorCalled = false; voidFunctorCalled = false; - receivedGesture.numberOfTouches = 0u; - receivedGesture.screenPoint = Vector2(0.0f, 0.0f); - receivedGesture.localPoint = Vector2(0.0f, 0.0f); + receivedGesture.Reset(); pressedActor.Reset(); } - bool functorCalled; - bool voidFunctorCalled; + bool functorCalled; + bool voidFunctorCalled; LongPressGesture receivedGesture; - Actor pressedActor; + Actor pressedActor; }; // Functor that sets the data when called struct GestureReceivedFunctor { - GestureReceivedFunctor(SignalData& data) : signalData(data) { } + GestureReceivedFunctor(SignalData& data) + : signalData(data) + { + } void operator()(Actor actor, const LongPressGesture& longPress) { - signalData.functorCalled = true; + signalData.functorCalled = true; signalData.receivedGesture = longPress; - signalData.pressedActor = actor; + signalData.pressedActor = actor; } void operator()() @@ -92,60 +94,46 @@ struct GestureReceivedFunctor // Functor that removes the gestured actor from stage struct UnstageActorFunctor : public GestureReceivedFunctor { - UnstageActorFunctor( SignalData& data, Gesture::State& stateToUnstage ) - : GestureReceivedFunctor( data ), - stateToUnstage( stateToUnstage ) + UnstageActorFunctor(SignalData& data, GestureState& stateToUnstage, Integration::Scene scene) + : GestureReceivedFunctor(data), + stateToUnstage(stateToUnstage), + scene(scene) { } - void operator()( Actor actor, const LongPressGesture& longPress ) + void operator()(Actor actor, const LongPressGesture& longPress) { - GestureReceivedFunctor::operator()( actor, longPress ); + GestureReceivedFunctor::operator()(actor, longPress); - if ( longPress.state == stateToUnstage ) + if(longPress.GetState() == stateToUnstage) { - Stage::GetCurrent().Remove( actor ); + scene.Remove(actor); } } - Gesture::State& stateToUnstage; + GestureState& stateToUnstage; + Integration::Scene scene; }; // Functor for receiving a touch event struct TouchEventFunctor { - bool operator()(Actor actor, const TouchEvent& touch) + bool operator()(Actor actor, Dali::TouchEvent touch) { //For line coverage unsigned int points = touch.GetPointCount(); - if( points > 0) + if(points > 0) { - const TouchPoint& touchPoint = touch.GetPoint(0); - tet_printf("Touch Point state = %d\n", touchPoint.state); + tet_printf("Touch Point state = %d\n", touch.GetState(0)); } return false; } }; -// Generate a LongPressGestureEvent to send to Core -Integration::LongPressGestureEvent GenerateLongPress( - Gesture::State state, - unsigned int numberOfTouches, - Vector2 point) -{ - Integration::LongPressGestureEvent longPress( state ); - - longPress.numberOfTouches = numberOfTouches; - longPress.point = point; - - return longPress; -} - -} // anon namespace +} // namespace /////////////////////////////////////////////////////////////////////////////// - // Positive test case for a method int UtcDaliLongPressGestureDetectorConstructorP(void) { @@ -160,10 +148,11 @@ int UtcDaliLongPressGestureDetectorCopyConstructorP(void) { TestApplication application; - LongPressGestureDetector detector = LongPressGestureDetector::New();; + LongPressGestureDetector detector = LongPressGestureDetector::New(); + ; - LongPressGestureDetector copy( detector ); - DALI_TEST_CHECK( detector ); + LongPressGestureDetector copy(detector); + DALI_TEST_CHECK(detector); END_TEST; } @@ -172,13 +161,14 @@ int UtcDaliLongPressGestureDetectorAssignmentOperatorP(void) TestApplication application; LongPressGestureDetector detector; - detector = LongPressGestureDetector::New();; + detector = LongPressGestureDetector::New(); + ; LongPressGestureDetector copy; copy = detector; - DALI_TEST_CHECK( detector ); + DALI_TEST_CHECK(detector); - DALI_TEST_CHECK( detector == copy ); + DALI_TEST_CHECK(detector == copy); END_TEST; } @@ -209,9 +199,9 @@ int UtcDaliLongPressGestureDetectorNew(void) // Attach an actor and emit a touch event on the actor to ensure complete line coverage Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(actor); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(actor); // Render and notify application.SendNotification(); @@ -223,7 +213,10 @@ int UtcDaliLongPressGestureDetectorNew(void) actor.TouchedSignal().Connect(&application, touchFunctor); Integration::TouchEvent touchEvent(1); - TouchPoint point(1, TouchPoint::Down, 20.0f, 20.0f); + Integration::Point point; + point.SetDeviceId(1); + point.SetState(PointState::DOWN); + point.SetScreenPosition(Vector2(20.0f, 20.0f)); touchEvent.AddPoint(point); application.ProcessEvent(touchEvent); @@ -231,8 +224,6 @@ int UtcDaliLongPressGestureDetectorNew(void) application.SendNotification(); application.Render(); - // For line coverage, Initialise default constructor - TouchEvent touchEvent2; END_TEST; } @@ -248,137 +239,22 @@ int UtcDaliLongPressGestureDetectorDownCast(void) LongPressGestureDetector detector2 = LongPressGestureDetector::DownCast(object); DALI_TEST_CHECK(detector2); - LongPressGestureDetector detector3 = DownCast< LongPressGestureDetector >(object); + LongPressGestureDetector detector3 = DownCast(object); DALI_TEST_CHECK(detector3); - BaseHandle unInitializedObject; + BaseHandle unInitializedObject; LongPressGestureDetector detector4 = LongPressGestureDetector::DownCast(unInitializedObject); DALI_TEST_CHECK(!detector4); - LongPressGestureDetector detector5 = DownCast< LongPressGestureDetector >(unInitializedObject); + LongPressGestureDetector detector5 = DownCast(unInitializedObject); DALI_TEST_CHECK(!detector5); - GestureDetector detector6 = LongPressGestureDetector::New(); + GestureDetector detector6 = LongPressGestureDetector::New(); LongPressGestureDetector detector7 = LongPressGestureDetector::DownCast(detector6); DALI_TEST_CHECK(detector7); END_TEST; } -int UtcDaliLongPressGestureSetTouchesRequired01(void) -{ - TestApplication application; - - LongPressGestureDetector detector = LongPressGestureDetector::New(); - - unsigned int touches = 3; - - DALI_TEST_CHECK(touches != detector.GetMinimumTouchesRequired()); - DALI_TEST_CHECK(touches != detector.GetMaximumTouchesRequired()); - - detector.SetTouchesRequired(touches); - - DALI_TEST_EQUALS(touches, detector.GetMinimumTouchesRequired(), TEST_LOCATION); - DALI_TEST_EQUALS(touches, detector.GetMaximumTouchesRequired(), TEST_LOCATION); - - // Attach an actor and change the required touches - - Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(actor); - - // Render and notify - application.SendNotification(); - application.Render(); - - SignalData data; - GestureReceivedFunctor functor(data); - - detector.Attach(actor); - detector.DetectedSignal().Connect(&application, functor); - - TestGestureManager& gestureManager = application.GetGestureManager(); - gestureManager.Initialize(); - - detector.SetTouchesRequired(4); - - // Gesture detection should have been updated only - DALI_TEST_EQUALS(true, gestureManager.WasCalled(TestGestureManager::UpdateType), TEST_LOCATION); - DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::RegisterType), TEST_LOCATION); - DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::UnregisterType), TEST_LOCATION); - - // Reset values - gestureManager.Initialize(); - - // Create a second gesture detector that requires even less maximum touches - LongPressGestureDetector secondDetector = LongPressGestureDetector::New(); - secondDetector.Attach(actor); - - // Gesture detection should have been updated - DALI_TEST_EQUALS(true, gestureManager.WasCalled(TestGestureManager::UpdateType), TEST_LOCATION); - DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::RegisterType), TEST_LOCATION); - DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::UnregisterType), TEST_LOCATION); - END_TEST; -} - -int UtcDaliLongPressGestureSetTouchesRequired02(void) -{ - TestApplication application; - - LongPressGestureDetector detector = LongPressGestureDetector::New(); - - unsigned int min = 3; - unsigned int max = 5; - - DALI_TEST_CHECK(min != detector.GetMinimumTouchesRequired()); - DALI_TEST_CHECK(max != detector.GetMaximumTouchesRequired()); - - detector.SetTouchesRequired(min, max); - - DALI_TEST_EQUALS(min, detector.GetMinimumTouchesRequired(), TEST_LOCATION); - DALI_TEST_EQUALS(max, detector.GetMaximumTouchesRequired(), TEST_LOCATION); - - // Attach an actor and change the maximum touches - - Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(actor); - - // Render and notify - application.SendNotification(); - application.Render(); - - SignalData data; - GestureReceivedFunctor functor(data); - - detector.Attach(actor); - detector.DetectedSignal().Connect(&application, functor); - - TestGestureManager& gestureManager = application.GetGestureManager(); - gestureManager.Initialize(); - - detector.SetTouchesRequired(4, 5); - - // Gesture detection should have been updated only - DALI_TEST_EQUALS(true, gestureManager.WasCalled(TestGestureManager::UpdateType), TEST_LOCATION); - DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::RegisterType), TEST_LOCATION); - DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::UnregisterType), TEST_LOCATION); - - // Reset values - gestureManager.Initialize(); - - // Create a second gesture detector that requires even less maximum touches - LongPressGestureDetector secondDetector = LongPressGestureDetector::New(); - secondDetector.Attach(actor); - - // Gesture detection should have been updated - DALI_TEST_EQUALS(true, gestureManager.WasCalled(TestGestureManager::UpdateType), TEST_LOCATION); - DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::RegisterType), TEST_LOCATION); - DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::UnregisterType), TEST_LOCATION); - END_TEST; -} - int UtcDaliLongPressGestureGetMinimumTouchesRequired(void) { TestApplication application; @@ -402,15 +278,15 @@ int UtcDaliLongPressGestureSignalReceptionNegative(void) TestApplication application; Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(actor); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(actor); // Render and notify application.SendNotification(); application.Render(); - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); LongPressGestureDetector detector = LongPressGestureDetector::New(); @@ -418,9 +294,9 @@ int UtcDaliLongPressGestureSignalReceptionNegative(void) detector.DetectedSignal().Connect(&application, functor); // Do a long press outside actor's area - application.ProcessEvent( GenerateLongPress( Gesture::Possible, 1u, Vector2(112.0f, 112.0f ) ) ); - application.ProcessEvent( GenerateLongPress( Gesture::Started, 1u, Vector2(112.0f, 112.0f ) ) ); - application.ProcessEvent( GenerateLongPress( Gesture::Finished, 1u, Vector2(112.0f, 112.0f ) ) ); + TestGenerateLongPress(application, 112.0f, 112.0f); + TestEndLongPress(application, 112.0f, 112.0f); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; } @@ -430,15 +306,15 @@ int UtcDaliLongPressGestureSignalReceptionPositive(void) TestApplication application; Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(actor); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(actor); // Render and notify application.SendNotification(); application.Render(); - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); LongPressGestureDetector detector = LongPressGestureDetector::New(); @@ -446,12 +322,11 @@ int UtcDaliLongPressGestureSignalReceptionPositive(void) detector.DetectedSignal().Connect(&application, functor); // Do a long press inside actor's area - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(50.0f, 50.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(50.0f, 50.0f))); + TestGenerateLongPress(application, 50.0f, 50.0f); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(1u, data.receivedGesture.numberOfTouches, TEST_LOCATION); - DALI_TEST_EQUALS( Vector2(50.0f, 50.0f), data.receivedGesture.localPoint, 0.1, TEST_LOCATION); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(50.0f, 50.0f))); + DALI_TEST_EQUALS(1u, data.receivedGesture.GetNumberOfTouches(), TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(50.0f, 50.0f), data.receivedGesture.GetLocalPoint(), 0.1, TEST_LOCATION); + TestEndLongPress(application, 50.0f, 50.0f); END_TEST; } @@ -460,15 +335,15 @@ int UtcDaliLongPressGestureSignalReceptionDetach(void) TestApplication application; Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(actor); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(actor); // Render and notify application.SendNotification(); application.Render(); - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); LongPressGestureDetector detector = LongPressGestureDetector::New(); @@ -476,31 +351,28 @@ int UtcDaliLongPressGestureSignalReceptionDetach(void) detector.DetectedSignal().Connect(&application, functor); // Start long press within the actor's area - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(20.0f, 20.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(20.0f, 20.0f))); + TestGenerateLongPress(application, 20.0f, 20.0f); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(1u, data.receivedGesture.numberOfTouches, TEST_LOCATION); - DALI_TEST_EQUALS( Vector2(20.0f, 20.0f), data.receivedGesture.localPoint, 0.1, TEST_LOCATION); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(20.0f, 20.0f))); + DALI_TEST_EQUALS(1u, data.receivedGesture.GetNumberOfTouches(), TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(20.0f, 20.0f), data.receivedGesture.GetLocalPoint(), 0.1, TEST_LOCATION); + TestEndLongPress(application, 20.0f, 20.0f); // repeat the long press within the actor's area - we should still receive the signal data.Reset(); - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(50.0f, 50.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(50.0f, 50.0f))); + TestGenerateLongPress(application, 50.0f, 50.0f); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(1u, data.receivedGesture.numberOfTouches, TEST_LOCATION); - DALI_TEST_EQUALS( Vector2(50.0f, 50.0f), data.receivedGesture.localPoint, 0.1, TEST_LOCATION); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(50.0f, 50.0f))); + DALI_TEST_EQUALS(1u, data.receivedGesture.GetNumberOfTouches(), TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(50.0f, 50.0f), data.receivedGesture.GetLocalPoint(), 0.1, TEST_LOCATION); + TestEndLongPress(application, 50.0f, 50.0f); // Detach actor detector.DetachAll(); // Ensure we are no longer signalled data.Reset(); - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(20.0f, 20.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(20.0f, 20.0f))); + TestGenerateLongPress(application, 20.0f, 20.0f); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(50.0f, 50.0f))); + TestEndLongPress(application, 50.0f, 50.0f); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; } @@ -509,7 +381,7 @@ int UtcDaliLongPressGestureSignalReceptionActorDestroyedDuringLongPress(void) { TestApplication application; - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); LongPressGestureDetector detector = LongPressGestureDetector::New(); @@ -518,9 +390,9 @@ int UtcDaliLongPressGestureSignalReceptionActorDestroyedDuringLongPress(void) // Actor lifetime is scoped { Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(actor); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(actor); // Render and notify application.SendNotification(); @@ -529,12 +401,11 @@ int UtcDaliLongPressGestureSignalReceptionActorDestroyedDuringLongPress(void) detector.Attach(actor); // Start long press within the actor's area - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(20.0f, 20.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(20.0f, 20.0f))); + TestGenerateLongPress(application, 20.0f, 20.0f); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); // Remove the actor from stage and reset the data - Stage::GetCurrent().Remove(actor); + application.GetScene().Remove(actor); // Render and notify application.SendNotification(); @@ -544,7 +415,7 @@ int UtcDaliLongPressGestureSignalReceptionActorDestroyedDuringLongPress(void) // Actor should now have been destroyed data.Reset(); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(20.0f, 20.0f))); + TestEndLongPress(application, 20.0f, 20.0f); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; } @@ -554,15 +425,15 @@ int UtcDaliLongPressGestureSignalReceptionRotatedActor(void) TestApplication application; Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetOrientation(Dali::Degree(90.0f), Vector3::ZAXIS); - Stage::GetCurrent().Add(actor); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ORIENTATION, Quaternion(Dali::Degree(90.0f), Vector3::ZAXIS)); + application.GetScene().Add(actor); // Render and notify application.SendNotification(); application.Render(); - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); LongPressGestureDetector detector = LongPressGestureDetector::New(); @@ -570,37 +441,34 @@ int UtcDaliLongPressGestureSignalReceptionRotatedActor(void) detector.DetectedSignal().Connect(&application, functor); // Do a long press - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(5.0f, 5.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(5.0f, 5.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(5.0f, 5.0f))); + TestGenerateLongPress(application, 5.0f, 5.0f); + TestEndLongPress(application, 5.0f, 5.0f); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(1u, data.receivedGesture.numberOfTouches, TEST_LOCATION); - DALI_TEST_EQUALS( Vector2(5.0f, 5.0f), data.receivedGesture.screenPoint, 0.1, TEST_LOCATION); + DALI_TEST_EQUALS(1u, data.receivedGesture.GetNumberOfTouches(), TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(5.0f, 5.0f), data.receivedGesture.GetScreenPoint(), 0.1, TEST_LOCATION); // Rotate actor again and render - actor.SetOrientation(Dali::Degree(180.0f), Vector3::ZAXIS); + actor.SetProperty(Actor::Property::ORIENTATION, Quaternion(Dali::Degree(180.0f), Vector3::ZAXIS)); application.SendNotification(); application.Render(); // Do another long press, should still receive event data.Reset(); - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(5.0f, 5.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(5.0f, 5.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(5.0f, 5.0f))); + TestGenerateLongPress(application, 5.0f, 5.0f); + TestEndLongPress(application, 5.0f, 5.0f); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(1u, data.receivedGesture.numberOfTouches, TEST_LOCATION); - DALI_TEST_EQUALS( Vector2(5.0f, 5.0f), data.receivedGesture.screenPoint, 0.1, TEST_LOCATION); + DALI_TEST_EQUALS(1u, data.receivedGesture.GetNumberOfTouches(), TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(5.0f, 5.0f), data.receivedGesture.GetScreenPoint(), 0.1, TEST_LOCATION); // Rotate actor again and render - actor.SetOrientation(Dali::Degree(90.0f), Vector3::YAXIS); + actor.SetProperty(Actor::Property::ORIENTATION, Quaternion(Dali::Degree(90.0f), Vector3::YAXIS)); application.SendNotification(); application.Render(); // Do a long press, inside where the actor used to be, Should not receive the event data.Reset(); - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(70.0f, 70.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(70.0f, 70.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(70.0f, 70.0f))); + TestGenerateLongPress(application, 70.0f, 70.0f); + TestEndLongPress(application, 70.0f, 70.0f); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; } @@ -610,28 +478,25 @@ int UtcDaliLongPressGestureSignalReceptionChildHit(void) TestApplication application; Actor parent = Actor::New(); - parent.SetSize(100.0f, 100.0f); - parent.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(parent); + parent.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + parent.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(parent); // Set child to completely cover parent. // Change rotation of child to be different from parent so that we can check if our local coordinate // conversion of the parent actor is correct. Actor child = Actor::New(); - child.SetSize(100.0f, 100.0f); - child.SetAnchorPoint(AnchorPoint::CENTER); - child.SetParentOrigin(ParentOrigin::CENTER); - child.SetOrientation(Dali::Degree(90.0f), Vector3::ZAXIS); + child.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + child.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER); + child.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + child.SetProperty(Actor::Property::ORIENTATION, Quaternion(Dali::Degree(90.0f), Vector3::ZAXIS)); parent.Add(child); - TouchEventFunctor touchFunctor; - child.TouchedSignal().Connect(&application, touchFunctor); - // Render and notify application.SendNotification(); application.Render(); - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); LongPressGestureDetector detector = LongPressGestureDetector::New(); @@ -639,12 +504,11 @@ int UtcDaliLongPressGestureSignalReceptionChildHit(void) detector.DetectedSignal().Connect(&application, functor); // Do long press - hits child area but parent should still receive it - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(50.0f, 50.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(50.0f, 50.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(50.0f, 50.0f))); + TestGenerateLongPress(application, 50.0f, 50.0f); + TestEndLongPress(application, 50.0f, 50.0f); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); DALI_TEST_EQUALS(true, parent == data.pressedActor, TEST_LOCATION); - DALI_TEST_EQUALS(Vector2(50.0f, 50.0f), data.receivedGesture.screenPoint, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(50.0f, 50.0f), data.receivedGesture.GetScreenPoint(), 0.01f, TEST_LOCATION); // Attach child and generate same touch points // (Also proves that you can detach and then re-attach another actor) @@ -653,12 +517,11 @@ int UtcDaliLongPressGestureSignalReceptionChildHit(void) // Do an entire long press, only check finished value data.Reset(); - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(51.0f, 51.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(51.0f, 51.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(51.0f, 51.0f))); + TestGenerateLongPress(application, 51.0f, 51.0f); + TestEndLongPress(application, 51.0f, 51.0f); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); DALI_TEST_EQUALS(true, child == data.pressedActor, TEST_LOCATION); - DALI_TEST_EQUALS(Vector2(51.0f, 51.0f), data.receivedGesture.screenPoint, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(51.0f, 51.0f), data.receivedGesture.GetScreenPoint(), 0.01f, TEST_LOCATION); END_TEST; } @@ -667,21 +530,21 @@ int UtcDaliLongPressGestureSignalReceptionAttachDetachMany(void) TestApplication application; Actor first = Actor::New(); - first.SetSize(100.0f, 100.0f); - first.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(first); + first.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + first.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(first); Actor second = Actor::New(); - second.SetSize(100.0f, 100.0f); - second.SetX(100.0f); - second.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(second); + second.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + second.SetProperty(Actor::Property::POSITION_X, 100.0f); + second.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(second); // Render and notify application.SendNotification(); application.Render(); - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); LongPressGestureDetector detector = LongPressGestureDetector::New(); @@ -690,17 +553,15 @@ int UtcDaliLongPressGestureSignalReceptionAttachDetachMany(void) detector.DetectedSignal().Connect(&application, functor); // LongPress within second actor's area - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(120.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(120.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(120.0f, 10.0f))); + TestGenerateLongPress(application, 120.0f, 10.0f); + TestEndLongPress(application, 120.0f, 10.0f); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); DALI_TEST_EQUALS(true, second == data.pressedActor, TEST_LOCATION); // LongPress within first actor's area data.Reset(); - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(20.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(20.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(20.0f, 10.0f))); + TestGenerateLongPress(application, 20.0f, 10.0f); + TestEndLongPress(application, 20.0f, 10.0f); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); DALI_TEST_EQUALS(true, first == data.pressedActor, TEST_LOCATION); @@ -709,16 +570,14 @@ int UtcDaliLongPressGestureSignalReceptionAttachDetachMany(void) // second actor shouldn't receive event data.Reset(); - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(120.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(120.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(120.0f, 10.0f))); + TestGenerateLongPress(application, 120.0f, 10.0f); + TestEndLongPress(application, 120.0f, 10.0f); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); // first actor should continue receiving event data.Reset(); - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(20.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(20.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(20.0f, 10.0f))); + TestGenerateLongPress(application, 20.0f, 10.0f); + TestEndLongPress(application, 20.0f, 10.0f); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); END_TEST; } @@ -728,15 +587,15 @@ int UtcDaliLongPressGestureSignalReceptionActorBecomesUntouchable(void) TestApplication application; Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(actor); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(actor); // Render and notify application.SendNotification(); application.Render(); - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); LongPressGestureDetector detector = LongPressGestureDetector::New(); @@ -744,13 +603,12 @@ int UtcDaliLongPressGestureSignalReceptionActorBecomesUntouchable(void) detector.DetectedSignal().Connect(&application, functor); // LongPress in actor's area - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(50.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(50.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(50.0f, 10.0f))); + TestGenerateLongPress(application, 50.0f, 10.0f); + TestEndLongPress(application, 50.0f, 10.0f); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); // Actor becomes invisible - actor should not receive the next long press - actor.SetVisible(false); + actor.SetProperty(Actor::Property::VISIBLE, false); // Render and notify application.SendNotification(); @@ -758,124 +616,41 @@ int UtcDaliLongPressGestureSignalReceptionActorBecomesUntouchable(void) // LongPress in the same area, shouldn't receive event data.Reset(); - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(50.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(50.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(50.0f, 10.0f))); + TestGenerateLongPress(application, 50.0f, 10.0f); + TestEndLongPress(application, 50.0f, 10.0f); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; } -int UtcDaliLongPressGestureSignalReceptionMultipleGestureDetectors(void) -{ - TestApplication application; - Dali::TestGestureManager& gestureManager = application.GetGestureManager(); - - Actor first = Actor::New(); - first.SetSize(100.0f, 100.0f); - first.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(first); - - Actor second = Actor::New(); - second.SetSize(100.0f, 100.0f); - second.SetAnchorPoint(AnchorPoint::TOP_LEFT); - second.SetX(100.0f); - first.Add(second); - - // Render and notify - application.SendNotification(); - application.Render(); - - SignalData data; - GestureReceivedFunctor functor(data); - - LongPressGestureDetector firstDetector = LongPressGestureDetector::New(); - firstDetector.Attach(first); - firstDetector.DetectedSignal().Connect(&application, functor); - - // secondDetector is scoped - { - // Reset gestureManager statistics - gestureManager.Initialize(); - - LongPressGestureDetector secondDetector = LongPressGestureDetector::New(); - secondDetector.SetTouchesRequired(2); - secondDetector.Attach(second); - secondDetector.DetectedSignal().Connect(&application, functor); - - DALI_TEST_EQUALS(true, gestureManager.WasCalled(TestGestureManager::UpdateType), TEST_LOCATION); - DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::RegisterType), TEST_LOCATION); - DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::UnregisterType), TEST_LOCATION); - - // LongPress within second actor's area - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 2u, Vector2(150.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 2u, Vector2(150.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 2u, Vector2(150.0f, 10.0f))); - DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(true, second == data.pressedActor, TEST_LOCATION); - - // LongPress continues as single touch gesture - we should not receive any gesture - data.Reset(); - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(150.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(150.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(150.0f, 10.0f))); - DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); - - // Single touch long press starts - first actor should receive gesture - data.Reset(); - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(50.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(50.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(50.0f, 10.0f))); - DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(true, first == data.pressedActor, TEST_LOCATION); - - // long press changes to double-touch - we shouldn't receive event - data.Reset(); - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 2u, Vector2(50.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 2u, Vector2(50.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 2u, Vector2(50.0f, 10.0f))); - DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); - - // Reset gesture manager statistics - gestureManager.Initialize(); - } - - // secondDetector has now been deleted. Gesture detection should have been updated only - DALI_TEST_EQUALS(true, gestureManager.WasCalled(TestGestureManager::UpdateType), TEST_LOCATION); - DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::RegisterType), TEST_LOCATION); - DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::UnregisterType), TEST_LOCATION); - END_TEST; -} - int UtcDaliLongPressGestureSignalReceptionMultipleDetectorsOnActor(void) { TestApplication application; Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(actor); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(actor); // Render and notify application.SendNotification(); application.Render(); // Attach actor to one detector - SignalData firstData; - GestureReceivedFunctor firstFunctor(firstData); + SignalData firstData; + GestureReceivedFunctor firstFunctor(firstData); LongPressGestureDetector firstDetector = LongPressGestureDetector::New(); firstDetector.Attach(actor); firstDetector.DetectedSignal().Connect(&application, firstFunctor); // Attach actor to another detector - SignalData secondData; - GestureReceivedFunctor secondFunctor(secondData); + SignalData secondData; + GestureReceivedFunctor secondFunctor(secondData); LongPressGestureDetector secondDetector = LongPressGestureDetector::New(); secondDetector.Attach(actor); secondDetector.DetectedSignal().Connect(&application, secondFunctor); // LongPress in actor's area - both detector's functors should be called - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(50.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(50.0f, 10.0f))); + TestGenerateLongPress(application, 50.0f, 10.0f); DALI_TEST_EQUALS(true, firstData.functorCalled, TEST_LOCATION); DALI_TEST_EQUALS(true, secondData.functorCalled, TEST_LOCATION); END_TEST; @@ -886,204 +661,84 @@ int UtcDaliLongPressGestureSignalReceptionDifferentPossible(void) TestApplication application; Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(actor); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(actor); // Render and notify application.SendNotification(); application.Render(); // Attach actor to detector - SignalData data; - GestureReceivedFunctor functor( data ); + SignalData data; + GestureReceivedFunctor functor(data); LongPressGestureDetector detector = LongPressGestureDetector::New(); detector.Attach(actor); - detector.DetectedSignal().Connect( &application, functor ); + detector.DetectedSignal().Connect(&application, functor); // LongPress possible in actor's area. - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(50.0f, 10.0f))); + TestStartLongPress(application, 50.0f, 10.0f); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); // Move actor somewhere else - actor.SetPosition( 100.0f, 100.0f ); + actor.SetProperty(Actor::Property::POSITION, Vector2(100.0f, 100.0f)); // Render and notify application.SendNotification(); application.Render(); // Emit Started event, we should not receive the long press. - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(50.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(50.0f, 10.0f))); + TestTriggerLongPress(application); + TestGenerateLongPress(application, 50.0f, 10.0f); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); // LongPress possible in empty area. - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(50.0f, 10.0f))); + TestStartLongPress(application, 50.0f, 10.0f); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); // Move actor in to the long press position. - actor.SetPosition( 0.0f, 0.0f ); + actor.SetProperty(Actor::Property::POSITION, Vector2(0.0f, 0.0f)); // Render and notify application.SendNotification(); application.Render(); - // Emit Started event, we should not receive the long press. - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(50.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(50.0f, 10.0f))); + // Emit STARTED event, we should not receive the long press. + TestTriggerLongPress(application); + TestEndLongPress(application, 50.0f, 10.0f); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); // Normal long press in actor's area for completeness. - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(50.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(50.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(50.0f, 10.0f))); + TestGenerateLongPress(application, 50.0f, 10.0f); + TestEndLongPress(application, 50.0f, 10.0f); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); END_TEST; } -int UtcDaliLongPressGestureEmitIncorrectStateClear(void) -{ - TestApplication application; - - Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(actor); - - // Render and notify - application.SendNotification(); - application.Render(); - - // Attach actor to detector - SignalData data; - GestureReceivedFunctor functor( data ); - LongPressGestureDetector detector = LongPressGestureDetector::New(); - detector.Attach(actor); - detector.DetectedSignal().Connect( &application, functor ); - - // Try a Clear state - try - { - application.ProcessEvent(GenerateLongPress(Gesture::Clear, 1u, Vector2(50.0f, 10.0f))); - tet_result(TET_FAIL); - } - catch ( Dali::DaliException& e ) - { - DALI_TEST_ASSERT( e, "false", TEST_LOCATION ); - } - END_TEST; -} - -int UtcDaliLongPressGestureEmitIncorrectStateContinuing(void) -{ - TestApplication application; - - Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(actor); - - // Render and notify - application.SendNotification(); - application.Render(); - - // Attach actor to detector - SignalData data; - GestureReceivedFunctor functor( data ); - LongPressGestureDetector detector = LongPressGestureDetector::New(); - detector.Attach(actor); - detector.DetectedSignal().Connect( &application, functor ); - - // Try a Continuing state - try - { - application.ProcessEvent(GenerateLongPress(Gesture::Continuing, 1u, Vector2(50.0f, 10.0f))); - tet_result(TET_FAIL); - } - catch ( Dali::DaliException& e ) - { - DALI_TEST_ASSERT( e, "false", TEST_LOCATION ); - } - END_TEST; -} - -int UtcDaliLongPressGestureRepeatedState(void) -{ - TestApplication application; - - Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(actor); - - // Render and notify - application.SendNotification(); - application.Render(); - - // Attach actor to detector - SignalData data; - GestureReceivedFunctor functor( data ); - LongPressGestureDetector detector = LongPressGestureDetector::New(); - detector.Attach(actor); - detector.DetectedSignal().Connect( &application, functor ); - - // Two possibles - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(50.0f, 10.0f))); - DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(50.0f, 10.0f))); - DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); - - // ... Send some finished states, still no signal - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(50.0f, 10.0f))); - DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(50.0f, 10.0f))); - DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); - - // Send two Started states, should be signalled - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(50.0f, 10.0f))); - DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(50.0f, 10.0f))); - DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - data.Reset(); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(50.0f, 10.0f))); - DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - data.Reset(); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(50.0f, 10.0f))); - DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - data.Reset(); - - // Send two cancelled states, should not be signalled - application.ProcessEvent(GenerateLongPress(Gesture::Cancelled, 1u, Vector2(50.0f, 10.0f))); - DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); - application.ProcessEvent(GenerateLongPress(Gesture::Cancelled, 1u, Vector2(50.0f, 10.0f))); - DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); - END_TEST; -} - int UtcDaliLongPressGesturePossibleCancelled(void) { TestApplication application; Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(actor); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(actor); // Render and notify application.SendNotification(); application.Render(); // Attach actor to detector - SignalData data; - GestureReceivedFunctor functor( data ); + SignalData data; + GestureReceivedFunctor functor(data); LongPressGestureDetector detector = LongPressGestureDetector::New(); detector.Attach(actor); - detector.DetectedSignal().Connect( &application, functor ); + detector.DetectedSignal().Connect(&application, functor); // Send a possible followed by a cancel, we should not be signalled - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(50.0f, 10.0f))); + TestStartLongPress(application, 50.0f, 10.0f); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); - application.ProcessEvent(GenerateLongPress(Gesture::Cancelled, 1u, Vector2(50.0f, 10.0f))); + TestMovePan(application, Vector2(50.0f, 10.0f)); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; } @@ -1093,32 +748,31 @@ int UtcDaliLongPressGestureDetachAfterStarted(void) TestApplication application; Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(actor); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(actor); // Render and notify application.SendNotification(); application.Render(); // Attach actor to detector - SignalData data; - GestureReceivedFunctor functor( data ); + SignalData data; + GestureReceivedFunctor functor(data); LongPressGestureDetector detector = LongPressGestureDetector::New(); detector.Attach(actor); - detector.DetectedSignal().Connect( &application, functor ); + detector.DetectedSignal().Connect(&application, functor); // Emit initial signal - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(50.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(50.0f, 10.0f))); + TestGenerateLongPress(application, 50.0f, 10.0f); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); // Detach actor detector.Detach(actor); - // Emit Finished, no signal - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(50.0f, 10.0f))); + // Emit FINISHED, no signal + TestEndLongPress(application, 50.0f, 10.0f); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; } @@ -1128,30 +782,29 @@ int UtcDaliLongPressGestureActorUnstaged(void) TestApplication application; Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(actor); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(actor); // Render and notify application.SendNotification(); application.Render(); // State to remove actor in. - Gesture::State stateToUnstage( Gesture::Started ); + GestureState stateToUnstage(GestureState::STARTED); // Attach actor to detector - SignalData data; - UnstageActorFunctor functor( data, stateToUnstage ); + SignalData data; + UnstageActorFunctor functor(data, stateToUnstage, application.GetScene()); LongPressGestureDetector detector = LongPressGestureDetector::New(); detector.Attach(actor); - detector.DetectedSignal().Connect( &application, functor ); + detector.DetectedSignal().Connect(&application, functor); // Emit signals - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(50.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(50.0f, 10.0f))); + TestGenerateLongPress(application, 50.0f, 10.0f); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(50.0f, 10.0f))); + TestEndLongPress(application, 50.0f, 10.0f); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); // Render and notify @@ -1159,23 +812,22 @@ int UtcDaliLongPressGestureActorUnstaged(void) application.Render(); // Re-add actor to stage - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); // Render and notify application.SendNotification(); application.Render(); - // Change state to Gesture::Continuing to remove - stateToUnstage = Gesture::Finished; + // Change state to GestureState::CONTINUING to remove + stateToUnstage = GestureState::FINISHED; // Emit signals - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(50.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(50.0f, 10.0f))); + TestGenerateLongPress(application, 50.0f, 10.0f); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(50.0f, 10.0f))); + TestEndLongPress(application, 50.0f, 10.0f); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - tet_result( TET_PASS ); // If we get here then we have handled actor stage removal gracefully. + tet_result(TET_PASS); // If we get here then we have handled actor stage removal gracefully. END_TEST; } @@ -1184,39 +836,38 @@ int UtcDaliLongPressGestureActorStagedAndDestroyed(void) TestApplication application; Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(actor); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(actor); // Create and add a second actor so that GestureDetector destruction does not come into play. - Actor dummyActor( Actor::New() ); - dummyActor.SetSize( 100.0f, 100.0f ); - dummyActor.SetPosition( 100.0f, 100.0f ); - dummyActor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(dummyActor); + Actor dummyActor(Actor::New()); + dummyActor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + dummyActor.SetProperty(Actor::Property::POSITION, Vector2(100.0f, 100.0f)); + dummyActor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(dummyActor); // Render and notify application.SendNotification(); application.Render(); // State to remove actor in. - Gesture::State stateToUnstage( Gesture::Started ); + GestureState stateToUnstage(GestureState::STARTED); // Attach actor to detector - SignalData data; - UnstageActorFunctor functor( data, stateToUnstage ); + SignalData data; + UnstageActorFunctor functor(data, stateToUnstage, application.GetScene()); LongPressGestureDetector detector = LongPressGestureDetector::New(); detector.Attach(actor); detector.Attach(dummyActor); - detector.DetectedSignal().Connect( &application, functor ); + detector.DetectedSignal().Connect(&application, functor); - // Here we are testing a Started actor which is removed in the Started callback, but then added back + // Here we are testing a STARTED actor which is removed in the STARTED callback, but then added back // before we get a finished state. As we were removed from the stage, even if we're at the same // position, we should still not be signalled. // Emit signals - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(50.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(50.0f, 10.0f))); + TestGenerateLongPress(application, 50.0f, 10.0f); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); @@ -1225,22 +876,21 @@ int UtcDaliLongPressGestureActorStagedAndDestroyed(void) application.Render(); // Re add to the stage, we should not be signalled - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); // Render and notify application.SendNotification(); application.Render(); // Continue signal emission - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(50.0f, 10.0f))); + TestEndLongPress(application, 50.0f, 10.0f); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); // Here we delete an actor in started, we should not receive any subsequent signalling. // Emit signals - application.ProcessEvent(GenerateLongPress(Gesture::Possible, 1u, Vector2(50.0f, 10.0f))); - application.ProcessEvent(GenerateLongPress(Gesture::Started, 1u, Vector2(50.0f, 10.0f))); + TestGenerateLongPress(application, 50.0f, 10.0f); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); @@ -1256,199 +906,178 @@ int UtcDaliLongPressGestureActorStagedAndDestroyed(void) application.Render(); // Continue signal emission - application.ProcessEvent(GenerateLongPress(Gesture::Finished, 1u, Vector2(50.0f, 10.0f))); + TestEndLongPress(application, 50.0f, 10.0f); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; } -int UtcDaliLongPressGestureSystemOverlay(void) +int UtcDaliLongPressGestureLayerConsumesTouch(void) { TestApplication application; - Dali::Integration::Core& core = application.GetCore(); - Dali::Integration::SystemOverlay& systemOverlay( core.GetSystemOverlay() ); - systemOverlay.GetOverlayRenderTasks().CreateTask(); Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - systemOverlay.Add(actor); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(actor); + + // Add a detector + SignalData data; + GestureReceivedFunctor functor(data); + LongPressGestureDetector detector = LongPressGestureDetector::New(); + detector.Attach(actor); + detector.DetectedSignal().Connect(&application, functor); + + // Add a layer to overlap the actor + Layer layer = Layer::New(); + layer.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + layer.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(layer); + layer.RaiseToTop(); // Render and notify application.SendNotification(); application.Render(); - SignalData data; - GestureReceivedFunctor functor(data); + // Emit signals, should receive + TestGenerateLongPress(application, 50.0f, 50.0f); + TestEndLongPress(application, 50.0f, 50.0f); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + data.Reset(); - LongPressGestureDetector detector = LongPressGestureDetector::New(); - detector.Attach(actor); - detector.DetectedSignal().Connect(&application, functor); + // Set layer to consume all touch + layer.SetProperty(Layer::Property::CONSUMES_TOUCH, true); + + // Render and notify + application.SendNotification(); + application.Render(); + + // Emit the same signals again, should not receive + TestGenerateLongPress(application, 50.0f, 50.0f); + TestEndLongPress(application, 50.0f, 50.0f); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); + data.Reset(); - // Do a long press inside actor's area - Vector2 screenCoords( 50.0f, 50.0f ); - application.ProcessEvent( GenerateLongPress( Gesture::Possible, 1u, screenCoords ) ); - application.ProcessEvent( GenerateLongPress( Gesture::Started, 1u, screenCoords ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); END_TEST; } -int UtcDaliLongPressGestureBehindTouchableSystemOverlay(void) +int UtcDaliLongPressGestureSetMinimumHoldingTime(void) { TestApplication application; - Dali::Integration::Core& core = application.GetCore(); - Dali::Integration::SystemOverlay& systemOverlay( core.GetSystemOverlay() ); - systemOverlay.GetOverlayRenderTasks().CreateTask(); - - // SystemOverlay actor - Actor systemOverlayActor = Actor::New(); - systemOverlayActor.SetSize(100.0f, 100.0f); - systemOverlayActor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - systemOverlay.Add(systemOverlayActor); - - // Stage actor - Actor stageActor = Actor::New(); - stageActor.SetSize(100.0f, 100.0f); - stageActor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(stageActor); + + const uint32_t kMinumumHolding1 = 5000; + const uint32_t kMinumumHolding2 = 3000; + + Integration::SetLongPressMinimumHoldingTime(kMinumumHolding1); + + Actor actor = Actor::New(); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(actor); // Render and notify application.SendNotification(); application.Render(); - // Set system-overlay actor to touchable - TouchEventData touchData; - TouchEventDataFunctor touchFunctor( touchData ); - systemOverlayActor.TouchedSignal().Connect(&application, touchFunctor); - - // Set stage actor to receive the gesture - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); LongPressGestureDetector detector = LongPressGestureDetector::New(); - detector.Attach(stageActor); + detector.Attach(actor); detector.DetectedSignal().Connect(&application, functor); - // Start long press within the two actors' area - Vector2 screenCoords( 50.0f, 50.0f ); - application.ProcessEvent( GenerateLongPress( Gesture::Possible, 1u, screenCoords ) ); - application.ProcessEvent( GenerateLongPress( Gesture::Started, 1u, screenCoords ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( false, touchData.functorCalled, TEST_LOCATION ); + DALI_TEST_EQUALS(DevelLongPressGestureDetector::GetMinimumHoldingTime(detector), kMinumumHolding1, TEST_LOCATION); - data.Reset(); - touchData.Reset(); - - // Do touch in the same area - application.ProcessEvent( touchFunctor.GenerateSingleTouch( TouchPoint::Down, screenCoords ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( true, touchData.functorCalled, TEST_LOCATION ); + Integration::SetLongPressMinimumHoldingTime(kMinumumHolding2); + DALI_TEST_EQUALS(DevelLongPressGestureDetector::GetMinimumHoldingTime(detector), kMinumumHolding2, TEST_LOCATION); END_TEST; } -int UtcDaliLongPressGestureTouchBehindGesturedSystemOverlay(void) +int UtcDaliLongPressGestureInterruptedWhenTouchConsumed(void) { TestApplication application; - Dali::Integration::Core& core = application.GetCore(); - Dali::Integration::SystemOverlay& systemOverlay( core.GetSystemOverlay() ); - systemOverlay.GetOverlayRenderTasks().CreateTask(); - - // SystemOverlay actor - Actor systemOverlayActor = Actor::New(); - systemOverlayActor.SetSize(100.0f, 100.0f); - systemOverlayActor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - systemOverlay.Add(systemOverlayActor); - - // Stage actor - Actor stageActor = Actor::New(); - stageActor.SetSize(100.0f, 100.0f); - stageActor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(stageActor); + + Actor actor = Actor::New(); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(actor); + + bool consume = false; + TouchEventFunctorConsumeSetter touchFunctor(consume); + actor.TouchedSignal().Connect(&application, touchFunctor); // Render and notify application.SendNotification(); application.Render(); - // Set stage actor to touchable - TouchEventData touchData; - TouchEventDataFunctor touchFunctor( touchData ); - stageActor.TouchedSignal().Connect(&application, touchFunctor); - - // Set system-overlay actor to have the gesture - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); LongPressGestureDetector detector = LongPressGestureDetector::New(); - detector.Attach(systemOverlayActor); + detector.Attach(actor); detector.DetectedSignal().Connect(&application, functor); - // Start long press within the two actors' area - Vector2 screenCoords( 50.0f, 50.0f ); - application.ProcessEvent( GenerateLongPress( Gesture::Possible, 1u, screenCoords ) ); - application.ProcessEvent( GenerateLongPress( Gesture::Started, 1u, screenCoords ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( false, touchData.functorCalled, TEST_LOCATION ); - + // Start gesture within the actor's area, we should receive the gesture as the touch is NOT being consumed + TestGenerateLongPress(application, 50.0f, 50.0f); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + data.Reset(); + TestEndLongPress(application, 50.0f, 50.0f); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); - touchData.Reset(); - // Do touch in the same area - application.ProcessEvent( touchFunctor.GenerateSingleTouch( TouchPoint::Down, screenCoords ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( true, touchData.functorCalled, TEST_LOCATION ); + // Another gesture in the same location, this time we will not receive it as touch is being consumed + consume = true; + TestGenerateLongPress(application, 50.0f, 50.0f); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); + data.Reset(); + TestEndLongPress(application, 50.0f, 50.0f); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; } -int UtcDaliLongPressGestureLayerConsumesTouch(void) +int UtcDaliLongPressGestureDisableDetectionDuringLongPressN(void) { + // Crash occurred when gesture-recognizer was deleted internally during a signal when the attached actor was detached + TestApplication application; Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(actor); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(actor); // Add a detector - SignalData data; - GestureReceivedFunctor functor(data); - LongPressGestureDetector detector = LongPressGestureDetector::New(); + LongPressGestureDetector detector = LongPressGestureDetector::New(); + bool functorCalled = false; detector.Attach(actor); - detector.DetectedSignal().Connect( &application, functor ); - - // Add a layer to overlap the actor - Layer layer = Layer::New(); - layer.SetSize(100.0f, 100.0f); - layer.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add( layer ); - layer.RaiseToTop(); + detector.DetectedSignal().Connect( + &application, + [&detector, &functorCalled](Actor actor, const LongPressGesture& gesture) { + if(gesture.GetState() == GestureState::FINISHED) + { + detector.Detach(actor); + functorCalled = true; + } + }); // Render and notify application.SendNotification(); application.Render(); - Vector2 screenCoords( 50.0f, 50.0f ); - - // Emit signals, should receive - application.ProcessEvent( GenerateLongPress( Gesture::Possible, 1u, screenCoords ) ); - application.ProcessEvent( GenerateLongPress( Gesture::Started, 1u, screenCoords ) ); - application.ProcessEvent( GenerateLongPress( Gesture::Finished, 1u, screenCoords ) ); - DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - data.Reset(); - - // Set layer to consume all touch - layer.SetTouchConsumed( true ); - - // Render and notify - application.SendNotification(); - application.Render(); + // Try the gesture, should not crash + try + { + TestGenerateLongPress(application, 50.0f, 10.0f); + TestEndLongPress(application, 50.0f, 10.0f); - // Emit the same signals again, should not receive - application.ProcessEvent( GenerateLongPress( Gesture::Possible, 1u, screenCoords ) ); - application.ProcessEvent( GenerateLongPress( Gesture::Started, 1u, screenCoords ) ); - application.ProcessEvent( GenerateLongPress( Gesture::Finished, 1u, screenCoords ) ); - DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); - data.Reset(); + DALI_TEST_CHECK(true); // No crash, test has passed + DALI_TEST_EQUALS(functorCalled, true, TEST_LOCATION); + } + catch(...) + { + DALI_TEST_CHECK(false); // If we crash, the test has failed + } END_TEST; }