+ Stage::GetCurrent().Add( button );
+
+ application.SendNotification();
+ application.Render();
+
+ // connect to its touch signal
+ button.ClickedSignal().Connect( &ButtonCallback );
+ bool clickedSignal = false;
+ ConnectionTracker* testTracker = new ConnectionTracker();
+ button.ConnectSignal( testTracker, "clicked", CallbackFunctor(&clickedSignal) );
+
+ Dali::Integration::TouchEvent event;
+
+ // Test1. Touch point down and up inside the button.
+
+ gIsCalledButtonCallback = false;
+ event = Dali::Integration::TouchEvent();
+ event.AddPoint( GetPointDownInside() );
+ application.ProcessEvent( event );
+
+ event = Dali::Integration::TouchEvent();
+ event.AddPoint( GetPointUpInside() );
+ application.ProcessEvent( event );
+
+ DALI_TEST_CHECK( gIsCalledButtonCallback );
+ DALI_TEST_CHECK( clickedSignal );
+
+ // Test2. Touch point down and up outside the button.
+
+ gIsCalledButtonCallback = false;
+ clickedSignal = false;
+ event = Dali::Integration::TouchEvent();
+ event.AddPoint( GetPointDownOutside() );
+ application.ProcessEvent( event );
+
+ event = Dali::Integration::TouchEvent();
+ event.AddPoint( GetPointUpOutside() );
+ application.ProcessEvent( event );
+
+ DALI_TEST_CHECK( !gIsCalledButtonCallback );
+ DALI_TEST_CHECK( !clickedSignal );
+
+ // Test3. Touch point down inside and up outside the button.
+
+ gIsCalledButtonCallback = false;
+ clickedSignal = false;
+ event = Dali::Integration::TouchEvent();
+ event.AddPoint( GetPointDownInside() );
+ application.ProcessEvent( event );
+
+ event = Dali::Integration::TouchEvent();
+ event.AddPoint( GetPointLeave() );
+ application.ProcessEvent( event );
+
+ event = Dali::Integration::TouchEvent();
+ event.AddPoint( GetPointUpOutside() );
+ application.ProcessEvent( event );
+
+ DALI_TEST_CHECK( !gIsCalledButtonCallback );
+ DALI_TEST_CHECK( !clickedSignal );
+
+ // Test4. Touch point down outside and up inside the button.
+
+ gIsCalledButtonCallback = false;
+ clickedSignal = false;
+ event = Dali::Integration::TouchEvent();
+ event.AddPoint( GetPointDownOutside() );
+ application.ProcessEvent( event );
+
+ event = Dali::Integration::TouchEvent();
+ event.AddPoint( GetPointEnter() );
+ application.ProcessEvent( event );
+
+ event = Dali::Integration::TouchEvent();
+ event.AddPoint( GetPointUpInside() );
+ application.ProcessEvent( event );
+
+ DALI_TEST_CHECK( !gIsCalledButtonCallback );
+ DALI_TEST_CHECK( !clickedSignal );
+ END_TEST;