X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali%2Futc-Dali-TouchProcessing.cpp;h=eddbe46ce8884fba7d9471a39ce50ed8cd79fb56;hb=3d321b256f0799b1683d9d23fabb8bfd612d3bd9;hp=eeb635e7d0609177c8859bd2d37a4f6f863d70f8;hpb=21563e4f34805ea1285ed3eba4bdb0393bd9e336;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/automated-tests/src/dali/utc-Dali-TouchProcessing.cpp b/automated-tests/src/dali/utc-Dali-TouchProcessing.cpp index eeb635e..eddbe46 100644 --- a/automated-tests/src/dali/utc-Dali-TouchProcessing.cpp +++ b/automated-tests/src/dali/utc-Dali-TouchProcessing.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 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,15 @@ * */ -#include - -#include -#include -#include -#include -#include #include #include +#include +#include +#include +#include +#include + +#include using namespace Dali; @@ -43,16 +43,16 @@ namespace { struct TestPoint { - int32_t deviceId{-1}; - PointState::Type state{PointState::FINISHED}; - Actor hitActor; - Vector2 local; - Vector2 screen; - float radius{0}; - Vector2 ellipseRadius; - float pressure{0}; - Degree angle; - Device::Class::Type deviceClass{Device::Class::NONE}; + int32_t deviceId{-1}; + PointState::Type state{PointState::FINISHED}; + Actor hitActor; + Vector2 local; + Vector2 screen; + float radius{0}; + Vector2 ellipseRadius; + float pressure{0}; + Degree angle; + Device::Class::Type deviceClass{Device::Class::NONE}; Device::Subclass::Type deviceSubclass{Device::Subclass::NONE}; TestPoint() = default; @@ -61,12 +61,11 @@ struct TestPoint const TestPoint TestPoint::ZERO; - // Stores data that is populated in the callback and will be read by the TET cases struct SignalData { SignalData() - : functorCalled( false ), + : functorCalled(false), receivedTouch(), touchedActor() { @@ -74,12 +73,12 @@ struct SignalData struct TestTouchEvent { - unsigned long time; + unsigned long time; std::vector points; const TestPoint& GetPoint(size_t i) { - if( i < points.size() ) + if(i < points.size()) { return points[i]; } @@ -101,9 +100,9 @@ struct SignalData touchedActor.Reset(); } - bool functorCalled; + bool functorCalled; TestTouchEvent receivedTouch; - Actor touchedActor; + Actor touchedActor; }; // Functor that sets the data when called @@ -114,33 +113,33 @@ struct TouchEventFunctor * @param[in] data Reference to the data to store callback information. * @param[in] returnValue What the functor should return. */ - TouchEventFunctor( SignalData& data, bool returnValue = true ) - : signalData( data ), - returnValue( returnValue ) + TouchEventFunctor(SignalData& data, bool returnValue = true) + : signalData(data), + returnValue(returnValue) { } - bool operator()( Actor actor, const TouchEvent& touch ) + bool operator()(Actor actor, const TouchEvent& touch) { signalData.functorCalled = true; - signalData.touchedActor = actor; + signalData.touchedActor = actor; signalData.receivedTouch.time = touch.GetTime(); signalData.receivedTouch.points.clear(); - for( size_t i=0; istate, TEST_LOCATION ); - DALI_TEST_EQUALS( screenCoordinates, point1->screen, TEST_LOCATION ); - DALI_TEST_EQUALS( localCoordinates, point1->local, 0.1f, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, screenCoordinates)); + const TestPoint* point1 = &data.receivedTouch.GetPoint(0); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(1u, data.receivedTouch.GetPointCount(), TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, point1->state, TEST_LOCATION); + DALI_TEST_EQUALS(screenCoordinates, point1->screen, TEST_LOCATION); + DALI_TEST_EQUALS(localCoordinates, point1->local, 0.1f, TEST_LOCATION); data.Reset(); // Emit a motion signal screenCoordinates.x = screenCoordinates.y = 11.0f; - actor.ScreenToLocal( localCoordinates.x, localCoordinates.y, screenCoordinates.x, screenCoordinates.y ); - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, screenCoordinates ) ); - const TestPoint *point2 = &data.receivedTouch.GetPoint(0); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( 1u, data.receivedTouch.GetPointCount(), TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::MOTION, point2->state, TEST_LOCATION ); - DALI_TEST_EQUALS( screenCoordinates, point2->screen, TEST_LOCATION ); - DALI_TEST_EQUALS( localCoordinates, point2->local, 0.1f, TEST_LOCATION ); + actor.ScreenToLocal(localCoordinates.x, localCoordinates.y, screenCoordinates.x, screenCoordinates.y); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, screenCoordinates)); + const TestPoint* point2 = &data.receivedTouch.GetPoint(0); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(1u, data.receivedTouch.GetPointCount(), TEST_LOCATION); + DALI_TEST_EQUALS(PointState::MOTION, point2->state, TEST_LOCATION); + DALI_TEST_EQUALS(screenCoordinates, point2->screen, TEST_LOCATION); + DALI_TEST_EQUALS(localCoordinates, point2->local, 0.1f, TEST_LOCATION); data.Reset(); // Emit an up signal screenCoordinates.x = screenCoordinates.y = 12.0f; - actor.ScreenToLocal( localCoordinates.x, localCoordinates.y, screenCoordinates.x, screenCoordinates.y ); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, screenCoordinates ) ); - const TestPoint *point3 = &data.receivedTouch.GetPoint(0); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( 1u, data.receivedTouch.GetPointCount(), TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::UP, point3->state, TEST_LOCATION ); - DALI_TEST_EQUALS( screenCoordinates, point3->screen, TEST_LOCATION ); - DALI_TEST_EQUALS( localCoordinates, point3->local, 0.1f, TEST_LOCATION ); + actor.ScreenToLocal(localCoordinates.x, localCoordinates.y, screenCoordinates.x, screenCoordinates.y); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, screenCoordinates)); + const TestPoint* point3 = &data.receivedTouch.GetPoint(0); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(1u, data.receivedTouch.GetPointCount(), TEST_LOCATION); + DALI_TEST_EQUALS(PointState::UP, point3->state, TEST_LOCATION); + DALI_TEST_EQUALS(screenCoordinates, point3->screen, TEST_LOCATION); + DALI_TEST_EQUALS(localCoordinates, point3->local, 0.1f, TEST_LOCATION); data.Reset(); // Emit a down signal where the actor is not present screenCoordinates.x = screenCoordinates.y = 200.0f; - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, screenCoordinates ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, screenCoordinates)); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; } - int UtcDaliTouchEventNormalProcessing02(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); + 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 @@ -351,33 +348,32 @@ int UtcDaliTouchEventNormalProcessing02(void) application.Render(); // Connect to actor's touched signal - HandleData handleData; - TouchEventHandleFunctor functor( handleData ); - actor.TouchedSignal().Connect( &application, functor ); + HandleData handleData; + TouchEventHandleFunctor functor(handleData); + actor.TouchedSignal().Connect(&application, functor); - Vector2 screenCoordinates( 10.0f, 10.0f ); + Vector2 screenCoordinates(10.0f, 10.0f); Vector2 localCoordinates; - actor.ScreenToLocal( localCoordinates.x, localCoordinates.y, screenCoordinates.x, screenCoordinates.y ); + actor.ScreenToLocal(localCoordinates.x, localCoordinates.y, screenCoordinates.x, screenCoordinates.y); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, screenCoordinates ) ); - DALI_TEST_EQUALS( true, handleData.signalReceived, TEST_LOCATION ); - DALI_TEST_EQUALS( 1u, handleData.receivedTouchHandle.GetPointCount(), TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, handleData.receivedTouchHandle.GetState(0), TEST_LOCATION ); - DALI_TEST_EQUALS( screenCoordinates, handleData.receivedTouchHandle.GetScreenPosition(0), TEST_LOCATION ); - DALI_TEST_EQUALS( localCoordinates, handleData.receivedTouchHandle.GetLocalPosition(0), 0.1f, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, screenCoordinates)); + DALI_TEST_EQUALS(true, handleData.signalReceived, TEST_LOCATION); + DALI_TEST_EQUALS(1u, handleData.receivedTouchHandle.GetPointCount(), TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, handleData.receivedTouchHandle.GetState(0), TEST_LOCATION); + DALI_TEST_EQUALS(screenCoordinates, handleData.receivedTouchHandle.GetScreenPosition(0), TEST_LOCATION); + DALI_TEST_EQUALS(localCoordinates, handleData.receivedTouchHandle.GetLocalPosition(0), 0.1f, TEST_LOCATION); END_TEST; } - int UtcDaliTouchEventAPINegative(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); + 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 @@ -385,39 +381,38 @@ int UtcDaliTouchEventAPINegative(void) application.Render(); // Connect to actor's touched signal - OutOfBoundsData data; - OutOfBoundsFunctor functor( data, true ); - actor.TouchedSignal().Connect( &application, functor ); + OutOfBoundsData data; + OutOfBoundsFunctor functor(data, true); + actor.TouchedSignal().Connect(&application, functor); - Vector2 screenCoordinates( 10.0f, 10.0f ); + Vector2 screenCoordinates(10.0f, 10.0f); Vector2 localCoordinates; - actor.ScreenToLocal( localCoordinates.x, localCoordinates.y, screenCoordinates.x, screenCoordinates.y ); + actor.ScreenToLocal(localCoordinates.x, localCoordinates.y, screenCoordinates.x, screenCoordinates.y); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, screenCoordinates ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, screenCoordinates)); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( -1, data.point.deviceId, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::FINISHED, data.point.state, TEST_LOCATION ); - DALI_TEST_EQUALS( Vector2::ZERO, data.point.screen, TEST_LOCATION ); - DALI_TEST_EQUALS( Vector2::ZERO, data.point.local, 0.1f, TEST_LOCATION ); - DALI_TEST_CHECK( ! data.point.hitActor ); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(-1, data.point.deviceId, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::FINISHED, data.point.state, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2::ZERO, data.point.screen, TEST_LOCATION); + DALI_TEST_EQUALS(Vector2::ZERO, data.point.local, 0.1f, TEST_LOCATION); + DALI_TEST_CHECK(!data.point.hitActor); END_TEST; } - int UtcDaliTouchEventOutsideCameraNearFarPlanes(void) { TestApplication application; - Integration::Scene scene = application.GetScene(); - Vector2 sceneSize = scene.GetSize(); + Integration::Scene scene = application.GetScene(); + Vector2 sceneSize = scene.GetSize(); Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::CENTER); - actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER); + actor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); scene.Add(actor); // Render and notify @@ -425,70 +420,70 @@ int UtcDaliTouchEventOutsideCameraNearFarPlanes(void) application.Render(); // Get the camera's near and far planes - RenderTaskList taskList = scene.GetRenderTaskList(); - Dali::RenderTask task = taskList.GetTask(0); - CameraActor camera = task.GetCameraActor(); - float nearPlane = camera.GetNearClippingPlane(); - float farPlane = camera.GetFarClippingPlane(); + RenderTaskList taskList = scene.GetRenderTaskList(); + Dali::RenderTask task = taskList.GetTask(0); + CameraActor camera = task.GetCameraActor(); + float nearPlane = camera.GetNearClippingPlane(); + float farPlane = camera.GetFarClippingPlane(); // Calculate the current distance of the actor from the camera float tanHalfFov = tanf(camera.GetFieldOfView() * 0.5f); - float distance = (sceneSize.y * 0.5f) / tanHalfFov; + float distance = (sceneSize.y * 0.5f) / tanHalfFov; // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data); + actor.TouchedSignal().Connect(&application, functor); - Vector2 screenCoordinates( sceneSize.x * 0.5f, sceneSize.y * 0.5f ); + Vector2 screenCoordinates(sceneSize.x * 0.5f, sceneSize.y * 0.5f); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, screenCoordinates ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, screenCoordinates)); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); // Emit a down signal where actor is just at the camera's near plane - actor.SetProperty( Actor::Property::POSITION_Z, distance - nearPlane); + actor.SetProperty(Actor::Property::POSITION_Z, distance - nearPlane); // Render and notify application.SendNotification(); application.Render(); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, screenCoordinates ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, screenCoordinates)); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); // Emit a down signal where actor is closer than the camera's near plane - actor.SetProperty( Actor::Property::POSITION_Z, (distance - nearPlane) + 1.0f); + actor.SetProperty(Actor::Property::POSITION_Z, (distance - nearPlane) + 1.0f); // Render and notify application.SendNotification(); application.Render(); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, screenCoordinates ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, screenCoordinates)); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); // Emit a down signal where actor is just at the camera's far plane - actor.SetProperty( Actor::Property::POSITION_Z, distance - farPlane); + actor.SetProperty(Actor::Property::POSITION_Z, distance - farPlane); // Render and notify application.SendNotification(); application.Render(); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, screenCoordinates ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, screenCoordinates)); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); // Emit a down signal where actor is further than the camera's far plane - actor.SetProperty( Actor::Property::POSITION_Z, (distance - farPlane) - 1.0f); + actor.SetProperty(Actor::Property::POSITION_Z, (distance - farPlane) - 1.0f); // Render and notify application.SendNotification(); application.Render(); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, screenCoordinates ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, screenCoordinates)); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); END_TEST; } @@ -501,12 +496,12 @@ int UtcDaliTouchEventEmitEmpty(void) { // Emit an empty TouchEvent Integration::TouchEvent event; - application.ProcessEvent( event ); - tet_result( TET_FAIL ); + application.ProcessEvent(event); + tet_result(TET_FAIL); } - catch ( Dali::DaliException& e ) + catch(Dali::DaliException& e) { - DALI_TEST_ASSERT( e, "!event.points.empty()", TEST_LOCATION ); + DALI_TEST_ASSERT(e, "!event.points.empty()", TEST_LOCATION); } END_TEST; } @@ -516,8 +511,8 @@ int UtcDaliTouchEventInterrupted(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); + 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 @@ -525,36 +520,36 @@ int UtcDaliTouchEventInterrupted(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data); + actor.TouchedSignal().Connect(&application, functor); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); data.Reset(); // Emit an interrupted signal, we should be signalled regardless of whether there is a hit or not. - application.ProcessEvent( GenerateSingleTouch( PointState::INTERRUPTED, Vector2( 200.0f, 200.0f /* Outside actor */ ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::INTERRUPTED, data.receivedTouch.points[0].state, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::INTERRUPTED, Vector2(200.0f, 200.0f /* Outside actor */))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::INTERRUPTED, data.receivedTouch.points[0].state, TEST_LOCATION); data.Reset(); // Emit another interrupted signal, our signal handler should not be called. - application.ProcessEvent( GenerateSingleTouch( PointState::INTERRUPTED, Vector2( 200.0f, 200.0f ) ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::INTERRUPTED, Vector2(200.0f, 200.0f))); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; } int UtcDaliTouchEventParentConsumer(void) { TestApplication application; - Actor rootActor( application.GetScene().GetRootLayer() ); + Actor rootActor(application.GetScene().GetRootLayer()); Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); + 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 @@ -562,99 +557,99 @@ int UtcDaliTouchEventParentConsumer(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data, false ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data, false); + actor.TouchedSignal().Connect(&application, functor); // Connect to root actor's touched signal - SignalData rootData; - TouchEventFunctor rootFunctor( rootData ); // Consumes signal - rootActor.TouchedSignal().Connect( &application, rootFunctor ); + SignalData rootData; + TouchEventFunctor rootFunctor(rootData); // Consumes signal + rootActor.TouchedSignal().Connect(&application, rootFunctor); - Vector2 screenCoordinates( 10.0f, 10.0f ); + Vector2 screenCoordinates(10.0f, 10.0f); Vector2 actorCoordinates, rootCoordinates; - actor.ScreenToLocal( actorCoordinates.x, actorCoordinates.y, screenCoordinates.x, screenCoordinates.y ); - rootActor.ScreenToLocal( rootCoordinates.x, rootCoordinates.y, screenCoordinates.x, screenCoordinates.y ); + actor.ScreenToLocal(actorCoordinates.x, actorCoordinates.y, screenCoordinates.x, screenCoordinates.y); + rootActor.ScreenToLocal(rootCoordinates.x, rootCoordinates.y, screenCoordinates.x, screenCoordinates.y); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, screenCoordinates ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( true, rootData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( 1u, data.receivedTouch.GetPointCount(), TEST_LOCATION ); - DALI_TEST_EQUALS( 1u, rootData.receivedTouch.GetPointCount(), TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, rootData.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( screenCoordinates, data.receivedTouch.points[0].screen, TEST_LOCATION ); - DALI_TEST_EQUALS( screenCoordinates, rootData.receivedTouch.points[0].screen, TEST_LOCATION ); - DALI_TEST_EQUALS( actorCoordinates, data.receivedTouch.points[0].local, 0.1f, TEST_LOCATION ); - DALI_TEST_EQUALS( rootCoordinates, rootData.receivedTouch.points[0].local, 0.1f, TEST_LOCATION ); - DALI_TEST_CHECK( actor == data.receivedTouch.points[0].hitActor ); - DALI_TEST_CHECK( actor == rootData.receivedTouch.points[0].hitActor ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, screenCoordinates)); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(true, rootData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(1u, data.receivedTouch.GetPointCount(), TEST_LOCATION); + DALI_TEST_EQUALS(1u, rootData.receivedTouch.GetPointCount(), TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, rootData.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(screenCoordinates, data.receivedTouch.points[0].screen, TEST_LOCATION); + DALI_TEST_EQUALS(screenCoordinates, rootData.receivedTouch.points[0].screen, TEST_LOCATION); + DALI_TEST_EQUALS(actorCoordinates, data.receivedTouch.points[0].local, 0.1f, TEST_LOCATION); + DALI_TEST_EQUALS(rootCoordinates, rootData.receivedTouch.points[0].local, 0.1f, TEST_LOCATION); + DALI_TEST_CHECK(actor == data.receivedTouch.points[0].hitActor); + DALI_TEST_CHECK(actor == rootData.receivedTouch.points[0].hitActor); data.Reset(); rootData.Reset(); // Emit a motion signal screenCoordinates.x = screenCoordinates.y = 11.0f; - actor.ScreenToLocal( actorCoordinates.x, actorCoordinates.y, screenCoordinates.x, screenCoordinates.y ); - rootActor.ScreenToLocal( rootCoordinates.x, rootCoordinates.y, screenCoordinates.x, screenCoordinates.y ); - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, screenCoordinates ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( true, rootData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( 1u, data.receivedTouch.GetPointCount(), TEST_LOCATION ); - DALI_TEST_EQUALS( 1u, rootData.receivedTouch.GetPointCount(), TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::MOTION, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::MOTION, rootData.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( screenCoordinates, data.receivedTouch.points[0].screen, TEST_LOCATION ); - DALI_TEST_EQUALS( screenCoordinates, rootData.receivedTouch.points[0].screen, TEST_LOCATION ); - DALI_TEST_EQUALS( actorCoordinates, data.receivedTouch.points[0].local, 0.1f, TEST_LOCATION ); - DALI_TEST_EQUALS( rootCoordinates, rootData.receivedTouch.points[0].local, 0.1f, TEST_LOCATION ); - DALI_TEST_CHECK( actor == data.receivedTouch.points[0].hitActor ); - DALI_TEST_CHECK( actor == rootData.receivedTouch.points[0].hitActor ); + actor.ScreenToLocal(actorCoordinates.x, actorCoordinates.y, screenCoordinates.x, screenCoordinates.y); + rootActor.ScreenToLocal(rootCoordinates.x, rootCoordinates.y, screenCoordinates.x, screenCoordinates.y); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, screenCoordinates)); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(true, rootData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(1u, data.receivedTouch.GetPointCount(), TEST_LOCATION); + DALI_TEST_EQUALS(1u, rootData.receivedTouch.GetPointCount(), TEST_LOCATION); + DALI_TEST_EQUALS(PointState::MOTION, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::MOTION, rootData.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(screenCoordinates, data.receivedTouch.points[0].screen, TEST_LOCATION); + DALI_TEST_EQUALS(screenCoordinates, rootData.receivedTouch.points[0].screen, TEST_LOCATION); + DALI_TEST_EQUALS(actorCoordinates, data.receivedTouch.points[0].local, 0.1f, TEST_LOCATION); + DALI_TEST_EQUALS(rootCoordinates, rootData.receivedTouch.points[0].local, 0.1f, TEST_LOCATION); + DALI_TEST_CHECK(actor == data.receivedTouch.points[0].hitActor); + DALI_TEST_CHECK(actor == rootData.receivedTouch.points[0].hitActor); data.Reset(); rootData.Reset(); // Emit an up signal screenCoordinates.x = screenCoordinates.y = 12.0f; - actor.ScreenToLocal( actorCoordinates.x, actorCoordinates.y, screenCoordinates.x, screenCoordinates.y ); - rootActor.ScreenToLocal( rootCoordinates.x, rootCoordinates.y, screenCoordinates.x, screenCoordinates.y ); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, screenCoordinates ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( true, rootData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( 1u, data.receivedTouch.GetPointCount(), TEST_LOCATION ); - DALI_TEST_EQUALS( 1u, rootData.receivedTouch.GetPointCount(), TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::UP, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::UP, rootData.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( screenCoordinates, data.receivedTouch.points[0].screen, TEST_LOCATION ); - DALI_TEST_EQUALS( screenCoordinates, rootData.receivedTouch.points[0].screen, TEST_LOCATION ); - DALI_TEST_EQUALS( actorCoordinates, data.receivedTouch.points[0].local, 0.1f, TEST_LOCATION ); - DALI_TEST_EQUALS( rootCoordinates, rootData.receivedTouch.points[0].local, 0.1f, TEST_LOCATION ); - DALI_TEST_CHECK( actor == data.receivedTouch.points[0].hitActor ); - DALI_TEST_CHECK( actor == rootData.receivedTouch.points[0].hitActor ); + actor.ScreenToLocal(actorCoordinates.x, actorCoordinates.y, screenCoordinates.x, screenCoordinates.y); + rootActor.ScreenToLocal(rootCoordinates.x, rootCoordinates.y, screenCoordinates.x, screenCoordinates.y); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, screenCoordinates)); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(true, rootData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(1u, data.receivedTouch.GetPointCount(), TEST_LOCATION); + DALI_TEST_EQUALS(1u, rootData.receivedTouch.GetPointCount(), TEST_LOCATION); + DALI_TEST_EQUALS(PointState::UP, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::UP, rootData.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(screenCoordinates, data.receivedTouch.points[0].screen, TEST_LOCATION); + DALI_TEST_EQUALS(screenCoordinates, rootData.receivedTouch.points[0].screen, TEST_LOCATION); + DALI_TEST_EQUALS(actorCoordinates, data.receivedTouch.points[0].local, 0.1f, TEST_LOCATION); + DALI_TEST_EQUALS(rootCoordinates, rootData.receivedTouch.points[0].local, 0.1f, TEST_LOCATION); + DALI_TEST_CHECK(actor == data.receivedTouch.points[0].hitActor); + DALI_TEST_CHECK(actor == rootData.receivedTouch.points[0].hitActor); data.Reset(); rootData.Reset(); // Emit a down signal where the actor is not present, will hit the root actor though screenCoordinates.x = screenCoordinates.y = 200.0f; - rootActor.ScreenToLocal( rootCoordinates.x, rootCoordinates.y, screenCoordinates.x, screenCoordinates.y ); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, screenCoordinates ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( true, rootData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( 1u, rootData.receivedTouch.GetPointCount(), TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, rootData.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( screenCoordinates, rootData.receivedTouch.points[0].screen, TEST_LOCATION ); - DALI_TEST_EQUALS( rootCoordinates, rootData.receivedTouch.points[0].local, 0.1f, TEST_LOCATION ); - DALI_TEST_CHECK( rootActor == rootData.receivedTouch.points[0].hitActor ); + rootActor.ScreenToLocal(rootCoordinates.x, rootCoordinates.y, screenCoordinates.x, screenCoordinates.y); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, screenCoordinates)); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(true, rootData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(1u, rootData.receivedTouch.GetPointCount(), TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, rootData.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(screenCoordinates, rootData.receivedTouch.points[0].screen, TEST_LOCATION); + DALI_TEST_EQUALS(rootCoordinates, rootData.receivedTouch.points[0].local, 0.1f, TEST_LOCATION); + DALI_TEST_CHECK(rootActor == rootData.receivedTouch.points[0].hitActor); END_TEST; } int UtcDaliTouchEventInterruptedParentConsumer(void) { TestApplication application; - Actor rootActor( application.GetScene().GetRootLayer() ); + Actor rootActor(application.GetScene().GetRootLayer()); Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); + 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 @@ -662,48 +657,48 @@ int UtcDaliTouchEventInterruptedParentConsumer(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data, false ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data, false); + actor.TouchedSignal().Connect(&application, functor); // Connect to root actor's touched signal - SignalData rootData; - TouchEventFunctor rootFunctor( rootData ); // Consumes signal - rootActor.TouchedSignal().Connect( &application, rootFunctor ); + SignalData rootData; + TouchEventFunctor rootFunctor(rootData); // Consumes signal + rootActor.TouchedSignal().Connect(&application, rootFunctor); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( true, rootData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, rootData.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_CHECK( actor == data.receivedTouch.points[0].hitActor ); - DALI_TEST_CHECK( actor == rootData.receivedTouch.points[0].hitActor ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(true, rootData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, rootData.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(actor == data.receivedTouch.points[0].hitActor); + DALI_TEST_CHECK(actor == rootData.receivedTouch.points[0].hitActor); data.Reset(); rootData.Reset(); // Emit an interrupted signal - application.ProcessEvent( GenerateSingleTouch( PointState::INTERRUPTED, Vector2( 200.0f, 200.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( true, rootData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::INTERRUPTED, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::INTERRUPTED, rootData.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_CHECK( actor == data.receivedTouch.points[0].hitActor ); - DALI_TEST_CHECK( actor == rootData.receivedTouch.points[0].hitActor ); + application.ProcessEvent(GenerateSingleTouch(PointState::INTERRUPTED, Vector2(200.0f, 200.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(true, rootData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::INTERRUPTED, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::INTERRUPTED, rootData.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(actor == data.receivedTouch.points[0].hitActor); + DALI_TEST_CHECK(actor == rootData.receivedTouch.points[0].hitActor); data.Reset(); rootData.Reset(); // Emit another down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( true, rootData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, rootData.receivedTouch.points[0].state, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(true, rootData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, rootData.receivedTouch.points[0].state, TEST_LOCATION); data.Reset(); rootData.Reset(); // Remove actor from scene - application.GetScene().Remove( actor ); + application.GetScene().Remove(actor); data.Reset(); rootData.Reset(); @@ -712,18 +707,18 @@ int UtcDaliTouchEventInterruptedParentConsumer(void) application.Render(); // Emit an interrupted signal, only root actor's signal should be called. - application.ProcessEvent( GenerateSingleTouch( PointState::INTERRUPTED, Vector2( 200.0f, 200.0f /* Outside actor */ ) ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( true, rootData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::INTERRUPTED, rootData.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_CHECK( rootActor == rootData.receivedTouch.points[0].hitActor ); + application.ProcessEvent(GenerateSingleTouch(PointState::INTERRUPTED, Vector2(200.0f, 200.0f /* Outside actor */))); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(true, rootData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::INTERRUPTED, rootData.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(rootActor == rootData.receivedTouch.points[0].hitActor); data.Reset(); rootData.Reset(); // Emit another interrupted state, none of the signal's should be called. - application.ProcessEvent( GenerateSingleTouch( PointState::INTERRUPTED, Vector2( 200.0f, 200.0f ) ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( false, rootData.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::INTERRUPTED, Vector2(200.0f, 200.0f))); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(false, rootData.functorCalled, TEST_LOCATION); END_TEST; } @@ -732,8 +727,8 @@ int UtcDaliTouchEventLeave(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); + 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 @@ -741,42 +736,42 @@ int UtcDaliTouchEventLeave(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data); + actor.TouchedSignal().Connect(&application, functor); // Set actor to require leave events - actor.SetProperty( Actor::Property::LEAVE_REQUIRED, true ); + actor.SetProperty(Actor::Property::LEAVE_REQUIRED, true); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); data.Reset(); // Emit a motion signal outside of actor, should be signalled with a Leave - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2 ( 200.0f, 200.0f )) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::LEAVE, data.receivedTouch.points[0].state, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(200.0f, 200.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::LEAVE, data.receivedTouch.points[0].state, TEST_LOCATION); data.Reset(); // Another motion outside of actor, no signalling - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2 ( 201.0f, 201.0f )) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(201.0f, 201.0f))); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); // Another motion event inside actor, signalled with motion - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2 ( 10.0f, 10.0f )) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::MOTION, data.receivedTouch.points[0].state, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::MOTION, data.receivedTouch.points[0].state, TEST_LOCATION); data.Reset(); // We do not want to listen to leave events anymore - actor.SetProperty( Actor::Property::LEAVE_REQUIRED, false ); + actor.SetProperty(Actor::Property::LEAVE_REQUIRED, false); // Another motion event outside of actor, no signalling - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2 ( 200.0f, 200.0f )) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(200.0f, 200.0f))); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); END_TEST; } @@ -784,11 +779,11 @@ int UtcDaliTouchEventLeave(void) int UtcDaliTouchEventLeaveParentConsumer(void) { TestApplication application; - Actor rootActor( application.GetScene().GetRootLayer() ); + Actor rootActor(application.GetScene().GetRootLayer()); Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); + 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 @@ -796,70 +791,70 @@ int UtcDaliTouchEventLeaveParentConsumer(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data, false ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data, false); + actor.TouchedSignal().Connect(&application, functor); // Connect to root actor's touched signal - SignalData rootData; - TouchEventFunctor rootFunctor( rootData ); // Consumes signal - rootActor.TouchedSignal().Connect( &application, rootFunctor ); + SignalData rootData; + TouchEventFunctor rootFunctor(rootData); // Consumes signal + rootActor.TouchedSignal().Connect(&application, rootFunctor); // Set actor to require leave events - actor.SetProperty( Actor::Property::LEAVE_REQUIRED, true ); - rootActor.SetProperty( Actor::Property::LEAVE_REQUIRED, true ); + actor.SetProperty(Actor::Property::LEAVE_REQUIRED, true); + rootActor.SetProperty(Actor::Property::LEAVE_REQUIRED, true); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( true, rootData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, rootData.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_CHECK( actor == data.receivedTouch.points[0].hitActor ); - DALI_TEST_CHECK( actor == rootData.receivedTouch.points[0].hitActor ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(true, rootData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, rootData.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(actor == data.receivedTouch.points[0].hitActor); + DALI_TEST_CHECK(actor == rootData.receivedTouch.points[0].hitActor); data.Reset(); rootData.Reset(); // Emit a motion signal outside of actor, should be signalled with a Leave - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2 ( 200.0f, 200.0f )) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( true, rootData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::LEAVE, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::LEAVE, rootData.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_CHECK( actor == data.receivedTouch.points[0].hitActor ); - DALI_TEST_CHECK( actor == rootData.receivedTouch.points[0].hitActor ); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(200.0f, 200.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(true, rootData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::LEAVE, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::LEAVE, rootData.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(actor == data.receivedTouch.points[0].hitActor); + DALI_TEST_CHECK(actor == rootData.receivedTouch.points[0].hitActor); data.Reset(); rootData.Reset(); // Another motion outside of actor, only rootActor signalled - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2 ( 201.0f, 201.0f )) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( true, rootData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::MOTION, rootData.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_CHECK( rootActor == rootData.receivedTouch.points[0].hitActor ); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(201.0f, 201.0f))); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(true, rootData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::MOTION, rootData.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(rootActor == rootData.receivedTouch.points[0].hitActor); data.Reset(); rootData.Reset(); // Another motion event inside actor, signalled with motion - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2 ( 10.0f, 10.0f )) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( true, rootData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::MOTION, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::MOTION, rootData.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_CHECK( actor == data.receivedTouch.points[0].hitActor ); - DALI_TEST_CHECK( actor == rootData.receivedTouch.points[0].hitActor ); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(true, rootData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::MOTION, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::MOTION, rootData.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(actor == data.receivedTouch.points[0].hitActor); + DALI_TEST_CHECK(actor == rootData.receivedTouch.points[0].hitActor); data.Reset(); rootData.Reset(); // We do not want to listen to leave events of actor anymore - actor.SetProperty( Actor::Property::LEAVE_REQUIRED, false ); + actor.SetProperty(Actor::Property::LEAVE_REQUIRED, false); // Another motion event outside of root actor, only root signalled - Vector2 sceneSize( application.GetScene().GetSize() ); - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2 ( sceneSize.width + 10.0f, sceneSize.height + 10.0f )) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( true, rootData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::LEAVE, rootData.receivedTouch.points[0].state, TEST_LOCATION ); + Vector2 sceneSize(application.GetScene().GetSize()); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(sceneSize.width + 10.0f, sceneSize.height + 10.0f))); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(true, rootData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::LEAVE, rootData.receivedTouch.points[0].state, TEST_LOCATION); END_TEST; } @@ -868,8 +863,8 @@ int UtcDaliTouchEventActorBecomesInsensitive(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); + 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 @@ -877,23 +872,23 @@ int UtcDaliTouchEventActorBecomesInsensitive(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data); + actor.TouchedSignal().Connect(&application, functor); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); data.Reset(); // Change actor to insensitive - actor.SetProperty( Actor::Property::SENSITIVE, false ); + actor.SetProperty(Actor::Property::SENSITIVE, false); // Emit a motion signal, signalled with an interrupted - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2 ( 200.0f, 200.0f )) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::INTERRUPTED, data.receivedTouch.points[0].state, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(200.0f, 200.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::INTERRUPTED, data.receivedTouch.points[0].state, TEST_LOCATION); data.Reset(); END_TEST; } @@ -901,11 +896,11 @@ int UtcDaliTouchEventActorBecomesInsensitive(void) int UtcDaliTouchEventActorBecomesInsensitiveParentConsumer(void) { TestApplication application; - Actor rootActor( application.GetScene().GetRootLayer() ); + Actor rootActor(application.GetScene().GetRootLayer()); Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); + 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 @@ -913,23 +908,23 @@ int UtcDaliTouchEventActorBecomesInsensitiveParentConsumer(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data, false ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data, false); + actor.TouchedSignal().Connect(&application, functor); // Connect to root actor's touched signal - SignalData rootData; - TouchEventFunctor rootFunctor( rootData ); // Consumes signal - rootActor.TouchedSignal().Connect( &application, rootFunctor ); + SignalData rootData; + TouchEventFunctor rootFunctor(rootData); // Consumes signal + rootActor.TouchedSignal().Connect(&application, rootFunctor); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( true, rootData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, rootData.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_CHECK( actor == data.receivedTouch.points[0].hitActor ); - DALI_TEST_CHECK( actor == rootData.receivedTouch.points[0].hitActor ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(true, rootData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, rootData.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(actor == data.receivedTouch.points[0].hitActor); + DALI_TEST_CHECK(actor == rootData.receivedTouch.points[0].hitActor); data.Reset(); rootData.Reset(); @@ -938,295 +933,295 @@ int UtcDaliTouchEventActorBecomesInsensitiveParentConsumer(void) application.Render(); // Make root actor insensitive - rootActor.SetProperty( Actor::Property::SENSITIVE, false ); + rootActor.SetProperty(Actor::Property::SENSITIVE, false); // Emit a motion signal, signalled with an interrupted (should get interrupted even if within root actor) - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2 ( 200.0f, 200.0f )) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::INTERRUPTED, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( true, rootData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::INTERRUPTED, rootData.receivedTouch.points[0].state, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(200.0f, 200.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::INTERRUPTED, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(true, rootData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::INTERRUPTED, rootData.receivedTouch.points[0].state, TEST_LOCATION); END_TEST; } int UtcDaliTouchEventMultipleLayers(void) { TestApplication application; - Actor rootActor( application.GetScene().GetRootLayer() ); + Actor rootActor(application.GetScene().GetRootLayer()); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data ); + SignalData data; + TouchEventFunctor functor(data); - Layer layer1 ( Layer::New() ); - layer1.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - layer1.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); - application.GetScene().Add( layer1 ); + Layer layer1(Layer::New()); + layer1.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + layer1.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + application.GetScene().Add(layer1); - Actor actor1 ( Actor::New() ); - actor1.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor1.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); - actor1.SetProperty( Actor::Property::POSITION_Z, 1.0f ); // Should hit actor1 in this layer - layer1.Add( actor1 ); + Actor actor1(Actor::New()); + actor1.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor1.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + actor1.SetProperty(Actor::Property::POSITION_Z, 1.0f); // Should hit actor1 in this layer + layer1.Add(actor1); // Render and notify application.SendNotification(); application.Render(); // Connect to layer1 and actor1 - layer1.TouchedSignal().Connect( &application, functor ); - actor1.TouchedSignal().Connect( &application, functor ); + layer1.TouchedSignal().Connect(&application, functor); + actor1.TouchedSignal().Connect(&application, functor); // Hit in hittable area, actor1 should be hit - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_CHECK( data.touchedActor == actor1 ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_CHECK(data.touchedActor == actor1); data.Reset(); // Make layer1 insensitive, nothing should be hit - layer1.SetProperty( Actor::Property::SENSITIVE, false ); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); + layer1.SetProperty(Actor::Property::SENSITIVE, false); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); // Make layer1 sensitive again, again actor1 will be hit - layer1.SetProperty( Actor::Property::SENSITIVE, true ); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_CHECK( data.touchedActor == actor1 ); + layer1.SetProperty(Actor::Property::SENSITIVE, true); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_CHECK(data.touchedActor == actor1); data.Reset(); // Make rootActor insensitive, nothing should be hit - rootActor.SetProperty( Actor::Property::SENSITIVE, false ); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); + rootActor.SetProperty(Actor::Property::SENSITIVE, false); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); // Make rootActor sensitive - rootActor.SetProperty( Actor::Property::SENSITIVE, true ); + rootActor.SetProperty(Actor::Property::SENSITIVE, true); // Add another layer - Layer layer2 ( Layer::New() ); - layer2.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - layer2.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); - layer2.SetProperty( Actor::Property::POSITION_Z, 10.0f ); // Should hit layer2 in this layer rather than actor2 - application.GetScene().Add( layer2 ); + Layer layer2(Layer::New()); + layer2.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + layer2.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + layer2.SetProperty(Actor::Property::POSITION_Z, 10.0f); // Should hit layer2 in this layer rather than actor2 + application.GetScene().Add(layer2); - Actor actor2 ( Actor::New() ); - actor2.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor2.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); - layer2.Add( actor2 ); + Actor actor2(Actor::New()); + actor2.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor2.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + layer2.Add(actor2); // Render and notify application.SendNotification(); application.Render(); // Connect to layer2 and actor2 - layer2.TouchedSignal().Connect( &application, functor ); - actor2.TouchedSignal().Connect( &application, functor ); + layer2.TouchedSignal().Connect(&application, functor); + actor2.TouchedSignal().Connect(&application, functor); // Emit an event, should hit layer2 - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); //DALI_TEST_CHECK( data.touchedActor == layer2 ); // TODO: Uncomment this after removing renderable hack! data.Reset(); // Make layer2 insensitive, should hit actor1 - layer2.SetProperty( Actor::Property::SENSITIVE, false ); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_CHECK( data.touchedActor == actor1 ); + layer2.SetProperty(Actor::Property::SENSITIVE, false); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_CHECK(data.touchedActor == actor1); data.Reset(); // Make layer2 sensitive again, should hit layer2 - layer2.SetProperty( Actor::Property::SENSITIVE, true ); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + layer2.SetProperty(Actor::Property::SENSITIVE, true); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); //DALI_TEST_CHECK( data.touchedActor == layer2 ); // TODO: Uncomment this after removing renderable hack! data.Reset(); // Make layer2 invisible, render and notify - layer2.SetProperty( Actor::Property::VISIBLE, false ); + layer2.SetProperty(Actor::Property::VISIBLE, false); application.SendNotification(); application.Render(); // Should hit actor1 - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_CHECK( data.touchedActor == actor1 ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_CHECK(data.touchedActor == actor1); data.Reset(); // Make rootActor invisible, render and notify - rootActor.SetProperty( Actor::Property::VISIBLE, false ); + rootActor.SetProperty(Actor::Property::VISIBLE, false); application.SendNotification(); application.Render(); // Should not hit anything - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); END_TEST; } int UtcDaliTouchEventMultipleRenderTasks(void) { - TestApplication application; - Integration::Scene scene ( application.GetScene() ); - Vector2 sceneSize ( scene.GetSize() ); + TestApplication application; + Integration::Scene scene(application.GetScene()); + Vector2 sceneSize(scene.GetSize()); Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); scene.Add(actor); // Create render task - Viewport viewport( sceneSize.width * 0.5f, sceneSize.height * 0.5f, sceneSize.width * 0.5f, sceneSize.height * 0.5f ); - RenderTask renderTask ( application.GetScene().GetRenderTaskList().CreateTask() ); - renderTask.SetViewport( viewport ); - renderTask.SetInputEnabled( true ); + Viewport viewport(sceneSize.width * 0.5f, sceneSize.height * 0.5f, sceneSize.width * 0.5f, sceneSize.height * 0.5f); + RenderTask renderTask(application.GetScene().GetRenderTaskList().CreateTask()); + renderTask.SetViewport(viewport); + renderTask.SetInputEnabled(true); // Render and notify application.SendNotification(); application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data); + actor.TouchedSignal().Connect(&application, functor); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); // Ensure renderTask actor can be hit too. - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( viewport.x + 5.0f, viewport.y + 5.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(viewport.x + 5.0f, viewport.y + 5.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); // Disable input on renderTask, should not be hittable - renderTask.SetInputEnabled( false ); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( viewport.x + 5.0f, viewport.y + 5.0f ) ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); + renderTask.SetInputEnabled(false); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(viewport.x + 5.0f, viewport.y + 5.0f))); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); END_TEST; } int UtcDaliTouchEventMultipleRenderTasksWithChildLayer(void) { - TestApplication application; - Integration::Scene scene ( application.GetScene() ); - Vector2 sceneSize ( scene.GetSize() ); + TestApplication application; + Integration::Scene scene(application.GetScene()); + Vector2 sceneSize(scene.GetSize()); Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); scene.Add(actor); Layer layer = Layer::New(); - layer.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - layer.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); + layer.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + layer.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); actor.Add(layer); // Create render task - Viewport viewport( sceneSize.width * 0.5f, sceneSize.height * 0.5f, sceneSize.width * 0.5f, sceneSize.height * 0.5f ); - RenderTask renderTask ( application.GetScene().GetRenderTaskList().CreateTask() ); - renderTask.SetViewport( viewport ); - renderTask.SetInputEnabled( true ); - renderTask.SetSourceActor( actor ); + Viewport viewport(sceneSize.width * 0.5f, sceneSize.height * 0.5f, sceneSize.width * 0.5f, sceneSize.height * 0.5f); + RenderTask renderTask(application.GetScene().GetRenderTaskList().CreateTask()); + renderTask.SetViewport(viewport); + renderTask.SetInputEnabled(true); + renderTask.SetSourceActor(actor); // Render and notify application.SendNotification(); application.Render(); // Connect to layer's touched signal - SignalData data; - TouchEventFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); - layer.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data); + actor.TouchedSignal().Connect(&application, functor); + layer.TouchedSignal().Connect(&application, functor); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); // Ensure renderTask actor can be hit too. - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( viewport.x + 5.0f, viewport.y + 5.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(viewport.x + 5.0f, viewport.y + 5.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); // Disable input on renderTask, should not be hittable - renderTask.SetInputEnabled( false ); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( viewport.x + 5.0f, viewport.y + 5.0f ) ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); + renderTask.SetInputEnabled(false); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(viewport.x + 5.0f, viewport.y + 5.0f))); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); END_TEST; } int UtcDaliTouchEventOffscreenRenderTasks(void) { - TestApplication application; - Integration::Scene scene ( application.GetScene() ); - Vector2 sceneSize ( scene.GetSize() ); + TestApplication application; + Integration::Scene scene(application.GetScene()); + Vector2 sceneSize(scene.GetSize()); // FrameBufferImage for offscreen RenderTask FrameBuffer frameBuffer = FrameBuffer::New(sceneSize.width, sceneSize.height); // Create a renderable actor to display the FrameBufferImage Actor renderableActor = CreateRenderableActor(frameBuffer.GetColorTexture()); - renderableActor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); - renderableActor.SetProperty( Actor::Property::SIZE, Vector2( sceneSize.x, sceneSize.y ) ); - renderableActor.ScaleBy( Vector3(1.0f, -1.0f, 1.0f) ); // FIXME - scene.Add( renderableActor ); + renderableActor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + renderableActor.SetProperty(Actor::Property::SIZE, Vector2(sceneSize.x, sceneSize.y)); + renderableActor.ScaleBy(Vector3(1.0f, -1.0f, 1.0f)); // FIXME + scene.Add(renderableActor); Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); - scene.Add( actor ); - application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); // Ensure framebuffer connects + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + scene.Add(actor); + application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE); // Ensure framebuffer connects - scene.GetRenderTaskList().GetTask( 0u ).SetScreenToFrameBufferFunction( RenderTask::FULLSCREEN_FRAMEBUFFER_FUNCTION ); + scene.GetRenderTaskList().GetTask(0u).SetScreenToFrameBufferFunction(RenderTask::FULLSCREEN_FRAMEBUFFER_FUNCTION); // Create a RenderTask RenderTask renderTask = scene.GetRenderTaskList().CreateTask(); - renderTask.SetSourceActor( actor ); + renderTask.SetSourceActor(actor); renderTask.SetFrameBuffer(frameBuffer); - renderTask.SetInputEnabled( true ); + renderTask.SetInputEnabled(true); // Create another RenderTask - RenderTask renderTask2( scene.GetRenderTaskList().CreateTask() ); - renderTask2.SetInputEnabled( true ); + RenderTask renderTask2(scene.GetRenderTaskList().CreateTask()); + renderTask2.SetInputEnabled(true); // Render and notify application.SendNotification(); application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data); + actor.TouchedSignal().Connect(&application, functor); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); END_TEST; } int UtcDaliTouchEventMultipleRenderableActors(void) { - TestApplication application; - Integration::Scene scene ( application.GetScene() ); - Vector2 sceneSize ( scene.GetSize() ); + TestApplication application; + Integration::Scene scene(application.GetScene()); + Vector2 sceneSize(scene.GetSize()); Actor parent = CreateRenderableActor(); - parent.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - parent.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); + parent.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + parent.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); scene.Add(parent); Actor actor = CreateRenderableActor(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); parent.Add(actor); // Render and notify @@ -1234,15 +1229,15 @@ int UtcDaliTouchEventMultipleRenderableActors(void) application.Render(); // Connect to layer's touched signal - SignalData data; - TouchEventFunctor functor( data ); - parent.TouchedSignal().Connect( &application, functor ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data); + parent.TouchedSignal().Connect(&application, functor); + actor.TouchedSignal().Connect(&application, functor); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_CHECK( actor == data.touchedActor ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_CHECK(actor == data.touchedActor); END_TEST; } @@ -1251,8 +1246,8 @@ int UtcDaliTouchEventActorRemovedInSignal(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); + 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 @@ -1260,16 +1255,16 @@ int UtcDaliTouchEventActorRemovedInSignal(void) application.Render(); // Connect to actor's touched signal - SignalData data; - RemoveActorFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + RemoveActorFunctor functor(data); + actor.TouchedSignal().Connect(&application, functor); // Register for leave events - actor.SetProperty( Actor::Property::LEAVE_REQUIRED, true ); + actor.SetProperty(Actor::Property::LEAVE_REQUIRED, true); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); // Re-add, render and notify @@ -1278,13 +1273,13 @@ int UtcDaliTouchEventActorRemovedInSignal(void) application.Render(); // Emit another signal outside of actor's area, should not get anything as the scene has changed. - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2( 210.0f, 210.0f ) ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(210.0f, 210.0f))); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); // Render and notify @@ -1292,8 +1287,8 @@ int UtcDaliTouchEventActorRemovedInSignal(void) application.Render(); // Emit another signal outside of actor's area, should not get anything as the scene has changed. - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2( 210.0f, 210.0f ) ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(210.0f, 210.0f))); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); // Re-add actor back to scene, render and notify @@ -1302,16 +1297,16 @@ int UtcDaliTouchEventActorRemovedInSignal(void) application.Render(); // Emit another down event - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); // Completely delete the actor actor.Reset(); // Emit event, should not crash and should not receive an event. - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2( 210.0f, 210.0f ) ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(210.0f, 210.0f))); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; } @@ -1320,8 +1315,8 @@ int UtcDaliTouchEventActorSignalNotConsumed(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); + 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 @@ -1329,13 +1324,13 @@ int UtcDaliTouchEventActorSignalNotConsumed(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data, false ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data, false); + actor.TouchedSignal().Connect(&application, functor); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); END_TEST; } @@ -1344,8 +1339,8 @@ int UtcDaliTouchEventActorRemovedFromScene(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); + 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 @@ -1353,17 +1348,17 @@ int UtcDaliTouchEventActorRemovedFromScene(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data); + actor.TouchedSignal().Connect(&application, functor); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); // Remove actor from scene - application.GetScene().Remove( actor ); + application.GetScene().Remove(actor); data.Reset(); // Render and notify @@ -1371,8 +1366,8 @@ int UtcDaliTouchEventActorRemovedFromScene(void) application.Render(); // Emit a move at the same point, we should not be signalled. - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); END_TEST; } @@ -1382,8 +1377,8 @@ int UtcDaliTouchEventLayerConsumesTouch(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); + 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 @@ -1391,15 +1386,15 @@ int UtcDaliTouchEventLayerConsumesTouch(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data); + actor.TouchedSignal().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.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 @@ -1407,21 +1402,21 @@ int UtcDaliTouchEventLayerConsumesTouch(void) application.Render(); // Emit a few touch signals - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(10.0f, 10.0f))); + 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 - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 10.0f, 10.0f ) ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(10.0f, 10.0f))); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); @@ -1430,45 +1425,45 @@ int UtcDaliTouchEventLayerConsumesTouch(void) int UtcDaliTouchEventLeaveActorReadded(void) { - TestApplication application; + TestApplication application; Integration::Scene scene = application.GetScene(); Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); scene.Add(actor); // Set actor to receive touch-events - actor.SetProperty( Actor::Property::LEAVE_REQUIRED, true ); + actor.SetProperty(Actor::Property::LEAVE_REQUIRED, true); // Render and notify application.SendNotification(); application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data); + actor.TouchedSignal().Connect(&application, functor); // Emit a down and motion - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2( 11.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(11.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); // Remove actor from scene and add again - scene.Remove( actor ); - scene.Add( actor ); + scene.Remove(actor); + scene.Add(actor); // Emit a motion within the actor's bounds - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2( 12.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(12.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); // Emit a motion outside the actor's bounds - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2( 200.0f, 200.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::LEAVE, data.receivedTouch.points[0].state, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(200.0f, 200.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::LEAVE, data.receivedTouch.points[0].state, TEST_LOCATION); data.Reset(); END_TEST; @@ -1476,52 +1471,70 @@ int UtcDaliTouchEventLeaveActorReadded(void) int UtcDaliTouchEventClippedActor(void) { - TestApplication application; + TestApplication application; Integration::Scene scene = application.GetScene(); Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); - scene.Add( actor ); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + scene.Add(actor); Actor clippingActor = Actor::New(); - clippingActor.SetProperty( Actor::Property::SIZE, Vector2( 50.0f, 50.0f ) ); - clippingActor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); - clippingActor.SetProperty( Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN ); - scene.Add( clippingActor ); + clippingActor.SetProperty(Actor::Property::SIZE, Vector2(50.0f, 50.0f)); + clippingActor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + clippingActor.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN); + scene.Add(clippingActor); // Add a child to the clipped region. Actor clippingChild = Actor::New(); - clippingChild.SetProperty( Actor::Property::SIZE, Vector2( 50.0f, 50.0f ) ); - clippingChild.SetProperty( Actor::Property::POSITION, Vector2( 25.0f, 25.0f )); - clippingChild.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); - clippingActor.Add( clippingChild ); + clippingChild.SetProperty(Actor::Property::SIZE, Vector2(50.0f, 50.0f)); + clippingChild.SetProperty(Actor::Property::POSITION, Vector2(25.0f, 25.0f)); + clippingChild.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + clippingActor.Add(clippingChild); // Render and notify. application.SendNotification(); application.Render(); // Connect to actor's touch signal. - SignalData data; - TouchEventFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data); + actor.TouchedSignal().Connect(&application, functor); - // Emit an event within clipped area - no hit. - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); + // Emit an event within clipped area - we should have a hit. + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); - // Emit an event outside the clipped area but within the actor area, we should have a hit. - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 60.0f, 60.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + // Emit an event within clipped child area - we should still have a hit. + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(40.0f, 40.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + data.Reset(); + + // Now connect to the clippingChild's touch signal + SignalData clippingChildData; + TouchEventFunctor clippingChildFunctor(clippingChildData); + clippingChild.TouchedSignal().Connect(&application, clippingChildFunctor); + + // Emit an event within clipped child area - no hit on actor, but hit on clipped child. + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(40.0f, 40.0f))); + DALI_TEST_EQUALS(true, clippingChildData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); + clippingChildData.Reset(); - clippingChild.TouchedSignal().Connect( &application, functor ); + // Emit an event outside the clipped area but within the actor area, we should have a hit. + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(60.0f, 60.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + data.Reset(); + clippingChildData.Reset(); - // Emit an event inside part of the child which is within the clipped area, we should have a hit. - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 30.0f, 30.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + // Emit an event inside part of the child which is within the clipped area, we should have a hit on the clipped child but not the actor. + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(30.0f, 30.0f))); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(true, clippingChildData.functorCalled, TEST_LOCATION); data.Reset(); + clippingChildData.Reset(); END_TEST; } @@ -1531,8 +1544,8 @@ int UtcDaliTouchEventActorUnparented(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); + 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 @@ -1540,15 +1553,15 @@ int UtcDaliTouchEventActorUnparented(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data); + actor.TouchedSignal().Connect(&application, functor); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_CHECK( actor == data.receivedTouch.points[0].hitActor ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(actor == data.receivedTouch.points[0].hitActor); data.Reset(); // Render and notify @@ -1559,8 +1572,8 @@ int UtcDaliTouchEventActorUnparented(void) actor.Unparent(); // Should receive an interrupted event - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::INTERRUPTED, data.receivedTouch.points[0].state, TEST_LOCATION ); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::INTERRUPTED, data.receivedTouch.points[0].state, TEST_LOCATION); END_TEST; } @@ -1569,13 +1582,13 @@ int UtcDaliTouchEventParentRemovedFromScene(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); + parent.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + parent.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); application.GetScene().Add(parent); Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); parent.Add(actor); // Render and notify @@ -1583,15 +1596,15 @@ int UtcDaliTouchEventParentRemovedFromScene(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data); + actor.TouchedSignal().Connect(&application, functor); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_CHECK( actor == data.receivedTouch.points[0].hitActor ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(actor == data.receivedTouch.points[0].hitActor); data.Reset(); // Render and notify @@ -1602,8 +1615,8 @@ int UtcDaliTouchEventParentRemovedFromScene(void) parent.Unparent(); // Should receive an interrupted event - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::INTERRUPTED, data.receivedTouch.points[0].state, TEST_LOCATION ); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::INTERRUPTED, data.receivedTouch.points[0].state, TEST_LOCATION); END_TEST; } @@ -1612,13 +1625,13 @@ int UtcDaliTouchEventActorRemovedFromSceneDifferentConsumer(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); + parent.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + parent.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); application.GetScene().Add(parent); Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); parent.Add(actor); // Render and notify @@ -1626,25 +1639,25 @@ int UtcDaliTouchEventActorRemovedFromSceneDifferentConsumer(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data, false /* Do not consume */ ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data, false /* Do not consume */); + actor.TouchedSignal().Connect(&application, functor); // Connect to parent's touched signal - SignalData parentData; - TouchEventFunctor parentFunctor( parentData ); - parent.TouchedSignal().Connect( &application, parentFunctor ); + SignalData parentData; + TouchEventFunctor parentFunctor(parentData); + parent.TouchedSignal().Connect(&application, parentFunctor); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_CHECK( actor == data.receivedTouch.points[0].hitActor ); - DALI_TEST_CHECK( actor == data.touchedActor ); - DALI_TEST_EQUALS( true, parentData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, parentData.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_CHECK( actor == parentData.receivedTouch.points[0].hitActor ); - DALI_TEST_CHECK( parent == parentData.touchedActor ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(actor == data.receivedTouch.points[0].hitActor); + DALI_TEST_CHECK(actor == data.touchedActor); + DALI_TEST_EQUALS(true, parentData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, parentData.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(actor == parentData.receivedTouch.points[0].hitActor); + DALI_TEST_CHECK(parent == parentData.touchedActor); data.Reset(); parentData.Reset(); @@ -1656,10 +1669,10 @@ int UtcDaliTouchEventActorRemovedFromSceneDifferentConsumer(void) actor.Unparent(); // Should receive an interrupted event for both actor & parent - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::INTERRUPTED, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( true, parentData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::INTERRUPTED, parentData.receivedTouch.points[0].state, TEST_LOCATION ); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::INTERRUPTED, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(true, parentData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::INTERRUPTED, parentData.receivedTouch.points[0].state, TEST_LOCATION); data.Reset(); parentData.Reset(); @@ -1671,27 +1684,27 @@ int UtcDaliTouchEventActorRemovedFromSceneDifferentConsumer(void) application.Render(); // Emit a motion signal - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( true, parentData.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(true, parentData.functorCalled, TEST_LOCATION); data.Reset(); parentData.Reset(); // Parent is now consumer, connect again to the touched signal of the actor so that it becomes the consumer - SignalData secondData; - TouchEventFunctor secondFunctor( secondData /* Consume */ ); - actor.TouchedSignal().Connect( &application, secondFunctor ); + SignalData secondData; + TouchEventFunctor secondFunctor(secondData /* Consume */); + actor.TouchedSignal().Connect(&application, secondFunctor); // Unparent the actor actor.Unparent(); // Should receive an interrupted event for both actor functors & the parent as well as it was last consumer - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::INTERRUPTED, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( true, parentData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::INTERRUPTED, parentData.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( true, secondData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::INTERRUPTED, secondData.receivedTouch.points[0].state, TEST_LOCATION ); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::INTERRUPTED, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(true, parentData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::INTERRUPTED, parentData.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(true, secondData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::INTERRUPTED, secondData.receivedTouch.points[0].state, TEST_LOCATION); data.Reset(); parentData.Reset(); secondData.Reset(); @@ -1702,16 +1715,16 @@ int UtcDaliTouchEventActorRemovedFromSceneDifferentConsumer(void) int UtcDaliTouchEventInterruptedDifferentConsumer(void) { TestApplication application; - Actor rootActor( application.GetScene().GetRootLayer() ); + Actor rootActor(application.GetScene().GetRootLayer()); Actor parent = Actor::New(); - parent.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - parent.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); + parent.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + parent.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); application.GetScene().Add(parent); Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); parent.Add(actor); // Render and notify @@ -1719,51 +1732,51 @@ int UtcDaliTouchEventInterruptedDifferentConsumer(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data, false /* Do not consume */ ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data, false /* Do not consume */); + actor.TouchedSignal().Connect(&application, functor); // Connect to parent's touched signal - SignalData parentData; - TouchEventFunctor parentFunctor( parentData, false /* Do not consume */ ); - parent.TouchedSignal().Connect( &application, parentFunctor ); + SignalData parentData; + TouchEventFunctor parentFunctor(parentData, false /* Do not consume */); + parent.TouchedSignal().Connect(&application, parentFunctor); // Connect to root's touched signal and consume - SignalData rootData; - TouchEventFunctor rootFunctor( rootData ); - rootActor.TouchedSignal().Connect( &application, rootFunctor ); + SignalData rootData; + TouchEventFunctor rootFunctor(rootData); + rootActor.TouchedSignal().Connect(&application, rootFunctor); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_CHECK( actor == data.receivedTouch.points[0].hitActor ); - DALI_TEST_CHECK( actor == data.touchedActor ); - DALI_TEST_EQUALS( true, parentData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, parentData.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_CHECK( actor == parentData.receivedTouch.points[0].hitActor ); - DALI_TEST_CHECK( parent == parentData.touchedActor ); - DALI_TEST_EQUALS( true, rootData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, rootData.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_CHECK( actor == rootData.receivedTouch.points[0].hitActor ); - DALI_TEST_CHECK( rootActor == rootData.touchedActor ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(actor == data.receivedTouch.points[0].hitActor); + DALI_TEST_CHECK(actor == data.touchedActor); + DALI_TEST_EQUALS(true, parentData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, parentData.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(actor == parentData.receivedTouch.points[0].hitActor); + DALI_TEST_CHECK(parent == parentData.touchedActor); + DALI_TEST_EQUALS(true, rootData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, rootData.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(actor == rootData.receivedTouch.points[0].hitActor); + DALI_TEST_CHECK(rootActor == rootData.touchedActor); data.Reset(); parentData.Reset(); rootData.Reset(); // Root is now consumer, connect to the touched signal of the parent so that it becomes the consumer - SignalData secondData; - TouchEventFunctor secondFunctor( secondData /* Consume */ ); - parent.TouchedSignal().Connect( &application, secondFunctor ); + SignalData secondData; + TouchEventFunctor secondFunctor(secondData /* Consume */); + parent.TouchedSignal().Connect(&application, secondFunctor); // Emit an interrupted signal, all three should STILL be called - application.ProcessEvent( GenerateSingleTouch( PointState::INTERRUPTED, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::INTERRUPTED, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( true, parentData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::INTERRUPTED, parentData.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( true, rootData.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::INTERRUPTED, rootData.receivedTouch.points[0].state, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::INTERRUPTED, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::INTERRUPTED, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(true, parentData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::INTERRUPTED, parentData.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(true, rootData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::INTERRUPTED, rootData.receivedTouch.points[0].state, TEST_LOCATION); data.Reset(); parentData.Reset(); rootData.Reset(); @@ -1776,8 +1789,8 @@ int UtcDaliTouchEventGetRadius(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); + 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 @@ -1785,19 +1798,19 @@ int UtcDaliTouchEventGetRadius(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data); + actor.TouchedSignal().Connect(&application, functor); // Emit a down signal with an angle - Integration::TouchEvent touchEvent = GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ); - touchEvent.points[ 0 ].SetRadius( 100.0f ); - application.ProcessEvent( touchEvent ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( 100.0f, data.receivedTouch.points[0].radius, TEST_LOCATION ); - DALI_TEST_EQUALS( 100.0f, data.receivedTouch.points[0].ellipseRadius.x, TEST_LOCATION ); - DALI_TEST_EQUALS( 100.0f, data.receivedTouch.points[0].ellipseRadius.y, TEST_LOCATION ); + Integration::TouchEvent touchEvent = GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f)); + touchEvent.points[0].SetRadius(100.0f); + application.ProcessEvent(touchEvent); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(100.0f, data.receivedTouch.points[0].radius, TEST_LOCATION); + DALI_TEST_EQUALS(100.0f, data.receivedTouch.points[0].ellipseRadius.x, TEST_LOCATION); + DALI_TEST_EQUALS(100.0f, data.receivedTouch.points[0].ellipseRadius.y, TEST_LOCATION); END_TEST; } @@ -1807,8 +1820,8 @@ int UtcDaliTouchEventGetEllipseRadius(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); + 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 @@ -1816,19 +1829,19 @@ int UtcDaliTouchEventGetEllipseRadius(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data); + actor.TouchedSignal().Connect(&application, functor); // Emit a down signal with an angle - Integration::TouchEvent touchEvent = GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ); - touchEvent.points[ 0 ].SetRadius( 100.0f, Vector2( 20.0f, 10.0f ) ); - application.ProcessEvent( touchEvent ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( 100.0f, data.receivedTouch.points[0].radius, TEST_LOCATION ); - DALI_TEST_EQUALS( 20.0f, data.receivedTouch.points[0].ellipseRadius.x, TEST_LOCATION ); - DALI_TEST_EQUALS( 10.0f, data.receivedTouch.points[0].ellipseRadius.y, TEST_LOCATION ); + Integration::TouchEvent touchEvent = GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f)); + touchEvent.points[0].SetRadius(100.0f, Vector2(20.0f, 10.0f)); + application.ProcessEvent(touchEvent); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(100.0f, data.receivedTouch.points[0].radius, TEST_LOCATION); + DALI_TEST_EQUALS(20.0f, data.receivedTouch.points[0].ellipseRadius.x, TEST_LOCATION); + DALI_TEST_EQUALS(10.0f, data.receivedTouch.points[0].ellipseRadius.y, TEST_LOCATION); END_TEST; } @@ -1838,8 +1851,8 @@ int UtcDaliTouchEventGetAngle(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); + 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 @@ -1847,17 +1860,17 @@ int UtcDaliTouchEventGetAngle(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data); + actor.TouchedSignal().Connect(&application, functor); // Emit a down signal with an angle - Integration::TouchEvent touchEvent = GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ); - touchEvent.points[ 0 ].SetAngle( Degree( 90.0f ) ); - application.ProcessEvent( touchEvent ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( Degree( 90.0f ), data.receivedTouch.points[0].angle, TEST_LOCATION ); + Integration::TouchEvent touchEvent = GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f)); + touchEvent.points[0].SetAngle(Degree(90.0f)); + application.ProcessEvent(touchEvent); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(Degree(90.0f), data.receivedTouch.points[0].angle, TEST_LOCATION); END_TEST; } @@ -1867,8 +1880,8 @@ int UtcDaliTouchEventGetPressure(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); + 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 @@ -1876,17 +1889,17 @@ int UtcDaliTouchEventGetPressure(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data); + actor.TouchedSignal().Connect(&application, functor); // Emit a down signal with an angle - Integration::TouchEvent touchEvent = GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ); - touchEvent.points[ 0 ].SetPressure( 10.0f ); - application.ProcessEvent( touchEvent ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION ); - DALI_TEST_EQUALS( 10.0f, data.receivedTouch.points[0].pressure, TEST_LOCATION ); + Integration::TouchEvent touchEvent = GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f)); + touchEvent.points[0].SetPressure(10.0f); + application.ProcessEvent(touchEvent); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(10.0f, data.receivedTouch.points[0].pressure, TEST_LOCATION); END_TEST; } @@ -1896,8 +1909,8 @@ int UtcDaliTouchEventUsage(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); + 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 @@ -1905,15 +1918,13 @@ int UtcDaliTouchEventUsage(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); - + SignalData data; + TouchEventFunctor functor(data); + actor.TouchedSignal().Connect(&application, functor); // Emit a down signal with an angle - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); END_TEST; } @@ -1923,8 +1934,8 @@ int UtcDaliTouchEventGetDeviceAPINegative(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); + 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 @@ -1932,20 +1943,20 @@ int UtcDaliTouchEventGetDeviceAPINegative(void) application.Render(); // Connect to actor's touched signal - HandleData handleData; - TouchEventHandleFunctor functor( handleData ); - actor.TouchedSignal().Connect( &application, functor ); + HandleData handleData; + TouchEventHandleFunctor functor(handleData); + actor.TouchedSignal().Connect(&application, functor); - Vector2 screenCoordinates( 10.0f, 10.0f ); + Vector2 screenCoordinates(10.0f, 10.0f); Vector2 localCoordinates; - actor.ScreenToLocal( localCoordinates.x, localCoordinates.y, screenCoordinates.x, screenCoordinates.y ); + actor.ScreenToLocal(localCoordinates.x, localCoordinates.y, screenCoordinates.x, screenCoordinates.y); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, screenCoordinates ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, screenCoordinates)); TouchEvent data = handleData.receivedTouchHandle; - DALI_TEST_EQUALS( data.GetDeviceClass( -1 ), Device::Class::NONE, TEST_LOCATION ); - DALI_TEST_EQUALS( data.GetDeviceSubclass( -1 ), Device::Subclass::NONE, TEST_LOCATION ); + DALI_TEST_EQUALS(data.GetDeviceClass(-1), Device::Class::NONE, TEST_LOCATION); + DALI_TEST_EQUALS(data.GetDeviceSubclass(-1), Device::Subclass::NONE, TEST_LOCATION); END_TEST; } @@ -1954,8 +1965,8 @@ int UtcDaliTouchEventGetMouseButtonPositive(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); + 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 @@ -1963,17 +1974,17 @@ int UtcDaliTouchEventGetMouseButtonPositive(void) application.Render(); // Connect to actor's touched signal - HandleData handleData; - TouchEventHandleFunctor functor( handleData ); - actor.TouchedSignal().Connect( &application, functor ); + HandleData handleData; + TouchEventHandleFunctor functor(handleData); + actor.TouchedSignal().Connect(&application, functor); // Emit a down signal with MouseButton - Integration::TouchEvent touchEvent = GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ); - touchEvent.points[ 0 ].SetMouseButton( static_cast< MouseButton::Type >( 3 ) ); - application.ProcessEvent( touchEvent ); + Integration::TouchEvent touchEvent = GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f)); + touchEvent.points[0].SetMouseButton(static_cast(3)); + application.ProcessEvent(touchEvent); TouchEvent data = handleData.receivedTouchHandle; - DALI_TEST_EQUALS( data.GetMouseButton( 0 ), MouseButton::SECONDARY, TEST_LOCATION ); + DALI_TEST_EQUALS(data.GetMouseButton(0), MouseButton::SECONDARY, TEST_LOCATION); END_TEST; } @@ -1983,8 +1994,8 @@ int UtcDaliTouchEventGetMouseButtonNagative(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); + 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 @@ -1992,18 +2003,18 @@ int UtcDaliTouchEventGetMouseButtonNagative(void) application.Render(); // Connect to actor's touched signal - HandleData handleData; - TouchEventHandleFunctor functor( handleData ); - actor.TouchedSignal().Connect( &application, functor ); + HandleData handleData; + TouchEventHandleFunctor functor(handleData); + actor.TouchedSignal().Connect(&application, functor); // Emit a down signal with MouseButton - Integration::TouchEvent touchEvent = GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ); - touchEvent.points[ 0 ].SetMouseButton( static_cast< MouseButton::Type >( 2 ) ); - application.ProcessEvent( touchEvent ); + Integration::TouchEvent touchEvent = GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f)); + touchEvent.points[0].SetMouseButton(static_cast(2)); + application.ProcessEvent(touchEvent); TouchEvent data = handleData.receivedTouchHandle; - DALI_TEST_EQUALS( data.GetMouseButton( 0 ), MouseButton::TERTIARY, TEST_LOCATION ); - DALI_TEST_EQUALS( data.GetMouseButton( 3 ), MouseButton::INVALID, TEST_LOCATION ); + DALI_TEST_EQUALS(data.GetMouseButton(0), MouseButton::TERTIARY, TEST_LOCATION); + DALI_TEST_EQUALS(data.GetMouseButton(3), MouseButton::INVALID, TEST_LOCATION); END_TEST; } @@ -2013,8 +2024,8 @@ int UtcDaliTouchEventCapturePropertySet(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); + 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 @@ -2022,57 +2033,196 @@ int UtcDaliTouchEventCapturePropertySet(void) application.Render(); // Connect to actor's touched signal - SignalData data; - TouchEventFunctor functor( data ); - actor.TouchedSignal().Connect( &application, functor ); + SignalData data; + TouchEventFunctor functor(data); + actor.TouchedSignal().Connect(&application, functor); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::STARTED, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::STARTED, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); // Now motion outside of actor, we should not receive the event - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2( 110.0f, 110.0f ) ) ); - DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(110.0f, 110.0f))); + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); data.Reset(); // Up event, should receive an interrupted - application.ProcessEvent( GenerateSingleTouch( PointState::FINISHED, Vector2( 110.0f, 110.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( data.receivedTouch.GetPoint(0).state, PointState::INTERRUPTED, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::FINISHED, Vector2(110.0f, 110.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(data.receivedTouch.GetPoint(0).state, PointState::INTERRUPTED, TEST_LOCATION); // Now set the capture property - actor.SetProperty( DevelActor::Property::CAPTURE_ALL_TOUCH_AFTER_START, true); + actor.SetProperty(DevelActor::Property::CAPTURE_ALL_TOUCH_AFTER_START, true); // Emit a down signal - application.ProcessEvent( GenerateSingleTouch( PointState::STARTED, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::STARTED, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); // Now motion outside of actor, we now SHOULD receive the event - application.ProcessEvent( GenerateSingleTouch( PointState::MOTION, Vector2( 110.0f, 110.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(110.0f, 110.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); // Up event, we should receive it again, but as ended rather than interrupted - application.ProcessEvent( GenerateSingleTouch( PointState::FINISHED, Vector2( 110.0f, 110.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); - DALI_TEST_EQUALS( data.receivedTouch.GetPoint(0).state, PointState::FINISHED, TEST_LOCATION ); + application.ProcessEvent(GenerateSingleTouch(PointState::FINISHED, Vector2(110.0f, 110.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(data.receivedTouch.GetPoint(0).state, PointState::FINISHED, TEST_LOCATION); END_TEST; } int UtcDaliTouchEventIntegNewTouchEvent(void) { - uint32_t timestamp = 92858u; - TouchPoint tp(1, PointState::STARTED, 34.4f, 123.89f, 5.0f, 7.0f); + uint32_t timestamp = 92858u; + TouchPoint tp(1, PointState::STARTED, 34.4f, 123.89f, 5.0f, 7.0f); Dali::TouchEvent touchEvent = Integration::NewTouchEvent(timestamp, tp); DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION); - DALI_TEST_EQUALS(touchEvent.GetState(0), PointState::STARTED, TEST_LOCATION ); - DALI_TEST_EQUALS(touchEvent.GetLocalPosition(0), Vector2(5.0f, 7.0f), TEST_LOCATION ); - DALI_TEST_EQUALS(touchEvent.GetScreenPosition(0), Vector2(34.4f, 123.89f), TEST_LOCATION ); + DALI_TEST_EQUALS(touchEvent.GetState(0), PointState::STARTED, TEST_LOCATION); + DALI_TEST_EQUALS(touchEvent.GetLocalPosition(0), Vector2(5.0f, 7.0f), TEST_LOCATION); + DALI_TEST_EQUALS(touchEvent.GetScreenPosition(0), Vector2(34.4f, 123.89f), TEST_LOCATION); + + END_TEST; +} + +int UtcDaliTouchEventIntercept(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); + application.GetScene().Add(parent); + Actor actor = Actor::New(); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + parent.Add(actor); + + // Render and notify + application.SendNotification(); + application.Render(); + + // Connect to actor's touched signal + SignalData data; + TouchEventFunctor functor(data, false /* Do not consume */); + actor.TouchedSignal().Connect(&application, functor); + + // Connect to parent's touched signal + SignalData parentData; + TouchEventFunctor parentFunctor(parentData, false /* Do not consume */); + parent.TouchedSignal().Connect(&application, parentFunctor); + + // Emit a down signal + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); + + data.Reset(); + parentData.Reset(); + + // Connect to parent's intercept touched signal + SignalData interceptData; + TouchEventFunctor interceptFunctor(interceptData, true /* Do intercept */); + Dali::DevelActor::InterceptTouchedSignal(parent).Connect(&application, interceptFunctor); + + // Emit a down signal + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f))); + + // The actor gets interrupted. Because touch is intercepted by parent. + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::INTERRUPTED, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_EQUALS(true, interceptData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, interceptData.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(actor == interceptData.receivedTouch.points[0].hitActor); + DALI_TEST_CHECK(parent == interceptData.touchedActor); + DALI_TEST_EQUALS(true, parentData.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, parentData.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(actor == parentData.receivedTouch.points[0].hitActor); + DALI_TEST_CHECK(parent == parentData.touchedActor); + data.Reset(); + parentData.Reset(); + + END_TEST; +} + +int UtcDaliTouchAreaOffset(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); + + application.GetScene().Add(actor); + + // Render and notify + application.SendNotification(); + application.Render(); + + // Connect to actor's touched signal + SignalData data; + TouchEventFunctor functor(data, false /* Do not consume */); + actor.TouchedSignal().Connect(&application, functor); + + // Emit a down signal + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(110.0f, 110.0f))); + // The actor touched signal is not called because the touch area is outside actor. + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); + data.Reset(); + + // set a bigger touch area + actor.SetProperty(DevelActor::Property::TOUCH_AREA_OFFSET, Rect(-70, 70, 70, -70)); // left, right, bottom, top + + // Render and notify + application.SendNotification(); + application.Render(); + + // Emit a down signal + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(150.0f, 150.0f))); + // The actor touched signal is called because the touch area is inside touchArea. + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(actor == data.receivedTouch.points[0].hitActor); + data.Reset(); + + // set a offset touch area + actor.SetProperty(DevelActor::Property::TOUCH_AREA_OFFSET, Rect(50, 100, -50, 0)); // left, right, bottom, top + + // Render and notify + application.SendNotification(); + application.Render(); + + // Emit a down signal + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(190.0f, 25.0f))); + // The actor touched signal is called because the touch area is inside touchArea. + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(actor == data.receivedTouch.points[0].hitActor); + data.Reset(); + + // set a smaller touch area + actor.SetProperty(DevelActor::Property::TOUCH_AREA_OFFSET, Rect(50, 0, 0, 50)); + + // Render and notify + application.SendNotification(); + application.Render(); + + // Emit a down signal + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(40.0f, 40.0f))); + // The actor touched signal is not called because the touch area is outside touchArea. + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); + data.Reset(); + + // Emit a down signal + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(90.0f, 90.0f))); + // The actor touched signal is called because the touch area is inside touchArea. + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION); + DALI_TEST_CHECK(actor == data.receivedTouch.points[0].hitActor); + data.Reset(); END_TEST; }