2 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
21 // Need to override adaptor classes for toolkit test harness, so include
22 // test harness headers before dali headers.
23 #include <dali-toolkit-test-suite-utils.h>
24 #include "dali-toolkit-test-utils/toolkit-timer.h"
27 #include <dali-toolkit/dali-toolkit.h>
28 #include <dali/integration-api/events/touch-event-integ.h>
30 #include <dali-toolkit/devel-api/controls/buttons/button-devel.h>
31 #include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
32 #include <dali-toolkit/devel-api/visuals/text-visual-properties.h>
35 using namespace Toolkit;
38 void utc_dali_toolkit_button_startup(void)
40 test_return_value = TET_UNDEF;
43 void utc_dali_toolkit_button_cleanup(void)
45 test_return_value = TET_PASS;
50 static bool gIsCalledButtonCallback = false;
52 const int RENDER_FRAME_INTERVAL = 16;
54 static bool ButtonCallback( Button button )
56 gIsCalledButtonCallback = true;
60 static std::string GetButtonText( Button button )
62 Property::Value value = button.GetProperty( Toolkit::Button::Property::LABEL );
64 Property::Map *labelProperty = value.GetMap();
66 std::string textLabel;
70 Property::Value* value = labelProperty->Find( Toolkit::TextVisual::Property::TEXT );
71 value->Get( textLabel );
77 struct CallbackFunctor
79 CallbackFunctor(bool* callbackFlag)
80 : mCallbackFlag( callbackFlag )
86 *mCallbackFlag = true;
91 Dali::Integration::Point GetPointDownInside()
93 Dali::Integration::Point point;
94 point.SetState( PointState::DOWN );
95 point.SetScreenPosition( Vector2( 240, 400 ) );
99 Dali::Integration::Point GetPointUpInside()
101 Dali::Integration::Point point;
102 point.SetState( PointState::UP );
103 point.SetScreenPosition( Vector2( 240, 400 ) );
107 Dali::Integration::Point GetPointLeave()
109 Dali::Integration::Point point;
110 point.SetState( PointState::LEAVE );
111 point.SetScreenPosition( Vector2( 240, 400 ) );
115 Dali::Integration::Point GetPointEnter()
117 Dali::Integration::Point point;
118 point.SetState( PointState::MOTION );
119 point.SetScreenPosition( Vector2( 240, 400 ) );
123 Dali::Integration::Point GetPointDownOutside()
125 Dali::Integration::Point point;
126 point.SetState( PointState::DOWN );
127 point.SetScreenPosition( Vector2( 10, 10 ) );
131 Dali::Integration::Point GetPointUpOutside()
133 Dali::Integration::Point point;
134 point.SetState( PointState::UP );
135 point.SetScreenPosition( Vector2( 10, 10 ) );
139 static float ANIMATION_TIME( 0.5f );
143 int UtcDaliButtonConstructorP(void)
145 TestApplication application;
149 DALI_TEST_CHECK( !button );
153 int UtcDaliButtonCopyConstructorP(void)
155 TestApplication application;
157 // Initialize an object, ref count == 1
158 Button button = PushButton::New();
160 Button copy( button );
161 DALI_TEST_CHECK( copy );
165 int UtcDaliButtonAssignmentOperatorP(void)
167 TestApplication application;
169 Button button = PushButton::New();
171 Button copy( button );
172 DALI_TEST_CHECK( copy );
174 DALI_TEST_CHECK( button == copy );
178 int UtcDaliButtonDownCastP(void)
180 TestApplication application;
182 Button button = PushButton::New();
184 BaseHandle object(button);
186 Button button2 = Button::DownCast( object );
187 DALI_TEST_CHECK(button2);
189 Button button3 = DownCast< Button >(object);
190 DALI_TEST_CHECK(button3);
194 int UtcDaliButtonDownCastN(void)
196 TestApplication application;
198 BaseHandle unInitializedObject;
200 Button button1 = Button::DownCast( unInitializedObject );
201 DALI_TEST_CHECK( !button1 );
203 Button button2 = DownCast< Button >( unInitializedObject );
204 DALI_TEST_CHECK( !button2 );
208 int UtcDaliButtonDisabledPropertyP(void)
210 ToolkitTestApplication application;
212 Button button = PushButton::New();
215 button.SetProperty( button.GetPropertyIndex("disabled"), true );
217 DALI_TEST_EQUALS( button.GetProperty<bool>( button.GetPropertyIndex("disabled")), true, TEST_LOCATION );
219 button.SetProperty( button.GetPropertyIndex("disabled"), false );
221 DALI_TEST_EQUALS( button.GetProperty<bool>( button.GetPropertyIndex("disabled")), false, TEST_LOCATION );
223 button.SetProperty( button.GetPropertyIndex("disabled"), true );
225 DALI_TEST_EQUALS( button.GetProperty<bool>( button.GetPropertyIndex("disabled")), true, TEST_LOCATION );
227 button.SetProperty( button.GetPropertyIndex("disabled"), false );
229 DALI_TEST_EQUALS( button.GetProperty<bool>( button.GetPropertyIndex("disabled")), false, TEST_LOCATION );
234 int UtcDaliButtonSetDisabledWithDifferentStates01P(void)
236 ToolkitTestApplication application;
238 tet_infoline("UtcDaliButtonSetDisabledWithDifferentStates01P\n");
240 Button button = PushButton::New();
242 bool SELECTED = true;
244 button.SetProperty( Button::Property::TOGGLABLE, true);
245 button.SetProperty( Button::Property::SELECTED, SELECTED );
247 button.SetProperty( Button::Property::DISABLED, true);
249 tet_infoline("Set button to SELECTED = false whilst disabled, should not change to false\n");
250 button.SetProperty( Button::Property::SELECTED, !SELECTED );
252 bool isSelected = button.GetProperty<bool>( Button::Property::SELECTED ) ;
254 DALI_TEST_EQUALS( isSelected, SELECTED , TEST_LOCATION );
259 int UtcDaliButtonSetDisabledWithDifferentStates02P(void)
261 ToolkitTestApplication application;
263 tet_infoline("UtcDaliButtonSetDisabledWithDifferentStates02\n");
265 Button button = PushButton::New();
267 bool SELECTED = true;
269 button.SetProperty( Button::Property::TOGGLABLE, true );
270 button.SetProperty( Button::Property::SELECTED, SELECTED );
271 button.SetProperty( Button::Property::DISABLED, true );
273 bool isSelected = button.GetProperty<bool>( Button::Property::SELECTED );
274 DALI_TEST_EQUALS( isSelected, SELECTED , TEST_LOCATION );
275 tet_infoline("Set button to DISABLED = false whilst disabled and then set to unselected\n");
277 button.SetProperty( Button::Property::DISABLED, false );
278 button.SetProperty( Button::Property::SELECTED, !SELECTED );
280 isSelected = button.GetProperty<bool>( Button::Property::SELECTED );
281 DALI_TEST_EQUALS( isSelected, !SELECTED , TEST_LOCATION );
286 int UtcDaliButtonPropertyGetLabelAlignment(void)
288 ToolkitTestApplication application;
289 tet_infoline(" UtcDaliPushButtonPropertyGetLabelAlignment\n");
291 Button button = PushButton::New();
292 button.SetProperty( Toolkit::DevelButton::Property::LABEL_RELATIVE_ALIGNMENT, "END" );
293 DALI_TEST_EQUALS( button.GetProperty<std::string>( Toolkit::DevelButton::Property::LABEL_RELATIVE_ALIGNMENT ), "END", TEST_LOCATION );
298 int UtcDaliButtonIsDisabledP(void)
300 ToolkitTestApplication application;
302 Button button = PushButton::New();
304 button.SetDisabled( true );
306 DALI_TEST_CHECK( button.IsDisabled() );
308 button.SetDisabled( false );
310 DALI_TEST_CHECK( !button.IsDisabled() );
314 int UtcDaliButtonAutoRepeatingPropertyP(void)
316 ToolkitTestApplication application;
318 Button button = PushButton::New();
320 button.SetProperty( button.GetPropertyIndex("autoRepeating"), true );
322 DALI_TEST_EQUALS( button.GetProperty<bool>( button.GetPropertyIndex("autoRepeating")), true, TEST_LOCATION );
324 button.SetProperty( button.GetPropertyIndex("autoRepeating"), false );
326 DALI_TEST_EQUALS( button.GetProperty<bool>( button.GetPropertyIndex("autoRepeating")), false, TEST_LOCATION );
328 button.SetProperty( button.GetPropertyIndex("autoRepeating"), true );
330 DALI_TEST_EQUALS( button.GetProperty<bool>( button.GetPropertyIndex("autoRepeating")), true, TEST_LOCATION );
332 button.SetAutoRepeating( false );
334 DALI_TEST_CHECK( !button.IsAutoRepeating() );
338 int UtcDaliButtonIsAutoRepeatingP(void)
340 ToolkitTestApplication application;
342 Button button = PushButton::New();
344 button.SetAutoRepeating( true );
346 DALI_TEST_CHECK( button.IsAutoRepeating() );
348 button.SetAutoRepeating( false );
350 DALI_TEST_CHECK( !button.IsAutoRepeating() );
354 int UtcDaliButtonAutoRepeatingP(void)
356 ToolkitTestApplication application;
357 tet_infoline(" UtcDaliButtonPressedSignalP Setup Autorepeating and check multiple clicked signals received\n");
359 const float AUTO_REPEATING_DELAY = 0.15f;
361 Button button = PushButton::New();
362 button.SetAnchorPoint( AnchorPoint::TOP_LEFT );
363 button.SetParentOrigin( ParentOrigin::TOP_LEFT );
364 button.SetPosition( 240, 400 );
365 button.SetSize( 100, 100 );
366 Stage::GetCurrent().Add( button );
368 application.SendNotification();
369 application.Render();
371 button.SetProperty( Toolkit::Button::Property::AUTO_REPEATING, true );
372 button.SetProperty( Toolkit::Button::Property::INITIAL_AUTO_REPEATING_DELAY, AUTO_REPEATING_DELAY );
373 // connect to its touch signal
374 ConnectionTracker* testTracker = new ConnectionTracker();
375 button.PressedSignal().Connect( &ButtonCallback );
376 button.ClickedSignal().Connect( &ButtonCallback );
377 bool clickedSignal = false;
378 bool pressedSignal = false;
379 button.ConnectSignal( testTracker, "pressed", CallbackFunctor(&pressedSignal) );
380 button.ConnectSignal( testTracker, "clicked", CallbackFunctor(&clickedSignal) );
382 Dali::Integration::TouchEvent event;
384 // Touch point down and up inside the button.
386 gIsCalledButtonCallback = false;
387 event = Dali::Integration::TouchEvent();
388 event.AddPoint( GetPointDownInside() );
389 application.ProcessEvent( event );
391 DALI_TEST_EQUALS( gIsCalledButtonCallback, true, TEST_LOCATION );
392 DALI_TEST_EQUALS( pressedSignal, true, TEST_LOCATION );
393 tet_infoline("Consume first clicked signal then wait\n");
395 gIsCalledButtonCallback = false;
396 Dali::Timer timer = Timer::New( AUTO_REPEATING_DELAY );
397 timer.MockEmitSignal();
398 application.Wait( AUTO_REPEATING_DELAY*2 );
399 DALI_TEST_EQUALS( clickedSignal, true, TEST_LOCATION );
400 tet_infoline("Check gIsCalledButtonCallback was called again after last consumption of it.\n");
402 DALI_TEST_EQUALS( gIsCalledButtonCallback, true, TEST_LOCATION );
404 gIsCalledButtonCallback = false;
405 event = Dali::Integration::TouchEvent();
406 event.AddPoint( GetPointUpInside() );
407 application.ProcessEvent( event );
409 DALI_TEST_EQUALS( gIsCalledButtonCallback, true, TEST_LOCATION );
414 int UtcDaliButtonInitialAutoRepeatingDelayPropertyP(void)
416 ToolkitTestApplication application;
418 Button button = PushButton::New();
420 button.SetProperty( button.GetPropertyIndex("initialAutoRepeatingDelay"), 0.5f );
422 DALI_TEST_EQUALS( button.GetProperty<float>( button.GetPropertyIndex("initialAutoRepeatingDelay")), 0.5f, TEST_LOCATION );
424 button.SetProperty( button.GetPropertyIndex("initialAutoRepeatingDelay"), 0.2f );
426 DALI_TEST_EQUALS( button.GetProperty<float>( button.GetPropertyIndex("initialAutoRepeatingDelay")), 0.2f, TEST_LOCATION );
431 int UtcDaliButtonNextAutoRepeatingDelayPropertyP(void)
433 ToolkitTestApplication application;
435 Button button = PushButton::New();
437 button.SetProperty( button.GetPropertyIndex("nextAutoRepeatingDelay"), 0.5f );
439 DALI_TEST_EQUALS( button.GetProperty<float>( button.GetPropertyIndex("nextAutoRepeatingDelay")), 0.5f, TEST_LOCATION );
441 button.SetProperty( button.GetPropertyIndex("nextAutoRepeatingDelay"), 0.2f );
443 DALI_TEST_EQUALS( button.GetProperty<float>( button.GetPropertyIndex("nextAutoRepeatingDelay")), 0.2f, TEST_LOCATION );
447 int UtcDaliButtonTogglableButtonPropertyP(void)
449 ToolkitTestApplication application;
451 Button button = PushButton::New();
453 button.SetProperty( button.GetPropertyIndex("togglable"), true );
455 DALI_TEST_EQUALS( button.GetProperty<bool>( button.GetPropertyIndex("togglable")), true, TEST_LOCATION );
457 button.SetProperty( button.GetPropertyIndex("togglable"), false );
459 DALI_TEST_EQUALS( button.GetProperty<bool>( button.GetPropertyIndex("togglable")), false, TEST_LOCATION );
463 int UtcDaliButtonSelectedPropertyP(void)
465 ToolkitTestApplication application;
467 Button button = PushButton::New();
468 button.SetProperty( button.GetPropertyIndex("togglable"), true );
470 button.SetProperty( button.GetPropertyIndex("selected"), true );
472 DALI_TEST_EQUALS( button.GetProperty<bool>( button.GetPropertyIndex("selected")), true, TEST_LOCATION );
474 button.SetProperty( button.GetPropertyIndex("selected"), false );
476 DALI_TEST_EQUALS( button.GetProperty<bool>( button.GetPropertyIndex("selected")), false, TEST_LOCATION );
480 int UtcDaliButtonSetAnimationTimeP(void)
482 ToolkitTestApplication application;
483 tet_infoline(" UtcDaliButtonSetAnimationTimeP");
485 Button button = PushButton::New();
487 button.SetAnimationTime( ANIMATION_TIME );
489 DALI_TEST_EQUALS( button.GetAnimationTime(), ANIMATION_TIME, TEST_LOCATION );
493 int UtcDaliButtonSetLabelStringWithPropertyMapP(void)
495 ToolkitTestApplication application;
497 Button button = PushButton::New();
498 button.SetProperty( Toolkit::Button::Property::LABEL,
499 Property::Map().Add( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT )
500 .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f )
501 .Add( Toolkit::TextVisual::Property::TEXT, "Button Label")
504 DALI_TEST_EQUALS( GetButtonText( button ), "Button Label", TEST_LOCATION );
508 int UtcDaliButtonSetLabelStringWithPropertyMapStringsP(void)
510 ToolkitTestApplication application;
512 Button button = PushButton::New();
514 tet_infoline(" UtcDaliButtonSetLabelStringWithPropertyMapStringsP Setting Button text using String then replacing with Enum then string");
516 Property::Map textVisualMapInitial;
517 textVisualMapInitial["visualType"] = "TEXT";
518 textVisualMapInitial["pointSize"] = 15.0f;
519 textVisualMapInitial["text"] = "button label initial";
521 button.SetProperty( Button::Property::LABEL, textVisualMapInitial );
523 DALI_TEST_EQUALS( GetButtonText( button ), "button label initial", TEST_LOCATION );
525 tet_infoline(" UtcDaliButtonSetLabelStringWithPropertyMapStringsP Intermediate part of test");
527 Property::Map propertyMap;
528 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT );
529 propertyMap.Insert( Toolkit::TextVisual::Property::TEXT, "error if this is the final text" );
530 propertyMap.Insert( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f );
532 button.SetProperty( Button::Property::LABEL, propertyMap );
534 DALI_TEST_EQUALS( GetButtonText( button ), "error if this is the final text", TEST_LOCATION );
536 tet_infoline(" UtcDaliButtonSetLabelStringWithPropertyMapStringsP Final part of test");
538 Property::Map textVisualMap;
539 textVisualMap["visualType"] = "TEXT";
540 textVisualMap["pointSize"] = 15.0f;
541 textVisualMap["text"] = "Button Label";
543 button.SetProperty( Toolkit::Button::Property::LABEL, textVisualMap );
545 DALI_TEST_EQUALS( GetButtonText( button ), "Button Label", TEST_LOCATION );
549 int UtcDaliButtonSetLabelWithStringP(void)
551 ToolkitTestApplication application;
553 Button button = PushButton::New();
555 // Set default point size for text visual as style sheet not available.
556 button.SetProperty( Toolkit::Button::Property::LABEL,
557 Property::Map().Add( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT )
558 .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f )
561 button.SetProperty( Toolkit::Button::Property::LABEL, "Button Label" );
563 DALI_TEST_EQUALS( GetButtonText( button ), "Button Label", TEST_LOCATION );
567 int UtcDaliButtonSetLabelPropertyP(void)
569 ToolkitTestApplication application;
571 tet_infoline(" UtcDaliButtonSetLabelPropertyP Set text label and then set again with new text");
574 const std::string TEST_LABEL1 = "test label one";
575 const std::string TEST_LABEL2 = "test label two";
577 Button button = PushButton::New();
579 button.SetProperty( Toolkit::Button::Property::LABEL,
580 Property::Map().Add( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT )
581 .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f )
582 .Add( Toolkit::TextVisual::Property::TEXT, TEST_LABEL1 )
585 DALI_TEST_EQUALS( GetButtonText( button ), TEST_LABEL1, TEST_LOCATION );
587 Property::Map propertyMap;
588 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT );
589 propertyMap.Insert( Toolkit::TextVisual::Property::TEXT, TEST_LABEL2 );
590 propertyMap.Insert( Toolkit::TextVisual::Property::TEXT_COLOR, Color::BLUE );
591 propertyMap.Insert( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f );
592 button.SetProperty( Button::Property::LABEL, propertyMap );
594 DALI_TEST_EQUALS( GetButtonText( button ), TEST_LABEL2, TEST_LOCATION );
599 int UtcDaliButtonPressedSignalP(void)
601 ToolkitTestApplication application;
602 tet_infoline(" UtcDaliButtonPressedSignalP");
604 Button button = PushButton::New();
605 button.SetAnchorPoint( AnchorPoint::TOP_LEFT );
606 button.SetParentOrigin( ParentOrigin::TOP_LEFT );
607 button.SetPosition( 240, 400 );
608 button.SetSize( 100, 100 );
610 Stage::GetCurrent().Add( button );
612 application.SendNotification();
613 application.Render();
615 // connect to its touch signal
616 ConnectionTracker* testTracker = new ConnectionTracker();
617 button.PressedSignal().Connect( &ButtonCallback );
618 button.ReleasedSignal().Connect( &ButtonCallback );
619 bool pressedSignal = false;
620 bool releasedSignal = false;
621 button.ConnectSignal( testTracker, "pressed", CallbackFunctor(&pressedSignal) );
622 button.ConnectSignal( testTracker, "released", CallbackFunctor(&releasedSignal) );
624 Dali::Integration::TouchEvent event;
626 // Test1. Touch point down and up inside the button.
628 gIsCalledButtonCallback = false;
629 event = Dali::Integration::TouchEvent();
630 event.AddPoint( GetPointDownInside() );
631 application.ProcessEvent( event );
633 DALI_TEST_CHECK( gIsCalledButtonCallback );
634 DALI_TEST_CHECK( pressedSignal );
636 gIsCalledButtonCallback = false;
637 event = Dali::Integration::TouchEvent();
638 event.AddPoint( GetPointUpInside() );
639 application.ProcessEvent( event );
641 DALI_TEST_CHECK( gIsCalledButtonCallback );
642 DALI_TEST_CHECK( releasedSignal );
644 // Test2. Touch point down and up outside the button.
646 pressedSignal = false;
647 releasedSignal = false;
648 gIsCalledButtonCallback = false;
649 event = Dali::Integration::TouchEvent();
650 event.AddPoint( GetPointDownOutside() );
651 application.ProcessEvent( event );
653 DALI_TEST_CHECK( !gIsCalledButtonCallback );
654 DALI_TEST_CHECK( !pressedSignal );
656 gIsCalledButtonCallback = false;
657 event = Dali::Integration::TouchEvent();
658 event.AddPoint( GetPointUpOutside() );
659 application.ProcessEvent( event );
661 DALI_TEST_CHECK( !gIsCalledButtonCallback );
662 DALI_TEST_CHECK( !releasedSignal );
664 // Test3. Touch point down inside and up outside the button.
666 gIsCalledButtonCallback = false;
667 event = Dali::Integration::TouchEvent();
668 event.AddPoint( GetPointDownInside() );
669 application.ProcessEvent( event );
671 DALI_TEST_CHECK( gIsCalledButtonCallback );
673 gIsCalledButtonCallback = false;
674 event = Dali::Integration::TouchEvent();
675 event.AddPoint( GetPointLeave() );
676 application.ProcessEvent( event );
678 event = Dali::Integration::TouchEvent();
679 event.AddPoint( GetPointUpOutside() );
680 application.ProcessEvent( event );
682 DALI_TEST_CHECK( gIsCalledButtonCallback );
684 // Test4. Touch point down outside and up inside the button.
686 gIsCalledButtonCallback = false;
687 event = Dali::Integration::TouchEvent();
688 event.AddPoint( GetPointDownOutside() );
689 application.ProcessEvent( event );
691 DALI_TEST_CHECK( !gIsCalledButtonCallback );
693 gIsCalledButtonCallback = false;
694 event = Dali::Integration::TouchEvent();
695 event.AddPoint( GetPointEnter() );
696 application.ProcessEvent( event );
698 event = Dali::Integration::TouchEvent();
699 event.AddPoint( GetPointUpInside() );
700 application.ProcessEvent( event );
702 DALI_TEST_CHECK( !gIsCalledButtonCallback );
706 int UtcDaliButtonClickedSignalP(void)
708 ToolkitTestApplication application;
709 tet_infoline(" UtcDaliButtonClickedSignalP");
711 Button button = PushButton::New();
712 button.SetAnchorPoint( AnchorPoint::TOP_LEFT );
713 button.SetParentOrigin( ParentOrigin::TOP_LEFT );
714 button.SetPosition( 240, 400 );
715 button.SetSize( 100, 100 );
717 Stage::GetCurrent().Add( button );
719 application.SendNotification();
720 application.Render();
722 // connect to its touch signal
723 button.ClickedSignal().Connect( &ButtonCallback );
724 bool clickedSignal = false;
725 ConnectionTracker* testTracker = new ConnectionTracker();
726 button.ConnectSignal( testTracker, "clicked", CallbackFunctor(&clickedSignal) );
728 Dali::Integration::TouchEvent event;
730 // Test1. Touch point down and up inside the button.
732 gIsCalledButtonCallback = false;
733 event = Dali::Integration::TouchEvent();
734 event.AddPoint( GetPointDownInside() );
735 application.ProcessEvent( event );
737 event = Dali::Integration::TouchEvent();
738 event.AddPoint( GetPointUpInside() );
739 application.ProcessEvent( event );
741 DALI_TEST_CHECK( gIsCalledButtonCallback );
742 DALI_TEST_CHECK( clickedSignal );
744 // Test2. Touch point down and up outside the button.
746 gIsCalledButtonCallback = false;
747 clickedSignal = false;
748 event = Dali::Integration::TouchEvent();
749 event.AddPoint( GetPointDownOutside() );
750 application.ProcessEvent( event );
752 event = Dali::Integration::TouchEvent();
753 event.AddPoint( GetPointUpOutside() );
754 application.ProcessEvent( event );
756 DALI_TEST_CHECK( !gIsCalledButtonCallback );
757 DALI_TEST_CHECK( !clickedSignal );
759 // Test3. Touch point down inside and up outside the button.
761 gIsCalledButtonCallback = false;
762 clickedSignal = false;
763 event = Dali::Integration::TouchEvent();
764 event.AddPoint( GetPointDownInside() );
765 application.ProcessEvent( event );
767 event = Dali::Integration::TouchEvent();
768 event.AddPoint( GetPointLeave() );
769 application.ProcessEvent( event );
771 event = Dali::Integration::TouchEvent();
772 event.AddPoint( GetPointUpOutside() );
773 application.ProcessEvent( event );
775 DALI_TEST_CHECK( !gIsCalledButtonCallback );
776 DALI_TEST_CHECK( !clickedSignal );
778 // Test4. Touch point down outside and up inside the button.
780 gIsCalledButtonCallback = false;
781 clickedSignal = false;
782 event = Dali::Integration::TouchEvent();
783 event.AddPoint( GetPointDownOutside() );
784 application.ProcessEvent( event );
786 event = Dali::Integration::TouchEvent();
787 event.AddPoint( GetPointEnter() );
788 application.ProcessEvent( event );
790 event = Dali::Integration::TouchEvent();
791 event.AddPoint( GetPointUpInside() );
792 application.ProcessEvent( event );
794 DALI_TEST_CHECK( !gIsCalledButtonCallback );
795 DALI_TEST_CHECK( !clickedSignal );
799 int UtcDaliButtonStateChangedSignalP(void)
801 ToolkitTestApplication application;
802 tet_infoline(" UtcDaliButtonStateChangedSignalP");
804 Button button = PushButton::New();
806 button.SetProperty( Button::Property::TOGGLABLE, true);
808 Stage::GetCurrent().Add( button );
810 application.SendNotification();
811 application.Render();
813 // connect to its signal
814 button.StateChangedSignal().Connect( &ButtonCallback );
815 bool stateChangedSignal = false;
816 ConnectionTracker* testTracker = new ConnectionTracker();
817 button.ConnectSignal( testTracker, "stateChanged", CallbackFunctor(&stateChangedSignal) );
819 gIsCalledButtonCallback = false;
820 button.SetProperty( Button::Property::SELECTED, true);
822 DALI_TEST_CHECK( gIsCalledButtonCallback );
823 DALI_TEST_CHECK( stateChangedSignal );
825 gIsCalledButtonCallback = false;
826 stateChangedSignal = false;
828 button.SetProperty( Button::Property::SELECTED, false);
829 DALI_TEST_CHECK( gIsCalledButtonCallback );
830 DALI_TEST_CHECK( stateChangedSignal );
834 int UtcDaliButtonSetProperty(void)
836 tet_infoline("UtcDaliButtonSetProperty: ");
837 ToolkitTestApplication application;
839 PushButton pushButton = PushButton::New();
841 pushButton.SetProperty(pushButton.GetPropertyIndex("disabled"), false);
843 DALI_TEST_EQUALS( pushButton.GetProperty<bool>( pushButton.GetPropertyIndex("disabled")), false, TEST_LOCATION );
845 pushButton.SetProperty(pushButton.GetPropertyIndex("disabled"), true);
846 DALI_TEST_EQUALS( pushButton.GetProperty<bool>( pushButton.GetPropertyIndex("disabled")), true, TEST_LOCATION );
851 // Deprecated API Tests
853 int UtcDaliButtonSetDisabledP(void)
855 ToolkitTestApplication application;
857 Button button = PushButton::New();
859 button.SetDisabled( true );
861 DALI_TEST_CHECK( button.IsDisabled() );
863 button.SetDisabled( false );
865 DALI_TEST_CHECK( !button.IsDisabled() );
867 button.SetDisabled( true );
869 DALI_TEST_CHECK( button.IsDisabled() );
871 button.SetDisabled( false );
873 DALI_TEST_CHECK( !button.IsDisabled() );
877 int UtcDaliButtonSetAutoRepeatingP(void)
879 ToolkitTestApplication application;
881 Button button = PushButton::New();
883 button.SetAutoRepeating( true );
885 DALI_TEST_CHECK( button.IsAutoRepeating() );
887 button.SetAutoRepeating( false );
889 DALI_TEST_CHECK( !button.IsAutoRepeating() );
891 button.SetAutoRepeating( true );
893 DALI_TEST_CHECK( button.IsAutoRepeating() );
895 button.SetAutoRepeating( false );
897 DALI_TEST_CHECK( !button.IsAutoRepeating() );
901 int UtcDaliButtonSetInitialAutoRepeatingDelayP(void)
903 ToolkitTestApplication application;
905 Button button = PushButton::New();
907 button.SetInitialAutoRepeatingDelay( 0.5f );
909 DALI_TEST_EQUALS( button.GetInitialAutoRepeatingDelay(), 0.5f, TEST_LOCATION );
911 button.SetInitialAutoRepeatingDelay( 0.2f );
913 DALI_TEST_EQUALS( button.GetInitialAutoRepeatingDelay(), 0.2f, TEST_LOCATION );
917 int UtcDaliButtonSetNextAutoRepeatingDelayP(void)
919 ToolkitTestApplication application;
921 Button button = PushButton::New();
923 button.SetNextAutoRepeatingDelay( 0.5f );
925 DALI_TEST_EQUALS( button.GetNextAutoRepeatingDelay(), 0.5f, TEST_LOCATION );
927 button.SetProperty( Button::Property::NEXT_AUTO_REPEATING_DELAY, 0.2f );
929 DALI_TEST_EQUALS( button.GetNextAutoRepeatingDelay(), 0.2f, TEST_LOCATION );
933 int UtcDaliButtonSetTogglableButtonP(void)
935 ToolkitTestApplication application;
937 Button button = PushButton::New();
939 button.SetTogglableButton( true );
941 DALI_TEST_CHECK( button.IsTogglableButton() );
943 button.SetTogglableButton( false );
945 DALI_TEST_CHECK( !button.IsTogglableButton() );
949 int UtcDaliButtonSetSelectedP(void)
951 ToolkitTestApplication application;
953 Button button = PushButton::New();
954 button.SetTogglableButton( true );
956 button.SetSelected( true );
958 DALI_TEST_CHECK( button.IsSelected() );
960 button.SetSelected( false );
962 DALI_TEST_CHECK( !button.IsSelected() );