X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali%2Futc-Dali-RotationGestureDetector.cpp;h=8c1d92936b039a3eaeda10883d0b46aa5122aa2f;hb=a3d1c0e03068de2d010009baac4007bec662ee45;hp=353b6f809bcafd913120ca0adf10a8df174d3c1e;hpb=3c430451f050f7617f30ab54e3f6551bc5584df9;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/automated-tests/src/dali/utc-Dali-RotationGestureDetector.cpp b/automated-tests/src/dali/utc-Dali-RotationGestureDetector.cpp index 353b6f8..8c1d929 100644 --- a/automated-tests/src/dali/utc-Dali-RotationGestureDetector.cpp +++ b/automated-tests/src/dali/utc-Dali-RotationGestureDetector.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 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,17 +15,15 @@ * */ -#include - -#include -#include +#include +#include #include #include -#include -#include -#include -#include -#include +#include +#include +#include + +#include using namespace Dali; @@ -42,45 +40,45 @@ void utc_dali_rotation_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::Started) - {} + receivedGesture() + { + } void Reset() { - functorCalled = false; + functorCalled = false; voidFunctorCalled = false; - receivedGesture.state = Gesture::Started; - receivedGesture.rotation = 0.0f; - receivedGesture.screenCenterPoint = Vector2(0.0f, 0.0f); - receivedGesture.localCenterPoint = Vector2(0.0f, 0.0f); + receivedGesture.Reset(); rotatedActor.Reset(); } - bool functorCalled; - bool voidFunctorCalled; + bool functorCalled; + bool voidFunctorCalled; RotationGesture receivedGesture; - Actor rotatedActor; + Actor rotatedActor; }; // Functor that sets the data when called struct GestureReceivedFunctor { - GestureReceivedFunctor(SignalData& data) : signalData(data) { } + GestureReceivedFunctor(SignalData& data) + : signalData(data) + { + } void operator()(Actor actor, const RotationGesture& rotation) { - signalData.functorCalled = true; + signalData.functorCalled = true; signalData.receivedGesture = rotation; - signalData.rotatedActor = actor; + signalData.rotatedActor = actor; } void operator()() @@ -94,35 +92,28 @@ 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 RotationGesture& rotation ) + void operator()(Actor actor, const RotationGesture& rotation) { - GestureReceivedFunctor::operator()( actor, rotation ); + GestureReceivedFunctor::operator()(actor, rotation); - if ( rotation.state == stateToUnstage ) + if(rotation.GetState() == stateToUnstage) { - Stage::GetCurrent().Remove( actor ); + scene.Remove(actor); } } - Gesture::State& stateToUnstage; -}; - -// Functor for receiving a touch event -struct TouchEventFunctor -{ - bool operator()(Actor actor, const TouchEvent& touch) - { - return false; - } + GestureState& stateToUnstage; + Integration::Scene scene; }; -} // anon namespace +} // namespace /////////////////////////////////////////////////////////////////////////////// @@ -139,10 +130,10 @@ int UtcDaliRotationGestureDetectorCopyConstructorP(void) { TestApplication application; - RotationGestureDetector detector = RotationGestureDetector::New();; + RotationGestureDetector detector = RotationGestureDetector::New(); - RotationGestureDetector copy( detector ); - DALI_TEST_CHECK( detector ); + RotationGestureDetector copy(detector); + DALI_TEST_CHECK(detector); END_TEST; } @@ -150,13 +141,41 @@ int UtcDaliRotationGestureDetectorAssignmentOperatorP(void) { TestApplication application; - RotationGestureDetector detector = RotationGestureDetector::New();; + RotationGestureDetector detector = RotationGestureDetector::New(); RotationGestureDetector assign; assign = detector; - DALI_TEST_CHECK( detector ); + DALI_TEST_CHECK(detector); + + DALI_TEST_CHECK(detector == assign); + END_TEST; +} + +int UtcDaliRotationGestureDetectorMoveConstructorP(void) +{ + TestApplication application; + + RotationGestureDetector detector = RotationGestureDetector::New(); + DALI_TEST_CHECK(detector); - DALI_TEST_CHECK( detector == assign ); + RotationGestureDetector moved = std::move(detector); + DALI_TEST_CHECK(moved); + DALI_TEST_CHECK(!detector); + END_TEST; +} + +int UtcDaliRotationGestureDetectorMoveAssignmentOperatorP(void) +{ + TestApplication application; + + RotationGestureDetector detector; + detector = RotationGestureDetector::New(); + DALI_TEST_CHECK(detector); + + RotationGestureDetector moved; + moved = std::move(detector); + DALI_TEST_CHECK(moved); + DALI_TEST_CHECK(!detector); END_TEST; } @@ -170,9 +189,9 @@ int UtcDaliRotationGestureDetectorNew(void) // Attach an actor and emit a touch event on the actor to ensure complete line coverage Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,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(); @@ -181,17 +200,17 @@ int UtcDaliRotationGestureDetectorNew(void) detector.Attach(actor); Integration::TouchEvent touchEvent(1); - Integration::Point point; - point.SetDeviceId( 1 ); - point.SetState( PointState::DOWN ); - point.SetScreenPosition( Vector2( 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); Integration::Point point2; - point.SetDeviceId( 1 ); - point.SetState( PointState::DOWN ); - point.SetScreenPosition( Vector2( 20.0f, 20.0f ) ); + point.SetDeviceId(1); + point.SetState(PointState::DOWN); + point.SetScreenPosition(Vector2(20.0f, 20.0f)); touchEvent.AddPoint(point2); application.ProcessEvent(touchEvent); END_TEST; @@ -209,17 +228,17 @@ int UtcDaliRotationGestureDetectorDownCast(void) RotationGestureDetector detector2 = RotationGestureDetector::DownCast(object); DALI_TEST_CHECK(detector2); - RotationGestureDetector detector3 = DownCast< RotationGestureDetector >(object); + RotationGestureDetector detector3 = DownCast(object); DALI_TEST_CHECK(detector3); - BaseHandle unInitializedObject; + BaseHandle unInitializedObject; RotationGestureDetector detector4 = RotationGestureDetector::DownCast(unInitializedObject); DALI_TEST_CHECK(!detector4); - RotationGestureDetector detector5 = DownCast< RotationGestureDetector >(unInitializedObject); + RotationGestureDetector detector5 = DownCast(unInitializedObject); DALI_TEST_CHECK(!detector5); - GestureDetector detector6 = RotationGestureDetector::New(); + GestureDetector detector6 = RotationGestureDetector::New(); RotationGestureDetector detector7 = RotationGestureDetector::DownCast(detector6); DALI_TEST_CHECK(detector7); END_TEST; @@ -231,15 +250,15 @@ int UtcDaliRotationGestureSignalReceptionNegative(void) TestApplication application; Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,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); RotationGestureDetector detector = RotationGestureDetector::New(); @@ -247,22 +266,19 @@ int UtcDaliRotationGestureSignalReceptionNegative(void) detector.DetectedSignal().Connect(&application, functor); // Do a rotation outside actor's area - TestStartRotation( application, Vector2( 112.0f, 62.0f ), Vector2( 112.0f, 162.0f ), - Vector2( 112.0f, 100.0f ), Vector2( 112.0f, 124.0f ), 100 ); + TestStartRotation(application, Vector2(112.0f, 62.0f), Vector2(112.0f, 162.0f), Vector2(112.0f, 100.0f), Vector2(112.0f, 124.0f), 100); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); // Continue rotation into actor's area - we should still not receive the signal data.Reset(); - TestContinueRotation( application, Vector2( 112.0f, 100.0f ), Vector2( 112.0f, 124.0f ), - Vector2( 5.0f, 5.0f ), Vector2( 35.0f, 35.0f ), 200 ); + TestContinueRotation(application, Vector2(112.0f, 100.0f), Vector2(112.0f, 124.0f), Vector2(5.0f, 5.0f), Vector2(35.0f, 35.0f), 200); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); // Stop rotating - we should still not receive the signal data.Reset(); - TestEndRotation( application, Vector2( 6.0f, 6.0f ), Vector2( 18.0f, 18.0f ), - Vector2( 10.0f, 8.0f ), Vector2( 14.0f, 16.0f ), 300 ); + TestEndRotation(application, Vector2(6.0f, 6.0f), Vector2(18.0f, 18.0f), Vector2(10.0f, 8.0f), Vector2(14.0f, 16.0f), 300); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; @@ -273,55 +289,55 @@ int UtcDaliRotationGestureSignalReceptionDownMotionLeave(void) TestApplication application; Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,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); RotationGestureDetector detector = RotationGestureDetector::New(); detector.Attach(actor); detector.DetectedSignal().Connect(&application, functor); - // Start pan within the actor's area - TestStartRotation( application, Vector2( 5.0f, 5.0f ), Vector2( 20.0f, 20.0f ), - Vector2( 5.0f, 5.0f ), Vector2( 20.0f, 30.0f ), 100 ); + // Start rotation within the actor's area + TestStartRotation(application, Vector2(5.0f, 5.0f), Vector2(20.0f, 20.0f), Vector2(5.0f, 5.0f), Vector2(20.0f, 30.0f), 100); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(Gesture::Started, data.receivedGesture.state, TEST_LOCATION); - DALI_TEST_EQUALS(0.244f, data.receivedGesture.rotation.radian, 0.01f, TEST_LOCATION); - DALI_TEST_EQUALS(Vector2(12.5f, 17.5f), data.receivedGesture.screenCenterPoint, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(GestureState::STARTED, data.receivedGesture.GetState(), TEST_LOCATION); + DALI_TEST_EQUALS(0.244f, data.receivedGesture.GetRotation().radian, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(12.5f, 17.5f), data.receivedGesture.GetScreenCenterPoint(), 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(12.48f, 17.5f), data.receivedGesture.GetLocalCenterPoint(), 0.01f, TEST_LOCATION); - // Continue the pan within the actor's area - we should still receive the signal + // Continue the rotation within the actor's area - we should still receive the signal data.Reset(); - TestContinueRotation( application, Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), - Vector2( 17.0f, 20.0f ), Vector2( 25.0f, 20.0f ), 400 ); + TestContinueRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(17.0f, 20.0f), Vector2(25.0f, 20.0f), 400); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(Gesture::Continuing, data.receivedGesture.state, TEST_LOCATION); - DALI_TEST_EQUALS(-0.785398f, data.receivedGesture.rotation.radian, 0.01f, TEST_LOCATION); - DALI_TEST_EQUALS(Vector2(21.0f, 20.0f), data.receivedGesture.screenCenterPoint, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(GestureState::CONTINUING, data.receivedGesture.GetState(), TEST_LOCATION); + DALI_TEST_EQUALS(-0.785398f, data.receivedGesture.GetRotation().radian, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(21.0f, 20.0f), data.receivedGesture.GetScreenCenterPoint(), 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(21.0f, 20.0f), data.receivedGesture.GetLocalCenterPoint(), 0.01f, TEST_LOCATION); - // Pan Gesture leaves actor's area - we should still receive the signal + // Rotation Gesture leaves actor's area - we should still receive the signal data.Reset(); - TestContinueRotation( application, Vector2( 17.0f, 20.0f ), Vector2( 25.0f, 20.0f ), - Vector2( 300.0f, 10.0f ), Vector2( 340.0f, 10.0f ), 1000 ); + TestContinueRotation(application, Vector2(17.0f, 20.0f), Vector2(25.0f, 20.0f), Vector2(300.0f, 10.0f), Vector2(340.0f, 10.0f), 1000); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(Gesture::Continuing, data.receivedGesture.state, TEST_LOCATION); - DALI_TEST_EQUALS(-0.785398f, data.receivedGesture.rotation.radian, 0.01f, TEST_LOCATION); - DALI_TEST_EQUALS(Vector2(320.0f, 10.0f), data.receivedGesture.screenCenterPoint, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(GestureState::CONTINUING, data.receivedGesture.GetState(), TEST_LOCATION); + DALI_TEST_EQUALS(-0.785398f, data.receivedGesture.GetRotation().radian, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(320.0f, 10.0f), data.receivedGesture.GetScreenCenterPoint(), 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(320.0f, 10.0f), data.receivedGesture.GetLocalCenterPoint(), 0.01f, TEST_LOCATION); // Gesture ends - we would receive a finished state data.Reset(); - TestEndRotation( application, Vector2( 300.0f, 10.0f ), Vector2( 340.0f, 10.0f ), - Vector2( 305.0f, 10.0f ), Vector2( 315.0f, 10.0f ), 1500); + TestEndRotation(application, Vector2(300.0f, 10.0f), Vector2(340.0f, 10.0f), Vector2(305.0f, 10.0f), Vector2(315.0f, 10.0f), 1500); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(Gesture::Finished, data.receivedGesture.state, TEST_LOCATION); - DALI_TEST_EQUALS(-0.785398f, data.receivedGesture.rotation.radian, 0.01f, TEST_LOCATION); - DALI_TEST_EQUALS(Vector2(310.0f, 10.0f), data.receivedGesture.screenCenterPoint, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(GestureState::FINISHED, data.receivedGesture.GetState(), TEST_LOCATION); + DALI_TEST_EQUALS(-0.785398f, data.receivedGesture.GetRotation().radian, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(310.0f, 10.0f), data.receivedGesture.GetScreenCenterPoint(), 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(310.0f, 10.0f), data.receivedGesture.GetLocalCenterPoint(), 0.01f, TEST_LOCATION); END_TEST; } @@ -330,15 +346,15 @@ int UtcDaliRotationGestureSignalReceptionDownMotionUp(void) TestApplication application; Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,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); RotationGestureDetector detector = RotationGestureDetector::New(); @@ -346,30 +362,30 @@ int UtcDaliRotationGestureSignalReceptionDownMotionUp(void) detector.DetectedSignal().Connect(&application, functor); // Start rotation within the actor's area - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 31.0f, 29.0f ), 100 ); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(31.0f, 29.0f), 100); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(Gesture::Started, data.receivedGesture.state, TEST_LOCATION); - DALI_TEST_EQUALS(0.404892f, data.receivedGesture.rotation.radian, 0.01f, TEST_LOCATION); - DALI_TEST_EQUALS(Vector2(20.5f, 24.5f), data.receivedGesture.screenCenterPoint, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(GestureState::STARTED, data.receivedGesture.GetState(), TEST_LOCATION); + DALI_TEST_EQUALS(0.404892f, data.receivedGesture.GetRotation().radian, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(20.5f, 24.5f), data.receivedGesture.GetScreenCenterPoint(), 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(20.5f, 24.5f), data.receivedGesture.GetLocalCenterPoint(), 0.01f, TEST_LOCATION); // Continue the rotation within the actor's area - we should still receive the signal data.Reset(); - TestContinueRotation( application, Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), - Vector2( 15.0f, 20.0f ), Vector2( 29.0f, 15.0f ), 500 ); + TestContinueRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(15.0f, 20.0f), Vector2(29.0f, 15.0f), 500); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(Gesture::Continuing, data.receivedGesture.state, TEST_LOCATION); - DALI_TEST_EQUALS(-0.343024f, data.receivedGesture.rotation.radian, 0.01f, TEST_LOCATION); - DALI_TEST_EQUALS(Vector2(22.0f, 17.5f), data.receivedGesture.screenCenterPoint, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(GestureState::CONTINUING, data.receivedGesture.GetState(), TEST_LOCATION); + DALI_TEST_EQUALS(-0.343024f, data.receivedGesture.GetRotation().radian, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(22.0f, 17.5f), data.receivedGesture.GetScreenCenterPoint(), 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(22.0f, 17.5f), data.receivedGesture.GetLocalCenterPoint(), 0.01f, TEST_LOCATION); // Gesture ends within actor's area - we would receive a finished state data.Reset(); - TestEndRotation( application, Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), - Vector2( 19.0f, 20.0f ), Vector2( 29.0f, 15.0f ), 1000); + TestEndRotation(application, Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), Vector2(19.0f, 20.0f), Vector2(29.0f, 15.0f), 1000); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(Gesture::Finished, data.receivedGesture.state, TEST_LOCATION); - DALI_TEST_EQUALS(-0.463648f, data.receivedGesture.rotation.radian, 0.01f, TEST_LOCATION); - DALI_TEST_EQUALS(Vector2(24.0f, 17.5f), data.receivedGesture.screenCenterPoint, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(GestureState::FINISHED, data.receivedGesture.GetState(), TEST_LOCATION); + DALI_TEST_EQUALS(-0.463648f, data.receivedGesture.GetRotation().radian, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(24.0f, 17.5f), data.receivedGesture.GetScreenCenterPoint(), 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(24.0f, 17.5f), data.receivedGesture.GetLocalCenterPoint(), 0.01f, TEST_LOCATION); END_TEST; } @@ -378,15 +394,15 @@ int UtcDaliRotationGestureSignalReceptionDetach(void) TestApplication application; Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,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); RotationGestureDetector detector = RotationGestureDetector::New(); @@ -394,32 +410,28 @@ int UtcDaliRotationGestureSignalReceptionDetach(void) detector.DetectedSignal().Connect(&application, functor); // Start rotation within the actor's area - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 100 ); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 100); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(Gesture::Started, data.receivedGesture.state, TEST_LOCATION); - + DALI_TEST_EQUALS(GestureState::STARTED, data.receivedGesture.GetState(), TEST_LOCATION); // Continue the rotation within the actor's area - we should still receive the signal data.Reset(); - TestContinueRotation( application, Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), - Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), 500 ); + TestContinueRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), 500); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(Gesture::Continuing, data.receivedGesture.state, TEST_LOCATION); + DALI_TEST_EQUALS(GestureState::CONTINUING, data.receivedGesture.GetState(), TEST_LOCATION); // Gesture ends within actor's area data.Reset(); - TestEndRotation( application, Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), - Vector2( 19.0f, 20.0f ), Vector2( 21.0f, 20.0f ), 1000); + TestEndRotation(application, Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), Vector2(19.0f, 20.0f), Vector2(21.0f, 20.0f), 1000); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(Gesture::Finished, data.receivedGesture.state, TEST_LOCATION); + DALI_TEST_EQUALS(GestureState::FINISHED, data.receivedGesture.GetState(), TEST_LOCATION); // Detach actor detector.DetachAll(); // Ensure we are no longer signalled data.Reset(); - TestGenerateRotation( application ); + TestGenerateRotation(application); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; } @@ -429,15 +441,15 @@ int UtcDaliRotationGestureSignalReceptionDetachWhileRotationing(void) TestApplication application; Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,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); RotationGestureDetector detector = RotationGestureDetector::New(); @@ -445,25 +457,22 @@ int UtcDaliRotationGestureSignalReceptionDetachWhileRotationing(void) detector.DetectedSignal().Connect(&application, functor); // Start rotation within the actor's area - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 100 ); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 100); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(Gesture::Started, data.receivedGesture.state, TEST_LOCATION); + DALI_TEST_EQUALS(GestureState::STARTED, data.receivedGesture.GetState(), TEST_LOCATION); // Continue the rotation within the actor's area - we should still receive the signal data.Reset(); - TestContinueRotation( application, Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), - Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), 500 ); + TestContinueRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), 500); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(Gesture::Continuing, data.receivedGesture.state, TEST_LOCATION); + DALI_TEST_EQUALS(GestureState::CONTINUING, data.receivedGesture.GetState(), TEST_LOCATION); // Detach actor during the rotation, we should not receive the next event detector.DetachAll(); // Gesture ends within actor's area data.Reset(); - TestEndRotation( application, Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), - Vector2( 19.0f, 20.0f ), Vector2( 21.0f, 20.0f ), 1000); + TestEndRotation(application, Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), Vector2(19.0f, 20.0f), Vector2(21.0f, 20.0f), 1000); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; } @@ -472,7 +481,7 @@ int UtcDaliRotationGestureSignalReceptionActorDestroyedWhileRotationing(void) { TestApplication application; - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); RotationGestureDetector detector = RotationGestureDetector::New(); @@ -481,17 +490,17 @@ int UtcDaliRotationGestureSignalReceptionActorDestroyedWhileRotationing(void) // Attach a temporary actor to stop detector being removed from RotationGestureProcessor when main actor // is destroyed. Actor tempActor = Actor::New(); - tempActor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - tempActor.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::BOTTOM_RIGHT); - Stage::GetCurrent().Add(tempActor); + tempActor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + tempActor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::BOTTOM_RIGHT); + application.GetScene().Add(tempActor); detector.Attach(tempActor); // Actor lifetime is scoped { Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,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(); @@ -500,20 +509,18 @@ int UtcDaliRotationGestureSignalReceptionActorDestroyedWhileRotationing(void) detector.Attach(actor); // Start rotation within the actor's area - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 100 ); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 100); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(Gesture::Started, data.receivedGesture.state, TEST_LOCATION); + DALI_TEST_EQUALS(GestureState::STARTED, data.receivedGesture.GetState(), TEST_LOCATION); // Continue the rotation within the actor's area - we should still receive the signal data.Reset(); - TestContinueRotation( application, Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), - Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), 500 ); + TestContinueRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), 500); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(Gesture::Continuing, data.receivedGesture.state, TEST_LOCATION); + DALI_TEST_EQUALS(GestureState::CONTINUING, data.receivedGesture.GetState(), TEST_LOCATION); // Remove the actor from stage and reset the data - Stage::GetCurrent().Remove(actor); + application.GetScene().Remove(actor); // Render and notify application.SendNotification(); @@ -524,8 +531,7 @@ int UtcDaliRotationGestureSignalReceptionActorDestroyedWhileRotationing(void) // Gesture ends within the area where the actor used to be data.Reset(); - TestEndRotation( application, Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), - Vector2( 19.0f, 20.0f ), Vector2( 21.0f, 20.0f ), 1000); + TestEndRotation(application, Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), Vector2(19.0f, 20.0f), Vector2(21.0f, 20.0f), 1000); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; } @@ -535,15 +541,15 @@ int UtcDaliRotationGestureSignalReceptionRotatedActor(void) TestApplication application; Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ORIENTATION, Quaternion(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 a couple of times application.SendNotification(); application.Render(); - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); RotationGestureDetector detector = RotationGestureDetector::New(); @@ -551,44 +557,41 @@ int UtcDaliRotationGestureSignalReceptionRotatedActor(void) detector.DetectedSignal().Connect(&application, functor); // Do an entire rotation, only check finished value - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 100 ); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 100); data.Reset(); - TestEndRotation( application, Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), - Vector2( 19.0f, 20.0f ), Vector2( 27.0f, 15.0f ), 1000); + TestEndRotation(application, Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), Vector2(19.0f, 20.0f), Vector2(27.0f, 15.0f), 1000); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(-0.558599f, data.receivedGesture.rotation.radian, 0.01f, TEST_LOCATION); - DALI_TEST_EQUALS(Vector2(23.0f, 17.5f), data.receivedGesture.screenCenterPoint, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(-0.558599f, data.receivedGesture.GetRotation().radian, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(23.0f, 17.5f), data.receivedGesture.GetScreenCenterPoint(), 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(67.5f, 27.0f), data.receivedGesture.GetLocalCenterPoint(), 0.01f, TEST_LOCATION); // Rotate actor again and render and notify - actor.SetProperty( Actor::Property::ORIENTATION, Quaternion(Dali::Degree(180.0f), Vector3::ZAXIS) ); + actor.SetProperty(Actor::Property::ORIENTATION, Quaternion(Dali::Degree(180.0f), Vector3::ZAXIS)); application.SendNotification(); application.Render(); // Do an entire rotation, only check finished value - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 2100 ); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 2100); data.Reset(); - TestEndRotation( application, Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), - Vector2( 19.0f, 20.0f ), Vector2( 27.0f, 15.0f ), 3000); + TestEndRotation(application, Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), Vector2(19.0f, 20.0f), Vector2(27.0f, 15.0f), 3000); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(-0.558599f, data.receivedGesture.rotation.radian, 0.01f, TEST_LOCATION); - DALI_TEST_EQUALS(Vector2(23.0f, 17.5f), data.receivedGesture.screenCenterPoint, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(-0.558599f, data.receivedGesture.GetRotation().radian, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(23.0f, 17.5f), data.receivedGesture.GetScreenCenterPoint(), 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(27.0f, 32.5f), data.receivedGesture.GetLocalCenterPoint(), 0.01f, TEST_LOCATION); // Rotate actor again and render and notify - actor.SetProperty( Actor::Property::ORIENTATION, Quaternion(Dali::Degree(270.0f), Vector3::ZAXIS) ); + actor.SetProperty(Actor::Property::ORIENTATION, Quaternion(Dali::Degree(270.0f), Vector3::ZAXIS)); application.SendNotification(); application.Render(); // Do an entire rotation, only check finished value - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 4100 ); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 4100); data.Reset(); - TestEndRotation( application, Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), - Vector2( 19.0f, 20.0f ), Vector2( 27.0f, 15.0f ), 5000); + TestEndRotation(application, Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), Vector2(19.0f, 20.0f), Vector2(27.0f, 15.0f), 5000); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - DALI_TEST_EQUALS(-0.558599f, data.receivedGesture.rotation.radian, 0.01f, TEST_LOCATION); - DALI_TEST_EQUALS(Vector2(23.0f, 17.5f), data.receivedGesture.screenCenterPoint, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(-0.558599f, data.receivedGesture.GetRotation().radian, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(23.0f, 17.5f), data.receivedGesture.GetScreenCenterPoint(), 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(32.5f, 73.0f), data.receivedGesture.GetLocalCenterPoint(), 0.01f, TEST_LOCATION); END_TEST; } @@ -597,28 +600,25 @@ int UtcDaliRotationGestureSignalReceptionChildHit(void) TestApplication application; Actor parent = Actor::New(); - parent.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - parent.SetProperty( Actor::Property::ANCHOR_POINT,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.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) ); + 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); RotationGestureDetector detector = RotationGestureDetector::New(); @@ -626,15 +626,14 @@ int UtcDaliRotationGestureSignalReceptionChildHit(void) detector.DetectedSignal().Connect(&application, functor); // Do an entire pan, only check finished value - hits child area but parent should still receive it - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 100 ); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 100); data.Reset(); - TestEndRotation( application, Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), - Vector2( 19.0f, 20.0f ), Vector2( 29.0f, 25.0f ), 1000); + TestEndRotation(application, Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), Vector2(19.0f, 20.0f), Vector2(29.0f, 25.0f), 1000); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); DALI_TEST_EQUALS(true, parent == data.rotatedActor, TEST_LOCATION); - DALI_TEST_EQUALS(0.463648f, data.receivedGesture.rotation.radian, 0.01f, TEST_LOCATION); - DALI_TEST_EQUALS(Vector2(24.0f, 22.5f), data.receivedGesture.screenCenterPoint, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(0.463648f, data.receivedGesture.GetRotation().radian, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(24.0f, 22.5f), data.receivedGesture.GetScreenCenterPoint(), 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(24.0f, 22.5f), data.receivedGesture.GetLocalCenterPoint(), 0.01f, TEST_LOCATION); // Attach child and generate same touch points to yield same results // (Also proves that you can detach and then re-attach another actor) @@ -642,15 +641,14 @@ int UtcDaliRotationGestureSignalReceptionChildHit(void) detector.Detach(parent); // Do an entire pan, only check finished value - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 2100 ); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 2100); data.Reset(); - TestEndRotation( application, Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), - Vector2( 19.0f, 20.0f ), Vector2( 29.0f, 35.0f ), 3000); + TestEndRotation(application, Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), Vector2(19.0f, 20.0f), Vector2(29.0f, 35.0f), 3000); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); DALI_TEST_EQUALS(true, child == data.rotatedActor, TEST_LOCATION); - DALI_TEST_EQUALS(0.982794f, data.receivedGesture.rotation.radian, 0.01f, TEST_LOCATION); - DALI_TEST_EQUALS(Vector2(24.0f, 27.5f), data.receivedGesture.screenCenterPoint, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(0.982794f, data.receivedGesture.GetRotation().radian, 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(24.0f, 27.5f), data.receivedGesture.GetScreenCenterPoint(), 0.01f, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2(27.5f, 76.0f), data.receivedGesture.GetLocalCenterPoint(), 0.01f, TEST_LOCATION); END_TEST; } @@ -659,21 +657,21 @@ int UtcDaliRotationGestureSignalReceptionAttachDetachMany(void) TestApplication application; Actor first = Actor::New(); - first.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - first.SetProperty( Actor::Property::ANCHOR_POINT,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.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); - 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); RotationGestureDetector detector = RotationGestureDetector::New(); @@ -682,15 +680,13 @@ int UtcDaliRotationGestureSignalReceptionAttachDetachMany(void) detector.DetectedSignal().Connect(&application, functor); // Start rotation within second actor's area - TestStartRotation( application, Vector2( 102.0f, 20.0f ), Vector2( 138.0f, 20.0f ), - Vector2( 110.0f, 20.0f ), Vector2( 130.0f, 20.0f ), 100 ); + TestStartRotation(application, Vector2(102.0f, 20.0f), Vector2(138.0f, 20.0f), Vector2(110.0f, 20.0f), Vector2(130.0f, 20.0f), 100); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); DALI_TEST_EQUALS(true, second == data.rotatedActor, TEST_LOCATION); // Rotation moves into first actor's area - second actor should receive the rotation data.Reset(); - TestContinueRotation( application, Vector2( 110.0f, 20.0f ), Vector2( 130.0f, 20.0f ), - Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), 500 ); + TestContinueRotation(application, Vector2(110.0f, 20.0f), Vector2(130.0f, 20.0f), Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), 500); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); DALI_TEST_EQUALS(true, second == data.rotatedActor, TEST_LOCATION); @@ -699,8 +695,7 @@ int UtcDaliRotationGestureSignalReceptionAttachDetachMany(void) // Gesture ends within actor's area data.Reset(); - TestEndRotation( application, Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), - Vector2( 119.0f, 20.0f ), Vector2( 121.0f, 20.0f ), 3000); + TestEndRotation(application, Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), Vector2(119.0f, 20.0f), Vector2(121.0f, 20.0f), 3000); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; } @@ -710,15 +705,15 @@ int UtcDaliRotationGestureSignalReceptionActorBecomesUntouchable(void) TestApplication application; Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,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); RotationGestureDetector detector = RotationGestureDetector::New(); @@ -726,18 +721,16 @@ int UtcDaliRotationGestureSignalReceptionActorBecomesUntouchable(void) detector.DetectedSignal().Connect(&application, functor); // Start rotation in actor's area - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 100 ); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 100); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); - // Pan continues within actor's area + // Rotation continues within actor's area data.Reset(); - TestContinueRotation( application, Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), - Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), 500 ); + TestContinueRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), 500); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); // Actor become invisible - actor should not receive the next rotation - actor.SetProperty( Actor::Property::VISIBLE,false); + actor.SetProperty(Actor::Property::VISIBLE, false); // Render and notify application.SendNotification(); @@ -745,8 +738,7 @@ int UtcDaliRotationGestureSignalReceptionActorBecomesUntouchable(void) // Gesture ends within actor's area data.Reset(); - TestEndRotation( application, Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), - Vector2( 19.0f, 20.0f ), Vector2( 21.0f, 20.0f ), 3000); + TestEndRotation(application, Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), Vector2(19.0f, 20.0f), Vector2(21.0f, 20.0f), 3000); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; } @@ -756,29 +748,29 @@ int UtcDaliRotationGestureSignalReceptionMultipleDetectorsOnActor(void) TestApplication application; Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,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); Actor actor2 = Actor::New(); - actor2.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor2.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::BOTTOM_RIGHT); - Stage::GetCurrent().Add(actor2); + actor2.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor2.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::BOTTOM_RIGHT); + application.GetScene().Add(actor2); // Render and notify application.SendNotification(); application.Render(); // Attach actor to one detector - SignalData firstData; - GestureReceivedFunctor firstFunctor(firstData); + SignalData firstData; + GestureReceivedFunctor firstFunctor(firstData); RotationGestureDetector firstDetector = RotationGestureDetector::New(); firstDetector.Attach(actor); firstDetector.DetectedSignal().Connect(&application, firstFunctor); // Attach actor to another detector - SignalData secondData; - GestureReceivedFunctor secondFunctor(secondData); + SignalData secondData; + GestureReceivedFunctor secondFunctor(secondData); RotationGestureDetector secondDetector = RotationGestureDetector::New(); secondDetector.Attach(actor); secondDetector.DetectedSignal().Connect(&application, secondFunctor); @@ -789,16 +781,14 @@ int UtcDaliRotationGestureSignalReceptionMultipleDetectorsOnActor(void) secondDetector.Attach(actor2); // Rotation in actor's area - both detector's functors should be called - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 100 ); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 100); DALI_TEST_EQUALS(true, firstData.functorCalled, TEST_LOCATION); DALI_TEST_EQUALS(true, secondData.functorCalled, TEST_LOCATION); // Rotation continues in actor's area - both detector's functors should be called firstData.Reset(); secondData.Reset(); - TestContinueRotation( application, Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), - Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), 500 ); + TestContinueRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), 500); DALI_TEST_EQUALS(true, firstData.functorCalled, TEST_LOCATION); DALI_TEST_EQUALS(true, secondData.functorCalled, TEST_LOCATION); @@ -806,16 +796,14 @@ int UtcDaliRotationGestureSignalReceptionMultipleDetectorsOnActor(void) firstDetector.Detach(actor); firstData.Reset(); secondData.Reset(); - TestEndRotation( application, Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), - Vector2( 19.0f, 20.0f ), Vector2( 21.0f, 20.0f ), 1000); + TestEndRotation(application, Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), Vector2(19.0f, 20.0f), Vector2(21.0f, 20.0f), 1000); DALI_TEST_EQUALS(false, firstData.functorCalled, TEST_LOCATION); DALI_TEST_EQUALS(true, secondData.functorCalled, TEST_LOCATION); // New rotation on actor, only secondDetector has actor attached firstData.Reset(); secondData.Reset(); - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 1500 ); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 1500); DALI_TEST_EQUALS(false, firstData.functorCalled, TEST_LOCATION); DALI_TEST_EQUALS(true, secondData.functorCalled, TEST_LOCATION); @@ -823,8 +811,7 @@ int UtcDaliRotationGestureSignalReceptionMultipleDetectorsOnActor(void) secondDetector.Detach(actor); firstData.Reset(); secondData.Reset(); - TestContinueRotation( application, Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), - Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), 2000 ); + TestContinueRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), 2000); DALI_TEST_EQUALS(false, firstData.functorCalled, TEST_LOCATION); DALI_TEST_EQUALS(false, secondData.functorCalled, TEST_LOCATION); END_TEST; @@ -835,22 +822,22 @@ int UtcDaliRotationGestureSignalReceptionEnsureCorrectSignalling(void) TestApplication application; Actor actor1 = Actor::New(); - actor1.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor1.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(actor1); - SignalData data1; - GestureReceivedFunctor functor1(data1); + actor1.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor1.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(actor1); + SignalData data1; + GestureReceivedFunctor functor1(data1); RotationGestureDetector detector1 = RotationGestureDetector::New(); detector1.Attach(actor1); detector1.DetectedSignal().Connect(&application, functor1); Actor actor2 = Actor::New(); - actor2.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor2.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::BOTTOM_RIGHT); - actor2.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::BOTTOM_RIGHT); - Stage::GetCurrent().Add(actor2); - SignalData data2; - GestureReceivedFunctor functor2(data2); + actor2.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor2.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::BOTTOM_RIGHT); + actor2.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::BOTTOM_RIGHT); + application.GetScene().Add(actor2); + SignalData data2; + GestureReceivedFunctor functor2(data2); RotationGestureDetector detector2 = RotationGestureDetector::New(); detector2.Attach(actor2); detector2.DetectedSignal().Connect(&application, functor2); @@ -860,8 +847,7 @@ int UtcDaliRotationGestureSignalReceptionEnsureCorrectSignalling(void) application.Render(); // Start pan in actor1's area, only data1 should be set - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 100 ); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 100); DALI_TEST_EQUALS(true, data1.functorCalled, TEST_LOCATION); DALI_TEST_EQUALS(false, data2.functorCalled, TEST_LOCATION); END_TEST; @@ -872,31 +858,29 @@ int UtcDaliRotationGestureActorUnstaged(void) TestApplication application; Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,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()); RotationGestureDetector detector = RotationGestureDetector::New(); detector.Attach(actor); - detector.DetectedSignal().Connect( &application, functor ); + detector.DetectedSignal().Connect(&application, functor); // Emit signals - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 100 ); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 100); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); - TestEndRotation( application, Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), - Vector2( 19.0f, 20.0f ), Vector2( 21.0f, 20.0f ), 1000); + TestEndRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(19.0f, 20.0f), Vector2(21.0f, 20.0f), 1000); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); @@ -905,26 +889,23 @@ int UtcDaliRotationGestureActorUnstaged(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::Continuing; + // Change state to GestureState::CONTINUING to remove + stateToUnstage = GestureState::CONTINUING; // Emit signals - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 100 ); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 100); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); - TestContinueRotation( application, Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), - Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), 500 ); + TestContinueRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), 500); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); - TestEndRotation( application, Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), - Vector2( 19.0f, 20.0f ), Vector2( 21.0f, 20.0f ), 1000); + TestEndRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(19.0f, 20.0f), Vector2(21.0f, 20.0f), 1000); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); @@ -933,28 +914,25 @@ int UtcDaliRotationGestureActorUnstaged(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 - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 100 ); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 100); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); - TestContinueRotation( application, Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), - Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), 500 ); + TestContinueRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), 500); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); - TestEndRotation( application, Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), - Vector2( 19.0f, 20.0f ), Vector2( 21.0f, 20.0f ), 1000); + TestEndRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(19.0f, 20.0f), Vector2(21.0f, 20.0f), 1000); 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; } @@ -963,39 +941,38 @@ int UtcDaliRotationGestureActorStagedAndDestroyed(void) TestApplication application; Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,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.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); - 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()); RotationGestureDetector detector = RotationGestureDetector::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 continuing state. As we were removed from the stage, even if we're at the same // position, we should still not be signalled. // Emit signals - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 100 ); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 100); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); @@ -1004,27 +981,24 @@ int UtcDaliRotationGestureActorStagedAndDestroyed(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 - TestContinueRotation( application, Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), - Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), 500 ); + TestContinueRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), 500); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); - TestEndRotation( application, Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), - Vector2( 19.0f, 20.0f ), Vector2( 21.0f, 20.0f ), 1000); + TestEndRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(19.0f, 20.0f), Vector2(21.0f, 20.0f), 1000); 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 - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 1500 ); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 1500); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); @@ -1040,12 +1014,10 @@ int UtcDaliRotationGestureActorStagedAndDestroyed(void) application.Render(); // Continue signal emission - TestContinueRotation( application, Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), - Vector2( 15.0f, 20.0f ), Vector2( 25.0f, 20.0f ), 2000 ); + TestContinueRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(15.0f, 20.0f), Vector2(25.0f, 20.0f), 2000); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); - TestEndRotation( application, Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), - Vector2( 19.0f, 20.0f ), Vector2( 21.0f, 20.0f ), 3000); + TestEndRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(19.0f, 20.0f), Vector2(21.0f, 20.0f), 3000); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; } @@ -1055,22 +1027,22 @@ int UtcDaliRotationGestureLayerConsumesTouch(void) TestApplication application; Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,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); + SignalData data; + GestureReceivedFunctor functor(data); RotationGestureDetector detector = RotationGestureDetector::New(); detector.Attach(actor); - detector.DetectedSignal().Connect( &application, functor ); + 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); - Stage::GetCurrent().Add( layer ); + 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 @@ -1078,28 +1050,125 @@ int UtcDaliRotationGestureLayerConsumesTouch(void) application.Render(); // Emit signals, should receive - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 100 ); - TestEndRotation( application, Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), - Vector2( 19.0f, 20.0f ), Vector2( 21.0f, 20.0f ), 1000); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 100); + TestEndRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(19.0f, 20.0f), Vector2(21.0f, 20.0f), 1000); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); // Set layer to consume all touch - layer.SetProperty( Layer::Property::CONSUMES_TOUCH, true ); + layer.SetProperty(Layer::Property::CONSUMES_TOUCH, true); // Render and notify application.SendNotification(); application.Render(); // Emit the same signals again, should not receive - TestStartRotation( application, Vector2( 2.0f, 20.0f ), Vector2( 38.0f, 20.0f ), - Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 1500 ); - TestEndRotation( application, Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), - Vector2( 19.0f, 20.0f ), Vector2( 21.0f, 20.0f ), 2000); + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 1500); + TestEndRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(19.0f, 20.0f), Vector2(21.0f, 20.0f), 2000); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); END_TEST; } +int UtcDaliRotationGestureDisableDetectionDuringRotationN(void) +{ + // Crash sometimes occurred when gesture-recognizer was deleted internally during a signal when the attached actor was detached + + TestApplication application; + + 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); + + // Add a detector + RotationGestureDetector detector = RotationGestureDetector::New(); + bool functorCalled = false; + detector.Attach(actor); + detector.DetectedSignal().Connect( + &application, + [&detector, &functorCalled](Actor actor, const RotationGesture& gesture) { + if(gesture.GetState() == GestureState::FINISHED) + { + detector.Detach(actor); + functorCalled = true; + } + }); + + // Render and notify + application.SendNotification(); + application.Render(); + + // Try the gesture, should not crash + try + { + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 100); + TestContinueRotation(application, Vector2(112.0f, 100.0f), Vector2(112.0f, 124.0f), Vector2(5.0f, 5.0f), Vector2(35.0f, 35.0f), 200); + TestEndRotation(application, Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), Vector2(19.0f, 20.0f), Vector2(21.0f, 20.0f), 1000); + + 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; +} + +int UtcDaliRotationGestureWhenGesturePropargation(void) +{ + TestApplication application; + + Actor parentActor = Actor::New(); + parentActor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + parentActor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + + Actor childActor = Actor::New(); + childActor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + childActor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + + parentActor.Add(childActor); + application.GetScene().Add(parentActor); + + // Render and notify + application.SendNotification(); + application.Render(); + + SignalData pData; + GestureReceivedFunctor pFunctor(pData); + + RotationGestureDetector parentDetector = RotationGestureDetector::New(); + parentDetector.Attach(parentActor); + parentDetector.DetectedSignal().Connect(&application, pFunctor); + + SignalData cData; + GestureReceivedFunctor cFunctor(cData); + + RotationGestureDetector childDetector = RotationGestureDetector::New(); + childDetector.Attach(childActor); + childDetector.DetectedSignal().Connect(&application, cFunctor); + + // Start gesture within the actor's area, we receive the gesture not parent actor but child actor. + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 100); + TestEndRotation(application, Vector2(6.0f, 6.0f), Vector2(18.0f, 18.0f), Vector2(10.0f, 8.0f), Vector2(14.0f, 16.0f), 300); + DALI_TEST_EQUALS(true, cData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(false, pData.functorCalled, TEST_LOCATION); + cData.Reset(); + pData.Reset(); + + // If GesturePropargation is set, a gesture event is to pass over to the parent. + Dali::DevelActor::SetNeedGesturePropagation(childActor, true); + + // So now the parent got the gesture event. + TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 700); + TestEndRotation(application, Vector2(6.0f, 6.0f), Vector2(18.0f, 18.0f), Vector2(10.0f, 8.0f), Vector2(14.0f, 16.0f), 900); + DALI_TEST_EQUALS(true, cData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(true, pData.functorCalled, TEST_LOCATION); + cData.Reset(); + pData.Reset(); + + END_TEST; +} \ No newline at end of file