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 const char* TEST_IMAGE_ONE = TEST_RESOURCE_DIR "/gallery-small-1.jpg";
52 static bool gIsCalledButtonCallback = false;
54 const int RENDER_FRAME_INTERVAL = 16;
56 static bool ButtonCallback( Button button )
58 gIsCalledButtonCallback = true;
62 static std::string GetButtonText( Button button )
64 Property::Value value = button.GetProperty( Toolkit::Button::Property::LABEL );
66 Property::Map *labelProperty = value.GetMap();
68 std::string textLabel;
72 Property::Value* value = labelProperty->Find( Toolkit::TextVisual::Property::TEXT );
73 value->Get( textLabel );
79 struct CallbackFunctor
81 CallbackFunctor(bool* callbackFlag)
82 : mCallbackFlag( callbackFlag )
88 *mCallbackFlag = true;
93 Dali::Integration::Point GetPointDownInside()
95 Dali::Integration::Point point;
96 point.SetState( PointState::DOWN );
97 point.SetScreenPosition( Vector2( 240, 400 ) );
101 Dali::Integration::Point GetPointUpInside()
103 Dali::Integration::Point point;
104 point.SetState( PointState::UP );
105 point.SetScreenPosition( Vector2( 240, 400 ) );
109 Dali::Integration::Point GetPointLeave()
111 Dali::Integration::Point point;
112 point.SetState( PointState::LEAVE );
113 point.SetScreenPosition( Vector2( 240, 400 ) );
117 Dali::Integration::Point GetPointEnter()
119 Dali::Integration::Point point;
120 point.SetState( PointState::MOTION );
121 point.SetScreenPosition( Vector2( 240, 400 ) );
125 Dali::Integration::Point GetPointDownOutside()
127 Dali::Integration::Point point;
128 point.SetState( PointState::DOWN );
129 point.SetScreenPosition( Vector2( 10, 10 ) );
133 Dali::Integration::Point GetPointUpOutside()
135 Dali::Integration::Point point;
136 point.SetState( PointState::UP );
137 point.SetScreenPosition( Vector2( 10, 10 ) );
141 static float ANIMATION_TIME( 0.5f );
145 int UtcDaliButtonConstructorP(void)
147 TestApplication application;
151 DALI_TEST_CHECK( !button );
155 int UtcDaliButtonCopyConstructorP(void)
157 TestApplication application;
159 // Initialize an object, ref count == 1
160 Button button = PushButton::New();
162 Button copy( button );
163 DALI_TEST_CHECK( copy );
167 int UtcDaliButtonAssignmentOperatorP(void)
169 TestApplication application;
171 Button button = PushButton::New();
173 Button copy( button );
174 DALI_TEST_CHECK( copy );
176 DALI_TEST_CHECK( button == copy );
180 int UtcDaliButtonDownCastP(void)
182 TestApplication application;
184 Button button = PushButton::New();
186 BaseHandle object(button);
188 Button button2 = Button::DownCast( object );
189 DALI_TEST_CHECK(button2);
191 Button button3 = DownCast< Button >(object);
192 DALI_TEST_CHECK(button3);
196 int UtcDaliButtonDownCastN(void)
198 TestApplication application;
200 BaseHandle unInitializedObject;
202 Button button1 = Button::DownCast( unInitializedObject );
203 DALI_TEST_CHECK( !button1 );
205 Button button2 = DownCast< Button >( unInitializedObject );
206 DALI_TEST_CHECK( !button2 );
210 int UtcDaliButtonSetDisabledP(void)
212 ToolkitTestApplication application;
214 Button button = PushButton::New();
216 button.SetDisabled( true );
218 DALI_TEST_CHECK( button.IsDisabled() );
220 button.SetDisabled( false );
222 DALI_TEST_CHECK( !button.IsDisabled() );
224 button.SetDisabled( true );
226 DALI_TEST_CHECK( button.IsDisabled() );
228 button.SetDisabled( false );
230 DALI_TEST_CHECK( !button.IsDisabled() );
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 UtcDaliButtonSetAutoRepeatingP(void)
316 ToolkitTestApplication application;
318 Button button = PushButton::New();
320 button.SetAutoRepeating( true );
322 DALI_TEST_CHECK( button.IsAutoRepeating() );
324 button.SetAutoRepeating( false );
326 DALI_TEST_CHECK( !button.IsAutoRepeating() );
328 button.SetAutoRepeating( true );
330 DALI_TEST_CHECK( button.IsAutoRepeating() );
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 UtcDaliButtonSetInitialAutoRepeatingDelayP(void)
416 ToolkitTestApplication application;
418 Button button = PushButton::New();
420 button.SetInitialAutoRepeatingDelay( 0.5f );
422 DALI_TEST_EQUALS( button.GetInitialAutoRepeatingDelay(), 0.5f, TEST_LOCATION );
424 button.SetInitialAutoRepeatingDelay( 0.2f );
426 DALI_TEST_EQUALS( button.GetInitialAutoRepeatingDelay(), 0.2f, TEST_LOCATION );
430 int UtcDaliButtonSetNextAutoRepeatingDelayP(void)
432 ToolkitTestApplication application;
434 Button button = PushButton::New();
436 button.SetNextAutoRepeatingDelay( 0.5f );
438 DALI_TEST_EQUALS( button.GetNextAutoRepeatingDelay(), 0.5f, TEST_LOCATION );
440 button.SetProperty( Button::Property::NEXT_AUTO_REPEATING_DELAY, 0.2f );
442 DALI_TEST_EQUALS( button.GetNextAutoRepeatingDelay(), 0.2f, TEST_LOCATION );
446 int UtcDaliButtonSetTogglableButtonP(void)
448 ToolkitTestApplication application;
450 Button button = PushButton::New();
452 button.SetTogglableButton( true );
454 DALI_TEST_CHECK( button.IsTogglableButton() );
456 button.SetTogglableButton( false );
458 DALI_TEST_CHECK( !button.IsTogglableButton() );
462 int UtcDaliButtonSetSelectedP(void)
464 ToolkitTestApplication application;
466 Button button = PushButton::New();
467 button.SetTogglableButton( true );
469 button.SetSelected( true );
471 DALI_TEST_CHECK( button.IsSelected() );
473 button.SetSelected( false );
475 DALI_TEST_CHECK( !button.IsSelected() );
479 int UtcDaliButtonSetAnimationTimeP(void)
481 ToolkitTestApplication application;
482 tet_infoline(" UtcDaliButtonSetAnimationTimeP");
484 Button button = PushButton::New();
486 button.SetAnimationTime( ANIMATION_TIME );
488 DALI_TEST_EQUALS( button.GetAnimationTime(), ANIMATION_TIME, TEST_LOCATION );
492 int UtcDaliButtonSetLabelStringWithPropertyMapP(void)
494 ToolkitTestApplication application;
496 Button button = PushButton::New();
497 button.SetProperty( Toolkit::Button::Property::LABEL,
498 Property::Map().Add( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT )
499 .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f )
500 .Add( Toolkit::TextVisual::Property::TEXT, "Button Label")
503 DALI_TEST_EQUALS( GetButtonText( button ), "Button Label", TEST_LOCATION );
507 int UtcDaliButtonSetLabelWithStringP(void)
509 ToolkitTestApplication application;
511 Button button = PushButton::New();
513 // Set default point size for text visual as style sheet not available.
514 button.SetProperty( Toolkit::Button::Property::LABEL,
515 Property::Map().Add( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT )
516 .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f )
519 button.SetProperty( Toolkit::Button::Property::LABEL, "Button Label" );
521 DALI_TEST_EQUALS( GetButtonText( button ), "Button Label", TEST_LOCATION );
525 int UtcDaliButtonSetLabelPropertyP(void)
527 ToolkitTestApplication application;
529 tet_infoline(" UtcDaliButtonSetLabelPropertyP Set text label and then set again with new text");
532 const std::string TEST_LABEL1 = "test label one";
533 const std::string TEST_LABEL2 = "test label two";
535 Button button = PushButton::New();
537 button.SetProperty( Toolkit::Button::Property::LABEL,
538 Property::Map().Add( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT )
539 .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f )
540 .Add( Toolkit::TextVisual::Property::TEXT, TEST_LABEL1 )
543 DALI_TEST_EQUALS( GetButtonText( button ), TEST_LABEL1, TEST_LOCATION );
545 Property::Map propertyMap;
546 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT );
547 propertyMap.Insert( Toolkit::TextVisual::Property::TEXT, TEST_LABEL2 );
548 propertyMap.Insert( Toolkit::TextVisual::Property::TEXT_COLOR, Color::BLUE );
549 propertyMap.Insert( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f );
550 button.SetProperty( Button::Property::LABEL, propertyMap );
552 DALI_TEST_EQUALS( GetButtonText( button ), TEST_LABEL2, TEST_LOCATION );
557 int UtcDaliButtonSetUnselectedImageP(void)
559 ToolkitTestApplication application;
560 tet_infoline(" UtcDaliButtonSetUnselectedImageP");
562 PushButton pushButton = PushButton::New();
563 Stage::GetCurrent().Add( pushButton );
565 application.SendNotification();
566 application.Render();
568 pushButton.SetUnselectedImage( "Image.jpg" );
570 application.SendNotification();
571 application.Render();
573 DALI_TEST_CHECK( pushButton );
578 int UtcDaliButtonSetSelectedImageP(void)
580 ToolkitTestApplication application;
581 tet_infoline(" UtcDaliButtonSetButtonImage");
583 PushButton pushButton = PushButton::New();
584 Stage::GetCurrent().Add( pushButton );
586 application.SendNotification();
587 application.Render();
589 pushButton.SetSelectedImage( "Image.jpg" );
591 application.SendNotification();
592 application.Render();
594 DALI_TEST_CHECK( pushButton );
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();
805 button.SetTogglableButton( true );
807 Stage::GetCurrent().Add( button );
809 application.SendNotification();
810 application.Render();
812 // connect to its signal
813 button.StateChangedSignal().Connect( &ButtonCallback );
814 bool stateChangedSignal = false;
815 ConnectionTracker* testTracker = new ConnectionTracker();
816 button.ConnectSignal( testTracker, "stateChanged", CallbackFunctor(&stateChangedSignal) );
818 gIsCalledButtonCallback = false;
819 button.SetSelected( true );
821 DALI_TEST_CHECK( gIsCalledButtonCallback );
822 DALI_TEST_CHECK( stateChangedSignal );
824 gIsCalledButtonCallback = false;
825 stateChangedSignal = false;
827 button.SetSelected( 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);
842 DALI_TEST_CHECK( false == pushButton.IsDisabled() );
844 pushButton.SetProperty(pushButton.GetPropertyIndex("disabled"), true);
845 DALI_TEST_CHECK( true == pushButton.IsDisabled() );
850 int UtcDaliButtonSize(void)
852 ToolkitTestApplication application;
853 tet_infoline(" UtcDaliButtonSize");
855 // First an image is set, then SetSize is called.
856 PushButton pushButton = PushButton::New();
857 Stage::GetCurrent().Add( pushButton );
859 pushButton.SetBackgroundImage( "Image.jpg" );
860 pushButton.SetSize( 10.f, 10.f );
862 application.SendNotification();
863 application.Render();
865 Vector3 size = pushButton.GetCurrentSize();
867 DALI_TEST_EQUALS( size.width, 10.f, TEST_LOCATION );
868 DALI_TEST_EQUALS( size.height, 10.f, TEST_LOCATION );
872 int UtcDaliButtonSetSelectedBackgroundImageP(void)
874 ToolkitTestApplication application;
876 PushButton button = PushButton::New();
877 Stage::GetCurrent().Add( button );
881 button.SetSelectedBackgroundImage( "TestImage.jpg");
882 DALI_TEST_CHECK( true );
886 DALI_TEST_CHECK( false );
892 int UtcDaliButtonSetSelectedBackgroundImageN(void)
894 ToolkitTestApplication application;
900 button.SetSelectedBackgroundImage( "TestImage.jpg");
901 DALI_TEST_CHECK( false );
905 DALI_TEST_CHECK( true );
911 int UtcDaliButtonSetDisabledImageP(void)
913 ToolkitTestApplication application;
915 PushButton button = PushButton::New();
916 Stage::GetCurrent().Add( button );
920 button.SetDisabledImage( "TestImage.jpg");
921 DALI_TEST_CHECK( true );
925 DALI_TEST_CHECK( false );
931 int UtcDaliButtonSetDisabledImageN(void)
933 ToolkitTestApplication application;
939 button.SetDisabledImage( "TestImage.jpg");
940 DALI_TEST_CHECK( false );
944 DALI_TEST_CHECK( true );
950 int UtcDaliButtonSetDisabledSelectedImageP(void)
952 ToolkitTestApplication application;
954 PushButton button = PushButton::New();
955 Stage::GetCurrent().Add( button );
959 button.SetDisabledSelectedImage( "TestImage.jpg");
960 DALI_TEST_CHECK( true );
964 DALI_TEST_CHECK( false );
970 int UtcDaliButtonSetDisabledSelectedImageN(void)
972 ToolkitTestApplication application;
978 button.SetDisabledSelectedImage( "TestImage.jpg");
979 DALI_TEST_CHECK( false );
983 DALI_TEST_CHECK( true );
989 int UtcDaliButtonSetLabeActorlP(void)
991 ToolkitTestApplication application;
993 PushButton button = PushButton::New();
994 Stage::GetCurrent().Add( button );
998 button.SetLabel( TextLabel::New("Hello") );
999 DALI_TEST_CHECK( true );
1003 DALI_TEST_CHECK( false );
1009 int UtcDaliButtonSetLabelN(void)
1011 ToolkitTestApplication application;
1017 button.SetLabel( TextLabel::New("Hello") );
1018 DALI_TEST_CHECK( false );
1022 DALI_TEST_CHECK( true );
1028 int UtcDaliButtonSetButtonImageP(void)
1030 ToolkitTestApplication application;
1032 PushButton button = PushButton::New();
1033 Stage::GetCurrent().Add( button );
1037 ResourceImage image1 = ResourceImage::New( TEST_IMAGE_ONE );
1038 button.SetButtonImage( image1 );
1040 Property::Value value = button.GetProperty(Button::Property::UNSELECTED_STATE_IMAGE );
1041 DALI_TEST_CHECK( value.Get<std::string>() == TEST_IMAGE_ONE );
1045 DALI_TEST_CHECK( false );
1048 std::string imageUrl;
1050 Dali::Actor actor = button.GetButtonImage();
1052 Toolkit::ImageView imageView = Toolkit::ImageView ::DownCast( actor );
1054 tet_infoline(" UtcDaliButtonSetButtonImageP Ensure an ImageView is returned\n");
1055 DALI_TEST_CHECK ( imageView )
1060 int UtcDaliButtonSetButtonImageN(void)
1062 ToolkitTestApplication application;
1068 ResourceImage image1 = ResourceImage::New( TEST_IMAGE_ONE );
1069 button.SetButtonImage( image1 );
1071 DALI_TEST_CHECK( false );
1075 DALI_TEST_CHECK( true );
1081 int UtcDaliButtonSetSelectedImageWithImageP(void)
1083 ToolkitTestApplication application;
1085 PushButton button = PushButton::New();
1086 Stage::GetCurrent().Add( button );
1087 ResourceImage image1 = ResourceImage::New( TEST_IMAGE_ONE );
1091 button.SetSelectedImage( image1 );
1092 Property::Value value = button.GetProperty( Button::Property::SELECTED_STATE_IMAGE );
1093 DALI_TEST_CHECK( value.Get<std::string>() == TEST_IMAGE_ONE );
1097 DALI_TEST_CHECK( false );
1100 std::string imageUrl;
1102 Dali::Actor actor = button.GetSelectedImage();
1104 Toolkit::ImageView imageView = Toolkit::ImageView::DownCast( actor );
1106 tet_infoline(" UtcDaliButtonSetSelectedImageWithImageP Ensure an ImageView is returned\n");
1111 int UtcDaliButtonSetSelectedImageWithImageN(void)
1113 ToolkitTestApplication application;
1119 button.SetSelectedImage( CreateBufferImage( 10, 10, Color::WHITE ) );
1120 DALI_TEST_CHECK( false );
1124 DALI_TEST_CHECK( true );
1130 int UtcDaliButtonSetSelectedColorP(void)
1132 ToolkitTestApplication application;
1133 tet_infoline(" UtcDaliButtonSetSelectedColorP");
1135 PushButton pushButton = PushButton::New();
1136 Stage::GetCurrent().Add( pushButton );
1138 application.SendNotification();
1139 application.Render();
1141 const Vector4 SET_COLOR = Color::BLUE;
1143 pushButton.SetSize( Vector2( 20.0f, 20.0f ) );
1144 pushButton.SetProperty( Button::Property::SELECTED_COLOR, SET_COLOR );
1146 application.SendNotification();
1147 application.Render();
1149 Vector4 color = pushButton.GetProperty<Vector4>( Button::Property::SELECTED_COLOR );
1151 DALI_TEST_EQUALS( color, SET_COLOR, TEST_LOCATION );
1156 int UtcDaliButtonSetUnSelectedColorP(void)
1158 ToolkitTestApplication application;
1159 tet_infoline(" UtcDaliButtonSetUnSelectedColorP");
1161 PushButton pushButton = PushButton::New();
1162 Stage::GetCurrent().Add( pushButton );
1164 application.SendNotification();
1165 application.Render();
1167 const Vector4 SET_COLOR = Color::BLUE;
1169 pushButton.SetSize( Vector2( 20.0f, 20.0f ) );
1170 pushButton.SetProperty( Button::Property::UNSELECTED_COLOR, SET_COLOR );
1172 application.SendNotification();
1173 application.Render();
1175 Vector4 color = pushButton.GetProperty<Vector4>( Button::Property::UNSELECTED_COLOR );
1177 DALI_TEST_EQUALS( color, SET_COLOR, TEST_LOCATION );
1182 int UtcDaliButtonResetSelectedColorP(void)
1184 ToolkitTestApplication application;
1185 tet_infoline(" UtcDaliButtonSetSelectedColorP");
1187 PushButton pushButton = PushButton::New();
1188 Stage::GetCurrent().Add( pushButton );
1190 application.SendNotification();
1191 application.Render();
1193 const Vector4 FIRST_COLOR = Color::BLUE;
1194 const Vector4 SECOND_COLOR = Color::BLUE;
1196 pushButton.SetSize( Vector2( 20.0f, 20.0f ) );
1197 pushButton.SetProperty( Button::Property::SELECTED_COLOR, FIRST_COLOR );
1199 application.SendNotification();
1200 application.Render();
1202 Vector4 color = pushButton.GetProperty<Vector4>( Button::Property::SELECTED_COLOR );
1204 DALI_TEST_EQUALS( color, FIRST_COLOR, TEST_LOCATION );
1206 pushButton.SetProperty( Button::Property::SELECTED_COLOR, SECOND_COLOR );
1208 application.SendNotification();
1209 application.Render();
1211 color = pushButton.GetProperty<Vector4>( Button::Property::SELECTED_COLOR );
1213 DALI_TEST_EQUALS( color, SECOND_COLOR, TEST_LOCATION );
1218 int UtcDaliButtonSetImagesWithDeprecatedProperties(void)
1220 ToolkitTestApplication application;
1221 tet_infoline(" UtcDaliButtonSetImagesWithDeprecatedProperties");
1223 PushButton pushButton = PushButton::New();
1225 Stage::GetCurrent().Add( pushButton );
1227 Property::Map propertyMap;
1228 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1229 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1231 DALI_TEST_EQUALS( pushButton.GetRendererCount(), 0, TEST_LOCATION );
1233 pushButton.SetProperty( Toolkit::Button::Property::UNSELECTED_STATE_IMAGE, propertyMap );
1234 application.SendNotification();
1235 application.Render();
1236 DALI_TEST_EQUALS( pushButton.GetRendererCount(), 1, TEST_LOCATION );
1238 tet_infoline(" Set state to selected and provide SELECTED visual");
1239 pushButton.SetProperty( Toolkit::Button::Property::SELECTED_STATE_IMAGE, propertyMap );
1240 pushButton.SetProperty( Toolkit::Button::Property::SELECTED, true );
1241 application.SendNotification();
1242 application.Render();
1243 DALI_TEST_EQUALS( pushButton.GetRendererCount(), 1, TEST_LOCATION );
1245 tet_infoline(" Set state to selected, disabled and provide DISABLED_STATE_IMAGE visual");
1246 pushButton.SetProperty( Toolkit::Button::Property::SELECTED, false );
1247 pushButton.SetProperty( Toolkit::Button::Property::DISABLED, true );
1248 pushButton.SetProperty( Toolkit::Button::Property::DISABLED_STATE_IMAGE, propertyMap );
1249 application.SendNotification();
1250 application.Render();
1251 DALI_TEST_EQUALS( pushButton.GetRendererCount(), 1, TEST_LOCATION );
1256 int UtcDaliButtonSetGetDepreciatedPropertiesWithURL(void)
1258 ToolkitTestApplication application;
1259 tet_infoline(" UtcDaliButtonSetGetDepreciatedPropertiesWithURL");
1261 PushButton button = PushButton::New();
1262 Stage::GetCurrent().Add( button );
1264 tet_infoline(" Set state to selected, disabled and provide DISABLED_STATE_IMAGE visual");
1265 button.SetProperty( Toolkit::Button::Property::DISABLED, true );
1266 button.SetProperty( Toolkit::Button::Property::DISABLED_STATE_IMAGE, TEST_IMAGE_ONE );
1268 Property::Value value = button.GetProperty(Button::Property::DISABLED_STATE_IMAGE );
1269 DALI_TEST_EQUALS( value.Get<std::string>(), TEST_IMAGE_ONE, TEST_LOCATION );
1274 int UtcDaliButtonSetLabelTextDeprecatedPropertyP(void)
1276 ToolkitTestApplication application;
1277 tet_infoline(" UtcDaliButtonSetLabelTextDeprecatedPropertyP");
1279 const std::string TEST_LABEL1 = "test label one";
1280 const std::string TEST_LABEL2 = "test label two";
1282 Button button = PushButton::New();
1284 button.SetProperty( Toolkit::Button::Property::LABEL,
1285 Property::Map().Add( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT )
1286 .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f )
1289 button.SetProperty( Button::Property::LABEL_TEXT, TEST_LABEL1 );
1291 std::string labelText = button.GetProperty<std::string>( Button::Property::LABEL_TEXT );
1293 DALI_TEST_EQUALS( labelText, TEST_LABEL1, TEST_LOCATION );
1295 Property::Map propertyMap;
1296 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::TEXT );
1297 propertyMap.Insert( Toolkit::TextVisual::Property::TEXT, TEST_LABEL2 );
1298 propertyMap.Insert( Toolkit::TextVisual::Property::TEXT_COLOR, Color::BLUE );
1299 propertyMap.Insert( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f );
1300 button.SetProperty( Button::Property::LABEL, propertyMap );
1302 labelText = button.GetProperty<std::string>( Button::Property::LABEL_TEXT );
1304 DALI_TEST_EQUALS( labelText, TEST_LABEL2, TEST_LOCATION );