X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali%2Futc-Dali-TapGestureRecognizer.cpp;h=e33a21c07f0b99cb1e4861eb8a2b604d0d6060ca;hb=596dfee38d336a562d1aeb7a889988d9de4c7eef;hp=f1669c2af72677d4d9872b0347de2b9ba2e7d3ac;hpb=18d0590e199b1bd47d5335eb9f196ec268b91466;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/automated-tests/src/dali/utc-Dali-TapGestureRecognizer.cpp b/automated-tests/src/dali/utc-Dali-TapGestureRecognizer.cpp index f1669c2..e33a21c 100644 --- a/automated-tests/src/dali/utc-Dali-TapGestureRecognizer.cpp +++ b/automated-tests/src/dali/utc-Dali-TapGestureRecognizer.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,32 +15,32 @@ * */ -#include - -#include -#include +#include #include +#include #include -#include +#include +#include +#include using namespace Dali; /////////////////////////////////////////////////////////////////////////////// namespace { - struct SignalData { SignalData() : functorCalled(false), voidFunctorCalled(false), receivedGesture() - {} + { + } void Reset() { - functorCalled = false; + functorCalled = false; voidFunctorCalled = false; receivedGesture.Reset(); @@ -48,22 +48,25 @@ struct SignalData tappedActor.Reset(); } - bool functorCalled; - bool voidFunctorCalled; + bool functorCalled; + bool voidFunctorCalled; TapGesture receivedGesture; - Actor tappedActor; + Actor tappedActor; }; // Functor that sets the data when called struct GestureReceivedFunctor { - GestureReceivedFunctor(SignalData& data) : signalData(data) { } + GestureReceivedFunctor(SignalData& data) + : signalData(data) + { + } void operator()(Actor actor, const TapGesture& tap) { - signalData.functorCalled = true; + signalData.functorCalled = true; signalData.receivedGesture = tap; - signalData.tappedActor = actor; + signalData.tappedActor = actor; } void operator()() @@ -74,41 +77,38 @@ struct GestureReceivedFunctor SignalData& signalData; }; - -Integration::TouchEvent GenerateSingleTouch( PointState::Type state, const Vector2& screenPosition, uint32_t time ) +Integration::TouchEvent GenerateSingleTouch(PointState::Type state, const Vector2& screenPosition, uint32_t time) { Integration::TouchEvent touchEvent; - Integration::Point point; - point.SetState( state ); - point.SetScreenPosition( screenPosition ); - point.SetDeviceClass( Device::Class::TOUCH ); - point.SetDeviceSubclass( Device::Subclass::NONE ); - touchEvent.points.push_back( point ); + Integration::Point point; + point.SetState(state); + point.SetScreenPosition(screenPosition); + point.SetDeviceClass(Device::Class::TOUCH); + point.SetDeviceSubclass(Device::Subclass::NONE); + touchEvent.points.push_back(point); touchEvent.time = time; return touchEvent; } -Integration::TouchEvent GenerateDoubleTouch( PointState::Type state, const Vector2& screenPositionA, const Vector2& screenPositionB, uint32_t time ) +Integration::TouchEvent GenerateDoubleTouch(PointState::Type state, const Vector2& screenPositionA, const Vector2& screenPositionB, uint32_t time) { Integration::TouchEvent touchEvent; - Integration::Point point; - point.SetState( state ); - point.SetScreenPosition( screenPositionA ); - point.SetDeviceClass( Device::Class::TOUCH ); - point.SetDeviceSubclass( Device::Subclass::NONE ); - touchEvent.points.push_back( point ); - point.SetScreenPosition( screenPositionB ); - touchEvent.points.push_back( point ); + Integration::Point point; + point.SetState(state); + point.SetScreenPosition(screenPositionA); + point.SetDeviceClass(Device::Class::TOUCH); + point.SetDeviceSubclass(Device::Subclass::NONE); + touchEvent.points.push_back(point); + point.SetScreenPosition(screenPositionB); + touchEvent.points.push_back(point); touchEvent.time = time; return touchEvent; } - -} // anon namespace +} // namespace /////////////////////////////////////////////////////////////////////////////// - int UtcDaliTapGestureRecognizerBasic(void) { TestApplication application; @@ -116,8 +116,8 @@ int UtcDaliTapGestureRecognizerBasic(void) TapGestureDetector detector = TapGestureDetector::New(); 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 @@ -126,13 +126,13 @@ int UtcDaliTapGestureRecognizerBasic(void) detector.Attach(actor); - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); detector.DetectedSignal().Connect(&application, functor); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 20.0f, 20.0f ), 150 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(20.0f, 20.0f), 150)); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 20.0f, 20.0f ), 200 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(20.0f, 20.0f), 200)); application.SendNotification(); @@ -141,7 +141,6 @@ int UtcDaliTapGestureRecognizerBasic(void) END_TEST; } - int UtcDaliTapGestureRecognizerGapTooLong(void) { TestApplication application; @@ -149,8 +148,8 @@ int UtcDaliTapGestureRecognizerGapTooLong(void) TapGestureDetector detector = TapGestureDetector::New(); 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 @@ -159,13 +158,13 @@ int UtcDaliTapGestureRecognizerGapTooLong(void) detector.Attach(actor); - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); detector.DetectedSignal().Connect(&application, functor); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 20.0f, 20.0f ), 150 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(20.0f, 20.0f), 150)); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 20.0f, 20.0f ), 651 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(20.0f, 20.0f), 651)); application.SendNotification(); @@ -174,7 +173,6 @@ int UtcDaliTapGestureRecognizerGapTooLong(void) END_TEST; } - int UtcDaliTapGestureRecognizerInterrupted(void) { TestApplication application; @@ -182,8 +180,8 @@ int UtcDaliTapGestureRecognizerInterrupted(void) TapGestureDetector detector = TapGestureDetector::New(); 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 @@ -192,15 +190,15 @@ int UtcDaliTapGestureRecognizerInterrupted(void) detector.Attach(actor); - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); detector.DetectedSignal().Connect(&application, functor); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 20.0f, 20.0f ), 150 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(20.0f, 20.0f), 150)); - application.ProcessEvent( GenerateSingleTouch( PointState::INTERRUPTED, Vector2( 20.0f, 20.0f ), 175 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::INTERRUPTED, Vector2(20.0f, 20.0f), 175)); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 20.0f, 20.0f ), 200 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(20.0f, 20.0f), 200)); application.SendNotification(); @@ -209,16 +207,16 @@ int UtcDaliTapGestureRecognizerInterrupted(void) END_TEST; } - int UtcDaliTapGestureRecognizerMoveTooFar(void) { TestApplication application; TapGestureDetector detector = TapGestureDetector::New(); + detector.SetMaximumTapsRequired(2); 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 @@ -227,22 +225,22 @@ int UtcDaliTapGestureRecognizerMoveTooFar(void) detector.Attach(actor); - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); detector.DetectedSignal().Connect(&application, functor); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 20.0f, 20.0f ), 150 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(20.0f, 20.0f), 150)); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 50.0f, 20.0f ), 200 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(50.0f, 20.0f), 200)); application.SendNotification(); + application.GetPlatform().TriggerTimer(); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); END_TEST; } - int UtcDaliTapGestureRecognizerStartDouble(void) { TestApplication application; @@ -250,8 +248,8 @@ int UtcDaliTapGestureRecognizerStartDouble(void) TapGestureDetector detector = TapGestureDetector::New(); 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 @@ -260,13 +258,13 @@ int UtcDaliTapGestureRecognizerStartDouble(void) detector.Attach(actor); - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); detector.DetectedSignal().Connect(&application, functor); - application.ProcessEvent( GenerateDoubleTouch( PointState::DOWN, Vector2( 20.0f, 20.0f ), Vector2( 25.0f, 25.0f ), 150 ) ); + application.ProcessEvent(GenerateDoubleTouch(PointState::DOWN, Vector2(20.0f, 20.0f), Vector2(25.0f, 25.0f), 150)); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 20.0f, 20.0f ), 200 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(20.0f, 20.0f), 200)); application.SendNotification(); @@ -275,7 +273,6 @@ int UtcDaliTapGestureRecognizerStartDouble(void) END_TEST; } - int UtcDaliTapGestureRecognizerEndDouble(void) { TestApplication application; @@ -283,8 +280,8 @@ int UtcDaliTapGestureRecognizerEndDouble(void) TapGestureDetector detector = TapGestureDetector::New(); 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 @@ -293,15 +290,15 @@ int UtcDaliTapGestureRecognizerEndDouble(void) detector.Attach(actor); - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); detector.DetectedSignal().Connect(&application, functor); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 20.0f, 20.0f ), 150 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(20.0f, 20.0f), 150)); - application.ProcessEvent( GenerateDoubleTouch( PointState::DOWN, Vector2( 20.0f, 20.0f ), Vector2( 25.0f, 25.0f ), 200 ) ); + application.ProcessEvent(GenerateDoubleTouch(PointState::DOWN, Vector2(20.0f, 20.0f), Vector2(25.0f, 25.0f), 200)); - application.ProcessEvent( GenerateDoubleTouch( PointState::UP, Vector2( 20.0f, 20.0f ), Vector2( 25.0f, 25.0f ), 200 ) ); + application.ProcessEvent(GenerateDoubleTouch(PointState::UP, Vector2(20.0f, 20.0f), Vector2(25.0f, 25.0f), 200)); application.SendNotification(); @@ -310,7 +307,6 @@ int UtcDaliTapGestureRecognizerEndDouble(void) END_TEST; } - int UtcDaliTapGestureRecognizerDoubleTap(void) { TestApplication application; @@ -318,8 +314,8 @@ int UtcDaliTapGestureRecognizerDoubleTap(void) TapGestureDetector detector = TapGestureDetector::New(2); 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 @@ -328,21 +324,21 @@ int UtcDaliTapGestureRecognizerDoubleTap(void) detector.Attach(actor); - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); detector.DetectedSignal().Connect(&application, functor); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 20.0f, 20.0f ), 150 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(20.0f, 20.0f), 150)); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 20.0f, 20.0f ), 200 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(20.0f, 20.0f), 200)); application.SendNotification(); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 20.0f, 20.0f ), 250 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(20.0f, 20.0f), 250)); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 20.0f, 20.0f ), 300 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(20.0f, 20.0f), 300)); application.SendNotification(); @@ -351,7 +347,6 @@ int UtcDaliTapGestureRecognizerDoubleTap(void) END_TEST; } - int UtcDaliTapGestureRecognizerDoubleTapMoveTooFar(void) { TestApplication application; @@ -359,8 +354,8 @@ int UtcDaliTapGestureRecognizerDoubleTapMoveTooFar(void) TapGestureDetector detector = TapGestureDetector::New(2); 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 @@ -369,33 +364,33 @@ int UtcDaliTapGestureRecognizerDoubleTapMoveTooFar(void) detector.Attach(actor); - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); detector.DetectedSignal().Connect(&application, functor); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 20.0f, 20.0f ), 150 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(20.0f, 20.0f), 150)); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 20.0f, 20.0f ), 200 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(20.0f, 20.0f), 200)); application.SendNotification(); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 20.0f, 50.0f ), 250 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(20.0f, 50.0f), 250)); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 20.0f, 50.0f ), 300 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(20.0f, 50.0f), 300)); application.SendNotification(); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 50.0f, 50.0f ), 450 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(50.0f, 50.0f), 450)); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 50.0f, 50.0f ), 500 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(50.0f, 50.0f), 500)); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 50.0f, 50.0f ), 550 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(50.0f, 50.0f), 550)); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 50.0f, 50.0f ), 600 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(50.0f, 50.0f), 600)); application.SendNotification(); @@ -404,7 +399,6 @@ int UtcDaliTapGestureRecognizerDoubleTapMoveTooFar(void) END_TEST; } - int UtcDaliTapGestureRecognizerDoubleTapWaitTooLong(void) { TestApplication application; @@ -412,8 +406,8 @@ int UtcDaliTapGestureRecognizerDoubleTapWaitTooLong(void) TapGestureDetector detector = TapGestureDetector::New(2); 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 @@ -422,33 +416,33 @@ int UtcDaliTapGestureRecognizerDoubleTapWaitTooLong(void) detector.Attach(actor); - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); detector.DetectedSignal().Connect(&application, functor); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 20.0f, 20.0f ), 150 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(20.0f, 20.0f), 150)); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 20.0f, 20.0f ), 200 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(20.0f, 20.0f), 200)); application.SendNotification(); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 20.0f, 20.0f ), 650 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(20.0f, 20.0f), 650)); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 20.0f, 20.0f ), 750 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(20.0f, 20.0f), 750)); application.SendNotification(); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 50.0f, 50.0f ), 950 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(50.0f, 50.0f), 950)); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 50.0f, 50.0f ), 1000 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(50.0f, 50.0f), 1000)); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 50.0f, 50.0f ), 1050 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(50.0f, 50.0f), 1050)); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 50.0f, 50.0f ), 1000 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(50.0f, 50.0f), 1000)); application.SendNotification(); @@ -457,20 +451,19 @@ int UtcDaliTapGestureRecognizerDoubleTapWaitTooLong(void) END_TEST; } - int UtcDaliTapGestureRecognizerMultipleDetectors(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); Actor actor2 = Actor::New(); - actor2.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor2.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); - actor2.SetProperty( Actor::Property::POSITION_X, 100.0f); + actor2.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor2.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + actor2.SetProperty(Actor::Property::POSITION_X, 100.0f); application.GetScene().Add(actor2); // Render and notify @@ -483,41 +476,147 @@ int UtcDaliTapGestureRecognizerMultipleDetectors(void) TapGestureDetector detector2 = TapGestureDetector::New(2); detector2.Attach(actor2); - SignalData data; + SignalData data; GestureReceivedFunctor functor(data); detector.DetectedSignal().Connect(&application, functor); - SignalData data2; + SignalData data2; GestureReceivedFunctor functor2(data2); detector2.DetectedSignal().Connect(&application, functor2); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 20.0f, 20.0f ), 150 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(20.0f, 20.0f), 150)); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 20.0f, 20.0f ), 200 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(20.0f, 20.0f), 200)); application.SendNotification(); + application.GetPlatform().TriggerTimer(); DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); DALI_TEST_EQUALS(true, actor == data.tappedActor, TEST_LOCATION); data.Reset(); DALI_TEST_EQUALS(false, data2.functorCalled, TEST_LOCATION); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 120.0f, 20.0f ), 250 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(120.0f, 20.0f), 250)); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 120.0f, 20.0f ), 300 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(120.0f, 20.0f), 300)); application.SendNotification(); DALI_TEST_EQUALS(false, data2.functorCalled, TEST_LOCATION); - application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 120.0f, 20.0f ), 350 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(120.0f, 20.0f), 350)); - application.ProcessEvent( GenerateSingleTouch( PointState::UP, Vector2( 120.0f, 20.0f ), 400 ) ); + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(120.0f, 20.0f), 400)); application.SendNotification(); + application.GetPlatform().TriggerTimer(); DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); DALI_TEST_EQUALS(true, data2.functorCalled, TEST_LOCATION); END_TEST; } + +int UtcDaliTapGestureRecognizerTripleTap(void) +{ + TestApplication application; + + TapGestureDetector detector = TapGestureDetector::New(3); + + 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(); + + detector.Attach(actor); + + SignalData data; + GestureReceivedFunctor functor(data); + detector.DetectedSignal().Connect(&application, functor); + + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(20.0f, 20.0f), 150)); + + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(20.0f, 20.0f), 200)); + + application.SendNotification(); + + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); + + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(20.0f, 20.0f), 250)); + + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(20.0f, 20.0f), 300)); + + application.SendNotification(); + + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); + + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(20.0f, 20.0f), 350)); + + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(20.0f, 20.0f), 400)); + + application.SendNotification(); + + DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); + + END_TEST; +} + +int UtcDaliTapGestureSetMaximumAllowedTime(void) +{ + TestApplication application; + + TapGestureDetector detector = TapGestureDetector::New(2); + + 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(); + + detector.Attach(actor); + + try + { + Integration::SetTapMaximumAllowedTime(0); + } + catch(...) + { + DALI_TEST_CHECK(false); // Should not get here + } + + // Reduce the maximum allowable time. 500 -> 100 + Integration::SetTapMaximumAllowedTime(100); + + SignalData data; + GestureReceivedFunctor functor(data); + detector.DetectedSignal().Connect(&application, functor); + + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(20.0f, 20.0f), 150)); + + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(20.0f, 20.0f), 200)); + + application.SendNotification(); + + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); + + application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(20.0f, 20.0f), 250)); + + application.ProcessEvent(GenerateSingleTouch(PointState::UP, Vector2(20.0f, 20.0f), 300)); + + application.SendNotification(); + + // The double tap fails because the maximum allowed time has been exceeded + DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION); + + // reset maximum allowed time + Integration::SetTapMaximumAllowedTime(500); + + END_TEST; +}