{
GestureReceivedFunctor(SignalData& data) : signalData(data) { }
- void operator()(Actor actor, TapGesture tap)
+ void operator()(Actor actor, const TapGesture& tap)
{
signalData.functorCalled = true;
signalData.receivedGesture = tap;
{
UnstageActorFunctor( SignalData& data ) : GestureReceivedFunctor( data ) { }
- void operator()(Actor actor, TapGesture tap)
+ void operator()(Actor actor, const TapGesture& tap)
{
GestureReceivedFunctor::operator()( actor, tap );
Stage::GetCurrent().Remove( actor );
END_TEST;
}
+int UtcDaliTapGestureDetectorCopyConstructorP(void)
+{
+ TestApplication application;
+
+ TapGestureDetector detector = TapGestureDetector::New();
+
+ TapGestureDetector copy( detector );
+ DALI_TEST_CHECK( detector );
+ END_TEST;
+}
+
+int UtcDaliTapGestureDetectorAssignmentOperatorP(void)
+{
+ TestApplication application;
+
+ TapGestureDetector detector = TapGestureDetector::New();;
+
+ TapGestureDetector assign;
+ assign = detector;
+ DALI_TEST_CHECK( detector );
+
+ DALI_TEST_CHECK( detector == assign );
+ END_TEST;
+}
int UtcDaliTapGestureDetectorNew(void)
{
TapGestureDetector detector = TapGestureDetector::New();
DALI_TEST_CHECK(detector);
- DALI_TEST_EQUALS(1u, detector.GetTapsRequired(), TEST_LOCATION);
- DALI_TEST_EQUALS(1u, detector.GetTouchesRequired(), TEST_LOCATION);
+ DALI_TEST_EQUALS(1u, detector.GetMinimumTapsRequired(), TEST_LOCATION);
+ DALI_TEST_EQUALS(1u, detector.GetMaximumTapsRequired(), TEST_LOCATION);
- TapGestureDetector detector2 = TapGestureDetector::New(5u, 5u);
+ TapGestureDetector detector2 = TapGestureDetector::New( 5u );
DALI_TEST_CHECK(detector2);
- DALI_TEST_EQUALS(5u, detector2.GetTapsRequired(), TEST_LOCATION);
- DALI_TEST_EQUALS(5u, detector2.GetTouchesRequired(), TEST_LOCATION);
+ DALI_TEST_EQUALS(5u, detector2.GetMinimumTapsRequired(), TEST_LOCATION);
+ DALI_TEST_EQUALS(5u, detector2.GetMaximumTapsRequired(), TEST_LOCATION);
//Scoped test to test destructor
{
TapGestureDetector detector = TapGestureDetector::New();
- unsigned int taps = 3;
+ const unsigned int minTaps = 3;
+ const unsigned int maxTaps = 7;
- DALI_TEST_CHECK(taps != detector.GetTapsRequired());
+ DALI_TEST_CHECK( minTaps != detector.GetMinimumTapsRequired() );
+ DALI_TEST_CHECK( maxTaps != detector.GetMaximumTapsRequired() );
- detector.SetTapsRequired(taps);
+ detector.SetMinimumTapsRequired( minTaps );
+ detector.SetMaximumTapsRequired( maxTaps );
- DALI_TEST_EQUALS(taps, detector.GetTapsRequired(), TEST_LOCATION);
+ DALI_TEST_EQUALS( minTaps, detector.GetMinimumTapsRequired(), TEST_LOCATION );
+ DALI_TEST_EQUALS( maxTaps, detector.GetMaximumTapsRequired(), TEST_LOCATION );
// Attach an actor and change the required touches
detector.Attach(actor);
detector.DetectedSignal().Connect( &application, functor );
+ // Ensure signal is emitted if minimum taps received
+ application.ProcessEvent(GenerateTap(Gesture::Possible, minTaps, 1u, Vector2(50.0f, 50.0f)));
+ application.ProcessEvent(GenerateTap(Gesture::Started, minTaps, 1u, Vector2(50.0f, 50.0f)));
+ DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
+ DALI_TEST_EQUALS( minTaps, data.receivedGesture.numberOfTaps, TEST_LOCATION );
+ data.Reset();
+
+ // Ensure signal is emitted if maximum taps received
+ application.ProcessEvent(GenerateTap(Gesture::Possible, maxTaps, 1u, Vector2(50.0f, 50.0f)));
+ application.ProcessEvent(GenerateTap(Gesture::Started, maxTaps, 1u, Vector2(50.0f, 50.0f)));
+ DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
+ DALI_TEST_EQUALS( maxTaps, data.receivedGesture.numberOfTaps, TEST_LOCATION );
+ data.Reset();
+
+ // Ensure signal is NOT emitted if outside the range
+ application.ProcessEvent(GenerateTap(Gesture::Possible, minTaps - 1, 1u, Vector2(50.0f, 50.0f)));
+ application.ProcessEvent(GenerateTap(Gesture::Started, minTaps - 1, 1u, Vector2(50.0f, 50.0f)));
+ DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION );
+ data.Reset();
+ application.ProcessEvent(GenerateTap(Gesture::Possible, maxTaps + 1, 1u, Vector2(50.0f, 50.0f)));
+ application.ProcessEvent(GenerateTap(Gesture::Started, maxTaps + 1, 1u, Vector2(50.0f, 50.0f)));
+ DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION );
+ data.Reset();
+
TestGestureManager& gestureManager = application.GetGestureManager();
gestureManager.Initialize();
- detector.SetTapsRequired(4);
+ detector.SetMinimumTapsRequired(4);
// Gesture detection should have been updated only
DALI_TEST_EQUALS(true, gestureManager.WasCalled(TestGestureManager::UpdateType), TEST_LOCATION);
// Reset values
gestureManager.Initialize();
+ detector.SetMaximumTapsRequired(maxTaps);
+
+ // Gesture detection should NOT have been updated
+ DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::UpdateType), TEST_LOCATION);
+ DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::RegisterType), TEST_LOCATION);
+ DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::UnregisterType), TEST_LOCATION);
+
+ // Reset values
+ gestureManager.Initialize();
+
// Create a second gesture detector that requires even less maximum touches
TapGestureDetector secondDetector = TapGestureDetector::New();
secondDetector.Attach(actor);
DALI_TEST_EQUALS(true, gestureManager.WasCalled(TestGestureManager::UpdateType), TEST_LOCATION);
DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::RegisterType), TEST_LOCATION);
DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::UnregisterType), TEST_LOCATION);
- END_TEST;
-}
-int UtcDaliTapGestureGetTapsRequired(void)
-{
- TestApplication application;
+ // Reset values
+ gestureManager.Initialize();
+
+ // Delete the second detector so that our detection is updated again
+ secondDetector.Reset();
+ DALI_TEST_EQUALS(true, gestureManager.WasCalled(TestGestureManager::UpdateType), TEST_LOCATION);
+ DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::RegisterType), TEST_LOCATION);
+ DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::UnregisterType), TEST_LOCATION);
+
+ // Set the minimum to be greater than the maximum, should Assert
+ try
+ {
+ detector.SetMinimumTapsRequired( maxTaps );
+ detector.SetMaximumTapsRequired( minTaps );
+ DALI_TEST_CHECK( false ); // Should not get here
+ }
+ catch ( DaliException& e )
+ {
+ DALI_TEST_CHECK( true );
+ }
- TapGestureDetector detector = TapGestureDetector::New();
- DALI_TEST_EQUALS(1u, detector.GetTapsRequired(), TEST_LOCATION);
END_TEST;
}
-int UtcDaliTapGestureSetTouchesRequired(void)
+int UtcDaliTapGestureSetTapsRequiredMinMaxCheck(void)
{
TestApplication application;
- TapGestureDetector detector = TapGestureDetector::New();
-
- unsigned int max = 3;
-
- DALI_TEST_CHECK(max != detector.GetTouchesRequired());
-
- detector.SetTouchesRequired(max);
-
- DALI_TEST_EQUALS(max, detector.GetTouchesRequired(), TEST_LOCATION);
-
- // Attach an actor and change the maximum touches
+ // Attach an actor and change the required touches
Actor actor = Actor::New();
actor.SetSize(100.0f, 100.0f);
application.SendNotification();
application.Render();
- SignalData data;
- GestureReceivedFunctor functor(data);
-
- detector.Attach(actor);
- detector.DetectedSignal().Connect( &application, functor );
-
- TestGestureManager& gestureManager = application.GetGestureManager();
- gestureManager.Initialize();
-
- detector.SetTouchesRequired(4);
+ // Set the minimum to be greater than the maximum, should Assert
- // Gesture detection should have been updated only
- DALI_TEST_EQUALS(true, gestureManager.WasCalled(TestGestureManager::UpdateType), TEST_LOCATION);
- DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::RegisterType), TEST_LOCATION);
- DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::UnregisterType), TEST_LOCATION);
-
- // Reset values
- gestureManager.Initialize();
-
- // Create a second gesture detector that requires even less maximum touches
- TapGestureDetector secondDetector = TapGestureDetector::New();
- secondDetector.Attach(actor);
+ try
+ {
+ TapGestureDetector detector = TapGestureDetector::New();
+ detector.SetMinimumTapsRequired( 7u );
+ detector.SetMaximumTapsRequired( 3u );
+ detector.Attach(actor);
+ DALI_TEST_CHECK( false ); // Should not get here
+ }
+ catch ( DaliException& e )
+ {
+ DALI_TEST_CHECK( true );
+ }
- // Gesture detection should have been updated
- DALI_TEST_EQUALS(true, gestureManager.WasCalled(TestGestureManager::UpdateType), TEST_LOCATION);
- DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::RegisterType), TEST_LOCATION);
- DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::UnregisterType), TEST_LOCATION);
END_TEST;
}
-int UtcDaliTapGestureGetTouchesRequired(void)
+int UtcDaliTapGestureGetTapsRequired(void)
{
TestApplication application;
TapGestureDetector detector = TapGestureDetector::New();
- DALI_TEST_EQUALS(1u, detector.GetTouchesRequired(), TEST_LOCATION);
+ DALI_TEST_EQUALS(1u, detector.GetMinimumTapsRequired(), TEST_LOCATION);
+ DALI_TEST_EQUALS(1u, detector.GetMaximumTapsRequired(), TEST_LOCATION);
END_TEST;
}
Actor actor = Actor::New();
actor.SetSize(100.0f, 100.0f);
- actor.SetRotation(Dali::Degree(90.0f), Vector3::ZAXIS);
+ actor.SetOrientation(Dali::Degree(90.0f), Vector3::ZAXIS);
Stage::GetCurrent().Add(actor);
// Render and notify
DALI_TEST_EQUALS( Vector2(5.0f, 5.0f), data.receivedGesture.screenPoint, 0.1, TEST_LOCATION);
// Rotate actor again and render
- actor.SetRotation(Dali::Degree(180.0f), Vector3::ZAXIS);
+ actor.SetOrientation(Dali::Degree(180.0f), Vector3::ZAXIS);
application.SendNotification();
application.Render();
DALI_TEST_EQUALS( Vector2(5.0f, 5.0f), data.receivedGesture.screenPoint, 0.1, TEST_LOCATION);
// Rotate actor again and render
- actor.SetRotation(Dali::Degree(90.0f), Vector3::YAXIS);
+ actor.SetOrientation(Dali::Degree(90.0f), Vector3::YAXIS);
application.SendNotification();
application.Render();
child.SetSize(100.0f, 100.0f);
child.SetAnchorPoint(AnchorPoint::CENTER);
child.SetParentOrigin(ParentOrigin::CENTER);
- child.SetRotation(Dali::Degree(90.0f), Vector3::ZAXIS);
+ child.SetOrientation(Dali::Degree(90.0f), Vector3::ZAXIS);
parent.Add(child);
TouchEventFunctor touchFunctor;
// Reset gestureManager statistics
gestureManager.Initialize();
- TapGestureDetector secondDetector = TapGestureDetector::New();
- secondDetector.SetTapsRequired(2);
- secondDetector.SetTouchesRequired(2);
+ TapGestureDetector secondDetector = TapGestureDetector::New( 2 );
secondDetector.Attach(second);
secondDetector.DetectedSignal().Connect(&application, functor);
DALI_TEST_EQUALS(false, gestureManager.WasCalled(TestGestureManager::UnregisterType), TEST_LOCATION);
// Tap within second actor's area
- application.ProcessEvent(GenerateTap(Gesture::Possible, 2u, 2u, Vector2(150.0f, 10.0f)));
- application.ProcessEvent(GenerateTap(Gesture::Started, 2u, 2u, Vector2(150.0f, 10.0f)));
+ application.ProcessEvent(GenerateTap(Gesture::Possible, 2u, 1u, Vector2(150.0f, 10.0f)));
+ application.ProcessEvent(GenerateTap(Gesture::Started, 2u, 1u, Vector2(150.0f, 10.0f)));
DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION);
DALI_TEST_EQUALS(true, second == data.tappedActor, TEST_LOCATION);
application.SendNotification();
application.Render();
- // Emit Started event, we should not receive the long press.
+ // Emit Started event, we should not receive the tap.
application.ProcessEvent(GenerateTap(Gesture::Started, 1u, 1u, Vector2(50.0f, 10.0f)));
DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION);
- // LongPress possible in empty area.
+ // Tap possible in empty area.
application.ProcessEvent(GenerateTap(Gesture::Possible, 1u, 1u, Vector2(50.0f, 10.0f)));
DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION);
- // Move actor in to the long press position.
+ // Move actor in to the tap position.
actor.SetPosition( 0.0f, 0.0f );
// Render and notify
application.SendNotification();
application.Render();
- // Emit Started event, we should not receive the long press.
+ // Emit Started event, we should not receive the tap.
application.ProcessEvent(GenerateTap(Gesture::Started, 1u, 1u, Vector2(50.0f, 10.0f)));
DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION);
- // Normal long press in actor's area for completeness.
+ // Normal tap in actor's area for completeness.
application.ProcessEvent(GenerateTap(Gesture::Possible, 1u, 1u, Vector2(50.0f, 10.0f)));
application.ProcessEvent(GenerateTap(Gesture::Started, 1u, 1u, Vector2(50.0f, 10.0f)));
DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION);