Refactored more code into Actor::Relayouter
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-TouchEventCombiner.cpp
index 33ddc98..1b6eb75 100644 (file)
  *
  */
 
-#include <iostream>
-
-#include <stdlib.h>
-#include <dali/dali.h>
+#include <dali-test-suite-utils.h>
+#include <dali/integration-api/events/hover-event-integ.h>
 #include <dali/integration-api/events/touch-event-combiner.h>
 #include <dali/integration-api/events/touch-event-integ.h>
-#include <dali-test-suite-utils.h>
+#include <dali/public-api/dali-core.h>
+#include <stdlib.h>
+
+#include <iostream>
 
 using namespace Dali;
 using namespace Dali::Integration;
 
+namespace
+{
+Point GeneratePoint(int deviceId, PointState::Type state, float x, float y)
+{
+  Point point;
+  point.SetDeviceId(deviceId);
+  point.SetState(state);
+  point.SetScreenPosition(Vector2(x, y));
+  return point;
+}
+} // namespace
+
 void utc_dali_touch_event_combiner_startup(void)
 {
   test_return_value = TET_UNDEF;
@@ -36,28 +49,27 @@ void utc_dali_touch_event_combiner_cleanup(void)
   test_return_value = TET_PASS;
 }
 
-
 int UtcDaliTouchEventCombinerConstructors(void)
 {
   TouchEventCombiner combiner1;
-  DALI_TEST_EQUALS( combiner1.GetMinimumMotionTimeThreshold(), static_cast<long unsigned>(1), TEST_LOCATION );
-  DALI_TEST_EQUALS( combiner1.GetMinimumMotionDistanceThreshold(), Vector2( 1.0f, 1.0f ), TEST_LOCATION );
+  DALI_TEST_EQUALS(combiner1.GetMinimumMotionTimeThreshold(), static_cast<long unsigned>(1), TEST_LOCATION);
+  DALI_TEST_EQUALS(combiner1.GetMinimumMotionDistanceThreshold(), Vector2(1.0f, 1.0f), TEST_LOCATION);
 
-  TouchEventCombiner combiner2( 10, 20.0f, 31.0f );
-  DALI_TEST_EQUALS( combiner2.GetMinimumMotionTimeThreshold(), static_cast<long unsigned>(10), TEST_LOCATION );
-  DALI_TEST_EQUALS( combiner2.GetMinimumMotionDistanceThreshold(), Vector2( 20.0f, 31.0f ), TEST_LOCATION );
+  TouchEventCombiner combiner2(10, 20.0f, 31.0f);
+  DALI_TEST_EQUALS(combiner2.GetMinimumMotionTimeThreshold(), static_cast<long unsigned>(10), TEST_LOCATION);
+  DALI_TEST_EQUALS(combiner2.GetMinimumMotionDistanceThreshold(), Vector2(20.0f, 31.0f), TEST_LOCATION);
 
-  TouchEventCombiner combiner3( 10, Vector2( 20.0f, 31.0f ) );
-  DALI_TEST_EQUALS( combiner3.GetMinimumMotionTimeThreshold(), static_cast<long unsigned>(10), TEST_LOCATION );
-  DALI_TEST_EQUALS( combiner3.GetMinimumMotionDistanceThreshold(), Vector2( 20.0f, 31.0f ), TEST_LOCATION );
+  TouchEventCombiner combiner3(10, Vector2(20.0f, 31.0f));
+  DALI_TEST_EQUALS(combiner3.GetMinimumMotionTimeThreshold(), static_cast<long unsigned>(10), TEST_LOCATION);
+  DALI_TEST_EQUALS(combiner3.GetMinimumMotionDistanceThreshold(), Vector2(20.0f, 31.0f), TEST_LOCATION);
 
   // Boundary Checks
 
-  TouchEventCombiner combiner4( 10, 0.0f, 0.0f );
-  DALI_TEST_EQUALS( combiner4.GetMinimumMotionDistanceThreshold(), Vector2( 0.0f, 0.0f ), TEST_LOCATION );
+  TouchEventCombiner combiner4(10, 0.0f, 0.0f);
+  DALI_TEST_EQUALS(combiner4.GetMinimumMotionDistanceThreshold(), Vector2(0.0f, 0.0f), TEST_LOCATION);
 
-  TouchEventCombiner combiner5( 10, Vector2( 0.0f, 0.0f ) );
-  DALI_TEST_EQUALS( combiner5.GetMinimumMotionDistanceThreshold(), Vector2( 0.0f, 0.0f ), TEST_LOCATION );
+  TouchEventCombiner combiner5(10, Vector2(0.0f, 0.0f));
+  DALI_TEST_EQUALS(combiner5.GetMinimumMotionDistanceThreshold(), Vector2(0.0f, 0.0f), TEST_LOCATION);
   END_TEST;
 }
 
@@ -65,46 +77,46 @@ int UtcDaliTouchEventCombinerConstructorsNegative(void)
 {
   try
   {
-    TouchEventCombiner combiner( 10, -20.0f, 31.0f );
-    tet_printf( "%s: Should have asserted\n", TEST_LOCATION );
-    tet_result( TET_FAIL );
+    TouchEventCombiner combiner(10, -20.0f, 31.0f);
+    tet_printf("%s: Should have asserted\n", TEST_LOCATION);
+    tet_result(TET_FAIL);
   }
-  catch ( Dali::DaliException& e )
+  catch(Dali::DaliException& e)
   {
-    tet_result( TET_PASS );
+    tet_result(TET_PASS);
   }
 
   try
   {
-    TouchEventCombiner combiner( 10, 20.0f, -31.0f );
-    tet_printf( "%s: Should have asserted\n", TEST_LOCATION );
-    tet_result( TET_FAIL );
+    TouchEventCombiner combiner(10, 20.0f, -31.0f);
+    tet_printf("%s: Should have asserted\n", TEST_LOCATION);
+    tet_result(TET_FAIL);
   }
-  catch ( Dali::DaliException& e )
+  catch(Dali::DaliException& e)
   {
-    tet_result( TET_PASS );
+    tet_result(TET_PASS);
   }
 
   try
   {
-    TouchEventCombiner combiner( 10, Vector2( -20.0f, 31.0f ) );
-    tet_printf( "%s: Should have asserted\n", TEST_LOCATION );
-    tet_result( TET_FAIL );
+    TouchEventCombiner combiner(10, Vector2(-20.0f, 31.0f));
+    tet_printf("%s: Should have asserted\n", TEST_LOCATION);
+    tet_result(TET_FAIL);
   }
-  catch ( Dali::DaliException& e )
+  catch(Dali::DaliException& e)
   {
-    tet_result( TET_PASS );
+    tet_result(TET_PASS);
   }
 
   try
   {
-    TouchEventCombiner combiner( 10, Vector2( 20.0f, -31.0f ) );
-    tet_printf( "%s: Should have asserted\n", TEST_LOCATION );
-    tet_result( TET_FAIL );
+    TouchEventCombiner combiner(10, Vector2(20.0f, -31.0f));
+    tet_printf("%s: Should have asserted\n", TEST_LOCATION);
+    tet_result(TET_FAIL);
   }
-  catch ( Dali::DaliException& e )
+  catch(Dali::DaliException& e)
   {
-    tet_result( TET_PASS );
+    tet_result(TET_PASS);
   }
   END_TEST;
 }
@@ -112,38 +124,38 @@ int UtcDaliTouchEventCombinerConstructorsNegative(void)
 int UtcDaliTouchEventCombinerSettersAndGetters(void)
 {
   TouchEventCombiner combiner;
-  unsigned long time( 10u );
-  Vector2 distance( 40.0f, 30.0f );
+  unsigned long      time(10u);
+  Vector2            distance(40.0f, 30.0f);
 
-  DALI_TEST_CHECK( combiner.GetMinimumMotionTimeThreshold() != time );
-  DALI_TEST_CHECK( combiner.GetMinimumMotionDistanceThreshold() != distance );
+  DALI_TEST_CHECK(combiner.GetMinimumMotionTimeThreshold() != time);
+  DALI_TEST_CHECK(combiner.GetMinimumMotionDistanceThreshold() != distance);
 
-  combiner.SetMinimumMotionTimeThreshold( time );
-  DALI_TEST_EQUALS( combiner.GetMinimumMotionTimeThreshold(), time, TEST_LOCATION );
+  combiner.SetMinimumMotionTimeThreshold(time);
+  DALI_TEST_EQUALS(combiner.GetMinimumMotionTimeThreshold(), time, TEST_LOCATION);
 
-  combiner.SetMinimumMotionDistanceThreshold( distance.x );
-  DALI_TEST_EQUALS( combiner.GetMinimumMotionDistanceThreshold(), Vector2( distance.x, distance.x ), TEST_LOCATION );
+  combiner.SetMinimumMotionDistanceThreshold(distance.x);
+  DALI_TEST_EQUALS(combiner.GetMinimumMotionDistanceThreshold(), Vector2(distance.x, distance.x), TEST_LOCATION);
 
   distance.x = 20.0f;
   distance.y = 50.0f;
-  combiner.SetMinimumMotionDistanceThreshold( distance.x, distance.y );
-  DALI_TEST_EQUALS( combiner.GetMinimumMotionDistanceThreshold(), distance, TEST_LOCATION );
+  combiner.SetMinimumMotionDistanceThreshold(distance.x, distance.y);
+  DALI_TEST_EQUALS(combiner.GetMinimumMotionDistanceThreshold(), distance, TEST_LOCATION);
 
   distance.x = 100.0f;
   distance.y = 20.0f;
-  combiner.SetMinimumMotionDistanceThreshold( distance );
-  DALI_TEST_EQUALS( combiner.GetMinimumMotionDistanceThreshold(), distance, TEST_LOCATION );
+  combiner.SetMinimumMotionDistanceThreshold(distance);
+  DALI_TEST_EQUALS(combiner.GetMinimumMotionDistanceThreshold(), distance, TEST_LOCATION);
 
   // Boundary Checks
 
-  combiner.SetMinimumMotionDistanceThreshold( 0.0f );
-  DALI_TEST_EQUALS( combiner.GetMinimumMotionDistanceThreshold(), Vector2::ZERO, TEST_LOCATION );
+  combiner.SetMinimumMotionDistanceThreshold(0.0f);
+  DALI_TEST_EQUALS(combiner.GetMinimumMotionDistanceThreshold(), Vector2::ZERO, TEST_LOCATION);
 
-  combiner.SetMinimumMotionDistanceThreshold( 0.0f, 0.0f );
-  DALI_TEST_EQUALS( combiner.GetMinimumMotionDistanceThreshold(), Vector2::ZERO, TEST_LOCATION );
+  combiner.SetMinimumMotionDistanceThreshold(0.0f, 0.0f);
+  DALI_TEST_EQUALS(combiner.GetMinimumMotionDistanceThreshold(), Vector2::ZERO, TEST_LOCATION);
 
-  combiner.SetMinimumMotionDistanceThreshold( Vector2::ZERO );
-  DALI_TEST_EQUALS( combiner.GetMinimumMotionDistanceThreshold(), Vector2::ZERO, TEST_LOCATION );
+  combiner.SetMinimumMotionDistanceThreshold(Vector2::ZERO);
+  DALI_TEST_EQUALS(combiner.GetMinimumMotionDistanceThreshold(), Vector2::ZERO, TEST_LOCATION);
   END_TEST;
 }
 
@@ -153,57 +165,57 @@ int UtcDaliTouchEventCombinerSettersNegative(void)
 
   try
   {
-    combiner.SetMinimumMotionDistanceThreshold( -100.0f );
-    tet_printf( "%s: Should have asserted\n", TEST_LOCATION );
-    tet_result( TET_FAIL );
+    combiner.SetMinimumMotionDistanceThreshold(-100.0f);
+    tet_printf("%s: Should have asserted\n", TEST_LOCATION);
+    tet_result(TET_FAIL);
   }
-  catch ( Dali::DaliException& e )
+  catch(Dali::DaliException& e)
   {
-    tet_result( TET_PASS );
+    tet_result(TET_PASS);
   }
 
   try
   {
-    combiner.SetMinimumMotionDistanceThreshold( -100.0f, 20.0f );
-    tet_printf( "%s: Should have asserted\n", TEST_LOCATION );
-    tet_result( TET_FAIL );
+    combiner.SetMinimumMotionDistanceThreshold(-100.0f, 20.0f);
+    tet_printf("%s: Should have asserted\n", TEST_LOCATION);
+    tet_result(TET_FAIL);
   }
-  catch ( Dali::DaliException& e )
+  catch(Dali::DaliException& e)
   {
-    tet_result( TET_PASS );
+    tet_result(TET_PASS);
   }
 
   try
   {
-    combiner.SetMinimumMotionDistanceThreshold( 100.0f, -20.0f );
-    tet_printf( "%s: Should have asserted\n", TEST_LOCATION );
-    tet_result( TET_FAIL );
+    combiner.SetMinimumMotionDistanceThreshold(100.0f, -20.0f);
+    tet_printf("%s: Should have asserted\n", TEST_LOCATION);
+    tet_result(TET_FAIL);
   }
-  catch ( Dali::DaliException& e )
+  catch(Dali::DaliException& e)
   {
-    tet_result( TET_PASS );
+    tet_result(TET_PASS);
   }
 
   try
   {
-    combiner.SetMinimumMotionDistanceThreshold( Vector2( -100.0f, 20.0f ) );
-    tet_printf( "%s: Should have asserted\n", TEST_LOCATION );
-    tet_result( TET_FAIL );
+    combiner.SetMinimumMotionDistanceThreshold(Vector2(-100.0f, 20.0f));
+    tet_printf("%s: Should have asserted\n", TEST_LOCATION);
+    tet_result(TET_FAIL);
   }
-  catch ( Dali::DaliException& e )
+  catch(Dali::DaliException& e)
   {
-    tet_result( TET_PASS );
+    tet_result(TET_PASS);
   }
 
   try
   {
-    combiner.SetMinimumMotionDistanceThreshold( Vector2( 100.0f, -20.0f ) );
-    tet_printf( "%s: Should have asserted\n", TEST_LOCATION );
-    tet_result( TET_FAIL );
+    combiner.SetMinimumMotionDistanceThreshold(Vector2(100.0f, -20.0f));
+    tet_printf("%s: Should have asserted\n", TEST_LOCATION);
+    tet_result(TET_FAIL);
   }
-  catch ( Dali::DaliException& e )
+  catch(Dali::DaliException& e)
   {
-    tet_result( TET_PASS );
+    tet_result(TET_PASS);
   }
   END_TEST;
 }
@@ -211,18 +223,19 @@ int UtcDaliTouchEventCombinerSettersNegative(void)
 int UtcDaliTouchEventCombinerSingleTouchNormal(void)
 {
   TouchEventCombiner combiner;
-  unsigned long time( 0u );
+  unsigned long      time(0u);
 
   // Down event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Down, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::DOWN, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
 
   time++;
@@ -230,13 +243,14 @@ int UtcDaliTouchEventCombinerSingleTouchNormal(void)
   // Motion in X direction
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Motion, 101.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::MOTION, 101.0f, 100.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
 
   time++;
@@ -244,21 +258,23 @@ int UtcDaliTouchEventCombinerSingleTouchNormal(void)
   // Motion in Y direction
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Motion, 101.0f, 101.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::MOTION, 101.0f, 101.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
 
   // Motion event, but same time
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Motion, 102.0f, 102.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::MOTION, 102.0f, 102.0f);
 
-    DALI_TEST_EQUALS( false, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_NONE, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
   }
 
   time++;
@@ -266,13 +282,14 @@ int UtcDaliTouchEventCombinerSingleTouchNormal(void)
   // Motion event, both X and Y movement
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Motion, 102.0f, 102.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::MOTION, 102.0f, 102.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
 
   time++;
@@ -280,21 +297,23 @@ int UtcDaliTouchEventCombinerSingleTouchNormal(void)
   // Motion event, no movement
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Motion, 102.0f, 102.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::MOTION, 102.0f, 102.0f);
 
-    DALI_TEST_EQUALS( false, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_NONE, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
   }
 
   // Up event, no time diff, no movement
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Up, 102.0f, 102.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::UP, 102.0f, 102.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
   END_TEST;
 }
@@ -302,14 +321,69 @@ int UtcDaliTouchEventCombinerSingleTouchNormal(void)
 int UtcDaliTouchEventCombinerSingleTouchMotionWithoutDown(void)
 {
   TouchEventCombiner combiner;
-  unsigned long time( 0u );
+  unsigned long      time(0u);
+
+  // Motion event
+  {
+    Integration::TouchEvent touchEvent;
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::MOTION, 100.0f, 100.0f);
+
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_HOVER, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetState(), PointState::STARTED, TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
+  }
+
+  time++;
+
+  // Motion event
+  {
+    Integration::TouchEvent touchEvent;
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::MOTION, 102.0f, 102.0f);
+
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_HOVER, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
+  }
+  END_TEST;
+}
+
+int UtcDaliTouchEventCombinerSingleTouchMotionFollowedByDown(void)
+{
+  TouchEventCombiner combiner;
+  unsigned long      time(0u);
+
+  // Motion event
+  {
+    Integration::TouchEvent touchEvent;
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::MOTION, 100.0f, 100.0f);
+
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_HOVER, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetState(), PointState::STARTED, TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
+  }
+
+  time++;
 
   // Motion event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Motion, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::MOTION, 102.0f, 102.0f);
 
-    DALI_TEST_EQUALS( false, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_HOVER, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
 
   time++;
@@ -317,9 +391,33 @@ int UtcDaliTouchEventCombinerSingleTouchMotionWithoutDown(void)
   // Motion event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Motion, 102.0f, 102.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::MOTION, 103.0f, 103.0f);
+
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_HOVER, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
+  }
+
+  time++;
+
+  // Down event
+  {
+    Integration::TouchEvent touchEvent;
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::DOWN, 103.0f, 103.0f);
 
-    DALI_TEST_EQUALS( false, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_BOTH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetState(), PointState::FINISHED, TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
   END_TEST;
 }
@@ -327,18 +425,19 @@ int UtcDaliTouchEventCombinerSingleTouchMotionWithoutDown(void)
 int UtcDaliTouchEventCombinerSingleTouchTwoDowns(void)
 {
   TouchEventCombiner combiner;
-  unsigned long time( 0u );
+  unsigned long      time(0u);
 
   // Down event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Down, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::DOWN, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
 
   time++;
@@ -346,9 +445,10 @@ int UtcDaliTouchEventCombinerSingleTouchTwoDowns(void)
   // Another down with the same ID
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Down, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::DOWN, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( false, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_NONE, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
   }
   END_TEST;
 }
@@ -356,14 +456,15 @@ int UtcDaliTouchEventCombinerSingleTouchTwoDowns(void)
 int UtcDaliTouchEventCombinerSingleTouchUpWithoutDown(void)
 {
   TouchEventCombiner combiner;
-  unsigned long time( 0u );
+  unsigned long      time(0u);
 
   // Up event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Up, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::UP, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( false, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_NONE, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
   }
 
   time++;
@@ -371,9 +472,10 @@ int UtcDaliTouchEventCombinerSingleTouchUpWithoutDown(void)
   // Up event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Up, 102.0f, 102.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::UP, 102.0f, 102.0f);
 
-    DALI_TEST_EQUALS( false, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_NONE, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
   }
   END_TEST;
 }
@@ -381,18 +483,19 @@ int UtcDaliTouchEventCombinerSingleTouchUpWithoutDown(void)
 int UtcDaliTouchEventCombinerSingleTouchTwoUps(void)
 {
   TouchEventCombiner combiner;
-  unsigned long time( 0u );
+  unsigned long      time(0u);
 
   // Down event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Down, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::DOWN, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
 
   time++;
@@ -400,13 +503,14 @@ int UtcDaliTouchEventCombinerSingleTouchTwoUps(void)
   // Up event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Up, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::UP, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
 
   time++;
@@ -414,9 +518,10 @@ int UtcDaliTouchEventCombinerSingleTouchTwoUps(void)
   // Another up event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Up, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::UP, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( false, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_NONE, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
   }
   END_TEST;
 }
@@ -424,18 +529,19 @@ int UtcDaliTouchEventCombinerSingleTouchTwoUps(void)
 int UtcDaliTouchEventCombinerSingleTouchUpWithDifferentId(void)
 {
   TouchEventCombiner combiner;
-  unsigned long time( 0u );
+  unsigned long      time(0u);
 
   // Down event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Down, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::DOWN, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
 
   time++;
@@ -443,9 +549,10 @@ int UtcDaliTouchEventCombinerSingleTouchUpWithDifferentId(void)
   // Up event with different ID
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 2, TouchPoint::Up, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(2, PointState::UP, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( false, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_NONE, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
   }
 
   time++;
@@ -453,13 +560,14 @@ int UtcDaliTouchEventCombinerSingleTouchUpWithDifferentId(void)
   // Up event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Up, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::UP, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
   END_TEST;
 }
@@ -467,18 +575,19 @@ int UtcDaliTouchEventCombinerSingleTouchUpWithDifferentId(void)
 int UtcDaliTouchEventCombinerSingleTouchMotionWithDifferentId(void)
 {
   TouchEventCombiner combiner;
-  unsigned long time( 0u );
+  unsigned long      time(0u);
 
   // Down event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Down, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::DOWN, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
 
   time++;
@@ -486,9 +595,14 @@ int UtcDaliTouchEventCombinerSingleTouchMotionWithDifferentId(void)
   // Motion event with different ID
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 2, TouchPoint::Motion, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(2, PointState::MOTION, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( false, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_HOVER, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetState(), PointState::STARTED, TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
 
   time++;
@@ -496,13 +610,14 @@ int UtcDaliTouchEventCombinerSingleTouchMotionWithDifferentId(void)
   // Motion event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Motion, 102.0f, 102.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::MOTION, 102.0f, 102.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
   END_TEST;
 }
@@ -510,18 +625,19 @@ int UtcDaliTouchEventCombinerSingleTouchMotionWithDifferentId(void)
 int UtcDaliTouchEventCombinerMultiTouchNormal(void)
 {
   TouchEventCombiner combiner;
-  unsigned long time( 0u );
+  unsigned long      time(0u);
 
   // 1st point down
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Down, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::DOWN, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
 
   time++;
@@ -529,14 +645,15 @@ int UtcDaliTouchEventCombinerMultiTouchNormal(void)
   // 2nd point down
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 2, TouchPoint::Down, 200.0f, 200.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(2, PointState::DOWN, 200.0f, 200.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 2u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[1].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, TouchPoint::Stationary, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[1].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[1].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 2u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[1].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), PointState::STATIONARY, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[1].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[1].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
 
   time++;
@@ -544,22 +661,24 @@ int UtcDaliTouchEventCombinerMultiTouchNormal(void)
   // 1st point motion
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Motion, 101.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::MOTION, 101.0f, 100.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 2u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[1].state, TouchPoint::Stationary, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 2u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[1].GetState(), PointState::STATIONARY, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
 
   // 2nd point motion, no time diff
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 2, TouchPoint::Motion, 200.0f, 200.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(2, PointState::MOTION, 200.0f, 200.0f);
 
-    DALI_TEST_EQUALS( false, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_NONE, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
   }
 
   time++;
@@ -567,14 +686,15 @@ int UtcDaliTouchEventCombinerMultiTouchNormal(void)
   // 2nd point motion
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 2, TouchPoint::Motion, 201.0f, 201.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(2, PointState::MOTION, 201.0f, 201.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 2u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[1].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, TouchPoint::Stationary, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[1].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[1].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 2u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[1].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), PointState::STATIONARY, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[1].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[1].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
 
   time++;
@@ -582,14 +702,15 @@ int UtcDaliTouchEventCombinerMultiTouchNormal(void)
   // 1st point up
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Up, 101.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::UP, 101.0f, 100.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 2u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[1].state, TouchPoint::Stationary, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 2u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[1].GetState(), PointState::STATIONARY, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
 
   time++;
@@ -597,13 +718,14 @@ int UtcDaliTouchEventCombinerMultiTouchNormal(void)
   // 2nd point motion
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 2, TouchPoint::Motion, 202.0f, 202.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(2, PointState::MOTION, 202.0f, 202.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
 
   time++;
@@ -611,13 +733,14 @@ int UtcDaliTouchEventCombinerMultiTouchNormal(void)
   // 2nd point up
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 2, TouchPoint::Up, 202.0f, 202.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(2, PointState::UP, 202.0f, 202.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
   END_TEST;
 }
@@ -625,27 +748,29 @@ int UtcDaliTouchEventCombinerMultiTouchNormal(void)
 int UtcDaliTouchEventCombinerSeveralPoints(void)
 {
   TouchEventCombiner combiner;
-  unsigned long time( 0u );
-  unsigned int const maximum( 200u );
+  unsigned long      time(0u);
+  unsigned int const maximum(200u);
 
   // Several downs
-  for ( unsigned int pointCount = 1u; pointCount < maximum; ++pointCount )
+  for(unsigned int pointCount = 1u; pointCount < maximum; ++pointCount)
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( pointCount, TouchPoint::Down, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(pointCount, PointState::DOWN, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time++, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), pointCount, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time++, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), pointCount, TEST_LOCATION);
   }
 
   // Several Ups
-  for ( unsigned int pointCount = maximum - 1; pointCount > 0; --pointCount )
+  for(unsigned int pointCount = maximum - 1; pointCount > 0; --pointCount)
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( pointCount, TouchPoint::Up, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(pointCount, PointState::UP, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time++, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), pointCount, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time++, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), pointCount, TEST_LOCATION);
   }
   END_TEST;
 }
@@ -653,18 +778,19 @@ int UtcDaliTouchEventCombinerSeveralPoints(void)
 int UtcDaliTouchEventCombinerReset(void)
 {
   TouchEventCombiner combiner;
-  unsigned long time( 0u );
+  unsigned long      time(0u);
 
   // Down event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Down, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::DOWN, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
 
   time++;
@@ -675,9 +801,10 @@ int UtcDaliTouchEventCombinerReset(void)
   // Up event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Up, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::UP, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( false, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_NONE, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
   }
   END_TEST;
 }
@@ -685,18 +812,19 @@ int UtcDaliTouchEventCombinerReset(void)
 int UtcDaliTouchEventCombinerSingleTouchInterrupted(void)
 {
   TouchEventCombiner combiner;
-  unsigned long time( 0u );
+  unsigned long      time(0u);
 
   // Down event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Down, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::DOWN, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].deviceId, point.deviceId, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].screen, point.screen, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetDeviceId(), point.GetDeviceId(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetScreenPosition(), point.GetScreenPosition(), TEST_LOCATION);
   }
 
   time++;
@@ -704,20 +832,24 @@ int UtcDaliTouchEventCombinerSingleTouchInterrupted(void)
   // Interrupted event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Interrupted, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::INTERRUPTED, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_BOTH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
   }
 
   // Send up, should not be able to send as combiner has been reset.
   // Up event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Up, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::UP, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( false, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_NONE, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
   }
   END_TEST;
 }
@@ -725,36 +857,41 @@ int UtcDaliTouchEventCombinerSingleTouchInterrupted(void)
 int UtcDaliTouchEventCombinerMultiTouchInterrupted(void)
 {
   TouchEventCombiner combiner;
-  unsigned long time( 0u );
-  unsigned int const maximum( 200u );
+  unsigned long      time(0u);
+  unsigned int const maximum(200u);
 
   // Several downs
-  for ( unsigned int pointCount = 1u; pointCount < maximum; ++pointCount )
+  for(unsigned int pointCount = 1u; pointCount < maximum; ++pointCount)
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( pointCount, TouchPoint::Down, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(pointCount, PointState::DOWN, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time++, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), pointCount, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_TOUCH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), pointCount, TEST_LOCATION);
   }
 
   // Interrupted event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Interrupted, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::INTERRUPTED, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( true, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_BOTH, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(touchEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.GetPointCount(), 1u, TEST_LOCATION);
+    DALI_TEST_EQUALS(hoverEvent.points[0].GetState(), point.GetState(), TEST_LOCATION);
   }
 
   // Send up, should not be able to send as combiner has been reset.
   // Up event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Up, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::UP, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( false, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_NONE, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
   }
   END_TEST;
 }
@@ -762,14 +899,15 @@ int UtcDaliTouchEventCombinerMultiTouchInterrupted(void)
 int UtcDaliTouchEventCombinerInvalidState(void)
 {
   TouchEventCombiner combiner;
-  unsigned long time( 0u );
+  unsigned long      time(0u);
 
   // Stationary event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Stationary, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point      point = GeneratePoint(1, PointState::STATIONARY, 100.0f, 100.0f);
 
-    DALI_TEST_EQUALS( false, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
+    DALI_TEST_EQUALS(Integration::TouchEventCombiner::DISPATCH_NONE, combiner.GetNextTouchEvent(point, time, touchEvent, hoverEvent), TEST_LOCATION);
   }
   END_TEST;
 }