Merge branch 'devel/master(1.1.39)' into tizen
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-TouchEventCombiner.cpp
index 427d62c..81475c7 100644 (file)
@@ -1,30 +1,44 @@
-//
-// Copyright (c) 2014 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Flora License, Version 1.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://floralicense.org/license/
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an AS IS BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
+/*
+ * Copyright (c) 2014 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
 
 #include <iostream>
 
 #include <stdlib.h>
-#include <dali/dali.h>
+#include <dali/public-api/dali-core.h>
 #include <dali/integration-api/events/touch-event-combiner.h>
 #include <dali/integration-api/events/touch-event-integ.h>
+#include <dali/integration-api/events/hover-event-integ.h>
 #include <dali-test-suite-utils.h>
 
 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;
+}
+}
+
 void utc_dali_touch_event_combiner_startup(void)
 {
   test_return_value = TET_UNDEF;
@@ -215,13 +229,14 @@ int UtcDaliTouchEventCombinerSingleTouchNormal(void)
   // 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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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++;
@@ -229,13 +244,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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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++;
@@ -243,21 +259,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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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::DispatchNone, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), TEST_LOCATION );
   }
 
   time++;
@@ -265,13 +283,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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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++;
@@ -279,21 +298,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::DispatchNone, 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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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;
 }
@@ -306,9 +327,49 @@ int UtcDaliTouchEventCombinerSingleTouchMotionWithoutDown(void)
   // Motion event
   {
     Integration::TouchEvent touchEvent;
-    TouchPoint point( 1, TouchPoint::Motion, 100.0f, 100.0f );
+    Integration::HoverEvent hoverEvent;
+    Integration::Point point = GeneratePoint( 1, PointState::MOTION, 100.0f, 100.0f );
+
+    DALI_TEST_EQUALS( Integration::TouchEventCombiner::DispatchHover, 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::DispatchHover, 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( false, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
+    DALI_TEST_EQUALS( Integration::TouchEventCombiner::DispatchHover, 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++;
@@ -316,9 +377,48 @@ 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, 102.0f, 102.0f );
+
+    DALI_TEST_EQUALS( Integration::TouchEventCombiner::DispatchHover, 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 );
+  }
 
-    DALI_TEST_EQUALS( false, combiner.GetNextTouchEvent( point, time, touchEvent ), TEST_LOCATION );
+  time++;
+
+  // Motion event
+  {
+    Integration::TouchEvent touchEvent;
+    Integration::HoverEvent hoverEvent;
+    Integration::Point point = GeneratePoint( 1, PointState::MOTION, 103.0f, 103.0f );
+
+    DALI_TEST_EQUALS( Integration::TouchEventCombiner::DispatchHover, 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( Integration::TouchEventCombiner::DispatchBoth, 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;
 }
@@ -331,13 +431,14 @@ int UtcDaliTouchEventCombinerSingleTouchTwoDowns(void)
   // 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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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++;
@@ -345,9 +446,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::DispatchNone, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), TEST_LOCATION );
   }
   END_TEST;
 }
@@ -360,9 +462,10 @@ int UtcDaliTouchEventCombinerSingleTouchUpWithoutDown(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::DispatchNone, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), TEST_LOCATION );
   }
 
   time++;
@@ -370,9 +473,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::DispatchNone, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), TEST_LOCATION );
   }
   END_TEST;
 }
@@ -385,13 +489,14 @@ int UtcDaliTouchEventCombinerSingleTouchTwoUps(void)
   // 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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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++;
@@ -399,13 +504,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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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++;
@@ -413,9 +519,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::DispatchNone, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), TEST_LOCATION );
   }
   END_TEST;
 }
@@ -428,13 +535,14 @@ int UtcDaliTouchEventCombinerSingleTouchUpWithDifferentId(void)
   // 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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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++;
@@ -442,9 +550,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::DispatchNone, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), TEST_LOCATION );
   }
 
   time++;
@@ -452,13 +561,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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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;
 }
@@ -471,13 +581,14 @@ int UtcDaliTouchEventCombinerSingleTouchMotionWithDifferentId(void)
   // 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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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++;
@@ -485,9 +596,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::DispatchHover, 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++;
@@ -495,13 +611,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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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;
 }
@@ -514,13 +631,14 @@ int UtcDaliTouchEventCombinerMultiTouchNormal(void)
   // 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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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++;
@@ -528,14 +646,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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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++;
@@ -543,22 +662,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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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::DispatchNone, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), TEST_LOCATION );
   }
 
   time++;
@@ -566,14 +687,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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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++;
@@ -581,14 +703,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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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++;
@@ -596,13 +719,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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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++;
@@ -610,13 +734,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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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;
 }
@@ -631,9 +756,10 @@ int UtcDaliTouchEventCombinerSeveralPoints(void)
   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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time++, touchEvent, hoverEvent ), TEST_LOCATION );
     DALI_TEST_EQUALS( touchEvent.GetPointCount(), pointCount, TEST_LOCATION );
   }
 
@@ -641,9 +767,10 @@ int UtcDaliTouchEventCombinerSeveralPoints(void)
   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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time++, touchEvent, hoverEvent ), TEST_LOCATION );
     DALI_TEST_EQUALS( touchEvent.GetPointCount(), pointCount, TEST_LOCATION );
   }
   END_TEST;
@@ -657,13 +784,14 @@ int UtcDaliTouchEventCombinerReset(void)
   // 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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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++;
@@ -674,9 +802,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::DispatchNone, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), TEST_LOCATION );
   }
   END_TEST;
 }
@@ -689,13 +818,14 @@ int UtcDaliTouchEventCombinerSingleTouchInterrupted(void)
   // 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( Integration::TouchEventCombiner::DispatchTouch, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), 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( 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++;
@@ -703,20 +833,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( Integration::TouchEventCombiner::DispatchBoth, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), TEST_LOCATION );
     DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, 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::DispatchNone, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), TEST_LOCATION );
   }
   END_TEST;
 }
@@ -731,29 +865,34 @@ int UtcDaliTouchEventCombinerMultiTouchInterrupted(void)
   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( Integration::TouchEventCombiner::DispatchTouch, 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( Integration::TouchEventCombiner::DispatchBoth, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), TEST_LOCATION );
     DALI_TEST_EQUALS( touchEvent.GetPointCount(), 1u, TEST_LOCATION );
-    DALI_TEST_EQUALS( touchEvent.points[0].state, point.state, 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::DispatchNone, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), TEST_LOCATION );
   }
   END_TEST;
 }
@@ -766,9 +905,10 @@ int UtcDaliTouchEventCombinerInvalidState(void)
   // 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::DispatchNone, combiner.GetNextTouchEvent( point, time, touchEvent, hoverEvent ), TEST_LOCATION );
   }
   END_TEST;
 }