Implemented Deprecated GetSelectedImage and GetButtonImage
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-Button.cpp
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 #include <iostream>
19 #include <stdlib.h>
20
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"
25
26 #include <dali.h>
27 #include <dali-toolkit/dali-toolkit.h>
28 #include <dali/integration-api/events/touch-event-integ.h>
29
30 using namespace Dali;
31 using namespace Toolkit;
32
33
34 void utc_dali_toolkit_button_startup(void)
35 {
36   test_return_value = TET_UNDEF;
37 }
38
39 void utc_dali_toolkit_button_cleanup(void)
40 {
41   test_return_value = TET_PASS;
42 }
43
44 namespace
45 {
46 static const char* TEST_IMAGE_ONE = TEST_RESOURCE_DIR "/gallery-small-1.jpg";
47
48 static bool gIsCalledButtonCallback = false;
49
50 const int RENDER_FRAME_INTERVAL = 16;
51
52 static bool ButtonCallback( Button button )
53 {
54   gIsCalledButtonCallback = true;
55   return false;
56 }
57
58 struct CallbackFunctor
59 {
60   CallbackFunctor(bool* callbackFlag)
61   : mCallbackFlag( callbackFlag )
62   {
63   }
64
65   void operator()()
66   {
67     *mCallbackFlag = true;
68   }
69   bool* mCallbackFlag;
70 };
71
72 Dali::Integration::Point GetPointDownInside()
73 {
74   Dali::Integration::Point point;
75   point.SetState( PointState::DOWN );
76   point.SetScreenPosition( Vector2( 240, 400 ) );
77   return point;
78 }
79
80 Dali::Integration::Point GetPointUpInside()
81 {
82   Dali::Integration::Point point;
83   point.SetState( PointState::UP );
84   point.SetScreenPosition( Vector2( 240, 400 ) );
85   return point;
86 }
87
88 Dali::Integration::Point GetPointLeave()
89 {
90   Dali::Integration::Point point;
91   point.SetState( PointState::LEAVE );
92   point.SetScreenPosition( Vector2( 240, 400 ) );
93   return point;
94 }
95
96 Dali::Integration::Point GetPointEnter()
97 {
98   Dali::Integration::Point point;
99   point.SetState( PointState::MOTION );
100   point.SetScreenPosition( Vector2( 240, 400 ) );
101   return point;
102 }
103
104 Dali::Integration::Point GetPointDownOutside()
105 {
106   Dali::Integration::Point point;
107   point.SetState( PointState::DOWN );
108   point.SetScreenPosition( Vector2( 10, 10 ) );
109   return point;
110 }
111
112 Dali::Integration::Point GetPointUpOutside()
113 {
114   Dali::Integration::Point point;
115   point.SetState( PointState::UP );
116   point.SetScreenPosition( Vector2( 10, 10 ) );
117   return point;
118 }
119
120 static float ANIMATION_TIME( 0.5f );
121
122 } // namespace
123
124 int UtcDaliButtonConstructorP(void)
125 {
126   TestApplication application;
127
128   Button button;
129
130   DALI_TEST_CHECK( !button );
131   END_TEST;
132 }
133
134 int UtcDaliButtonCopyConstructorP(void)
135 {
136   TestApplication application;
137
138   // Initialize an object, ref count == 1
139   Button button = PushButton::New();
140
141   Button copy( button );
142   DALI_TEST_CHECK( copy );
143   END_TEST;
144 }
145
146 int UtcDaliButtonAssignmentOperatorP(void)
147 {
148   TestApplication application;
149
150   Button button = PushButton::New();
151
152   Button copy( button );
153   DALI_TEST_CHECK( copy );
154
155   DALI_TEST_CHECK( button == copy );
156   END_TEST;
157 }
158
159 int UtcDaliButtonDownCastP(void)
160 {
161   TestApplication application;
162
163   Button button = PushButton::New();
164
165   BaseHandle object(button);
166
167   Button button2 = Button::DownCast( object );
168   DALI_TEST_CHECK(button2);
169
170   Button button3 = DownCast< Button >(object);
171   DALI_TEST_CHECK(button3);
172   END_TEST;
173 }
174
175 int UtcDaliButtonDownCastN(void)
176 {
177   TestApplication application;
178
179   BaseHandle unInitializedObject;
180
181   Button button1 = Button::DownCast( unInitializedObject );
182   DALI_TEST_CHECK( !button1 );
183
184   Button button2 = DownCast< Button >( unInitializedObject );
185   DALI_TEST_CHECK( !button2 );
186   END_TEST;
187 }
188
189 int UtcDaliButtonSetDisabledP(void)
190 {
191   ToolkitTestApplication application;
192
193   Button button = PushButton::New();
194
195   button.SetDisabled( true );
196
197   DALI_TEST_CHECK( button.IsDisabled() );
198
199   button.SetDisabled( false );
200
201   DALI_TEST_CHECK( !button.IsDisabled() );
202
203   button.SetDisabled( true );
204
205   DALI_TEST_CHECK( button.IsDisabled() );
206
207   button.SetDisabled( false );
208
209   DALI_TEST_CHECK( !button.IsDisabled() );
210   END_TEST;
211 }
212
213 int UtcDaliButtonSetDisabledWithDifferentStates01P(void)
214 {
215   ToolkitTestApplication application;
216
217   tet_infoline("UtcDaliButtonSetDisabledWithDifferentStates01P\n");
218
219   Button button = PushButton::New();
220
221   bool SELECTED = true;
222
223   button.SetProperty( Button::Property::TOGGLABLE, true);
224   button.SetProperty( Button::Property::SELECTED, SELECTED );
225
226   button.SetProperty( Button::Property::DISABLED, true);
227
228   tet_infoline("Set button to SELECTED = false whilst disabled, should not change to false\n");
229   button.SetProperty( Button::Property::SELECTED, !SELECTED );
230
231   bool isSelected = button.GetProperty<bool>( Button::Property::SELECTED ) ;
232
233   DALI_TEST_EQUALS( isSelected, SELECTED , TEST_LOCATION );
234
235   END_TEST;
236 }
237
238 int UtcDaliButtonSetDisabledWithDifferentStates02P(void)
239 {
240   ToolkitTestApplication application;
241
242   tet_infoline("UtcDaliButtonSetDisabledWithDifferentStates02\n");
243
244   Button button = PushButton::New();
245
246   bool SELECTED = true;
247
248   button.SetProperty( Button::Property::TOGGLABLE, true );
249   button.SetProperty( Button::Property::SELECTED, SELECTED );
250   button.SetProperty( Button::Property::DISABLED, true );
251
252   bool isSelected =  button.GetProperty<bool>( Button::Property::SELECTED );
253   DALI_TEST_EQUALS( isSelected, SELECTED , TEST_LOCATION );
254   tet_infoline("Set button to DISABLED = false whilst disabled and then set to unselected\n");
255
256   button.SetProperty( Button::Property::DISABLED, false );
257   button.SetProperty( Button::Property::SELECTED, !SELECTED );
258
259   isSelected = button.GetProperty<bool>( Button::Property::SELECTED );
260   DALI_TEST_EQUALS( isSelected, !SELECTED , TEST_LOCATION );
261
262   END_TEST;
263 }
264
265 int UtcDaliButtonPropertyGetLabelAlignment(void)
266 {
267   ToolkitTestApplication application;
268   tet_infoline(" UtcDaliPushButtonPropertyGetLabelAlignment\n");
269
270   Button button = PushButton::New();
271   button.SetProperty( Toolkit::Button::Property::LABEL_RELATIVE_ALIGNMENT, "END"  );
272   DALI_TEST_EQUALS( button.GetProperty<std::string>( Toolkit::Button::Property::LABEL_RELATIVE_ALIGNMENT ), "END", TEST_LOCATION );
273
274   END_TEST;
275 }
276
277 int UtcDaliButtonIsDisabledP(void)
278 {
279   ToolkitTestApplication application;
280
281   Button button = PushButton::New();
282
283   button.SetDisabled( true );
284
285   DALI_TEST_CHECK( button.IsDisabled() );
286
287   button.SetDisabled( false );
288
289   DALI_TEST_CHECK( !button.IsDisabled() );
290   END_TEST;
291 }
292
293 int UtcDaliButtonSetAutoRepeatingP(void)
294 {
295   ToolkitTestApplication application;
296
297   Button button = PushButton::New();
298
299   button.SetAutoRepeating( true );
300
301   DALI_TEST_CHECK( button.IsAutoRepeating() );
302
303   button.SetAutoRepeating( false );
304
305   DALI_TEST_CHECK( !button.IsAutoRepeating() );
306
307   button.SetAutoRepeating( true );
308
309   DALI_TEST_CHECK( button.IsAutoRepeating() );
310
311   button.SetAutoRepeating( false );
312
313   DALI_TEST_CHECK( !button.IsAutoRepeating() );
314   END_TEST;
315 }
316
317 int UtcDaliButtonIsAutoRepeatingP(void)
318 {
319   ToolkitTestApplication application;
320
321   Button button = PushButton::New();
322
323   button.SetAutoRepeating( true );
324
325   DALI_TEST_CHECK( button.IsAutoRepeating() );
326
327   button.SetAutoRepeating( false );
328
329   DALI_TEST_CHECK( !button.IsAutoRepeating() );
330   END_TEST;
331 }
332
333 int UtcDaliButtonAutoRepeatingP(void)
334 {
335   ToolkitTestApplication application;
336   tet_infoline(" UtcDaliButtonPressedSignalP  Setup Autorepeating and check multiple clicked signals received\n");
337
338   const float AUTO_REPEATING_DELAY = 0.15f;
339
340   Button button = PushButton::New();
341   button.SetAnchorPoint( AnchorPoint::TOP_LEFT );
342   button.SetParentOrigin( ParentOrigin::TOP_LEFT );
343   button.SetPosition( 240, 400 );
344   button.SetSize( 100, 100 );
345   Stage::GetCurrent().Add( button );
346
347   application.SendNotification();
348   application.Render();
349
350   button.SetProperty( Toolkit::Button::Property::AUTO_REPEATING, true  );
351   button.SetProperty( Toolkit::Button::Property::INITIAL_AUTO_REPEATING_DELAY, AUTO_REPEATING_DELAY );
352   // connect to its touch signal
353   ConnectionTracker* testTracker = new ConnectionTracker();
354   button.PressedSignal().Connect( &ButtonCallback );
355   button.ClickedSignal().Connect( &ButtonCallback );
356   bool clickedSignal = false;
357   bool pressedSignal = false;
358   button.ConnectSignal( testTracker, "pressed", CallbackFunctor(&pressedSignal) );
359   button.ConnectSignal( testTracker, "clicked", CallbackFunctor(&clickedSignal) );
360
361   Dali::Integration::TouchEvent event;
362
363   // Touch point down and up inside the button.
364
365   gIsCalledButtonCallback = false;
366   event = Dali::Integration::TouchEvent();
367   event.AddPoint( GetPointDownInside() );
368   application.ProcessEvent( event );
369
370   DALI_TEST_EQUALS( gIsCalledButtonCallback, true, TEST_LOCATION );
371   DALI_TEST_EQUALS( pressedSignal, true, TEST_LOCATION );
372   tet_infoline("Consume first clicked signal then wait\n");
373
374   gIsCalledButtonCallback = false;
375   Dali::Timer timer = Timer::New( AUTO_REPEATING_DELAY );
376   timer.MockEmitSignal();
377   application.Wait( AUTO_REPEATING_DELAY*2 );
378   DALI_TEST_EQUALS( clickedSignal, true, TEST_LOCATION );
379   tet_infoline("Check gIsCalledButtonCallback was called again after last consumption of it.\n");
380
381   DALI_TEST_EQUALS( gIsCalledButtonCallback, true, TEST_LOCATION );
382
383   gIsCalledButtonCallback = false;
384   event = Dali::Integration::TouchEvent();
385   event.AddPoint( GetPointUpInside() );
386   application.ProcessEvent( event );
387
388   DALI_TEST_EQUALS( gIsCalledButtonCallback, true, TEST_LOCATION );
389
390   END_TEST;
391 }
392
393 int UtcDaliButtonSetInitialAutoRepeatingDelayP(void)
394 {
395   ToolkitTestApplication application;
396
397   Button button = PushButton::New();
398
399   button.SetInitialAutoRepeatingDelay( 0.5f );
400
401   DALI_TEST_EQUALS( button.GetInitialAutoRepeatingDelay(), 0.5f, TEST_LOCATION );
402
403   button.SetInitialAutoRepeatingDelay( 0.2f );
404
405   DALI_TEST_EQUALS( button.GetInitialAutoRepeatingDelay(), 0.2f, TEST_LOCATION );
406   END_TEST;
407 }
408
409 int UtcDaliButtonSetNextAutoRepeatingDelayP(void)
410 {
411   ToolkitTestApplication application;
412
413   Button button = PushButton::New();
414
415   button.SetNextAutoRepeatingDelay( 0.5f );
416
417   DALI_TEST_EQUALS( button.GetNextAutoRepeatingDelay(), 0.5f, TEST_LOCATION );
418
419   button.SetProperty( Button::Property::NEXT_AUTO_REPEATING_DELAY, 0.2f );
420
421   DALI_TEST_EQUALS( button.GetNextAutoRepeatingDelay(), 0.2f, TEST_LOCATION );
422   END_TEST;
423 }
424
425 int UtcDaliButtonSetTogglableButtonP(void)
426 {
427   ToolkitTestApplication application;
428
429   Button button = PushButton::New();
430
431   button.SetTogglableButton( true );
432
433   DALI_TEST_CHECK( button.IsTogglableButton() );
434
435   button.SetTogglableButton( false );
436
437   DALI_TEST_CHECK( !button.IsTogglableButton() );
438   END_TEST;
439 }
440
441 int UtcDaliButtonSetSelectedP(void)
442 {
443   ToolkitTestApplication application;
444
445   Button button = PushButton::New();
446   button.SetTogglableButton( true );
447
448   button.SetSelected( true );
449
450   DALI_TEST_CHECK( button.IsSelected() );
451
452   button.SetSelected( false );
453
454   DALI_TEST_CHECK( !button.IsSelected() );
455   END_TEST;
456 }
457
458 int UtcDaliButtonSetAnimationTimeP(void)
459 {
460   ToolkitTestApplication application;
461   tet_infoline(" UtcDaliButtonSetAnimationTimeP");
462
463   Button button = PushButton::New();
464
465   button.SetAnimationTime( ANIMATION_TIME );
466
467   DALI_TEST_EQUALS( button.GetAnimationTime(), ANIMATION_TIME, TEST_LOCATION );
468   END_TEST;
469 }
470
471 int UtcDaliButtonSetLabelStringP(void)
472 {
473   ToolkitTestApplication application;
474
475   Button button = PushButton::New();
476
477   button.SetLabelText( "Button Label" );
478
479   DALI_TEST_EQUALS( button.GetLabelText(), "Button Label", TEST_LOCATION );
480   END_TEST;
481 }
482
483 int UtcDaliButtonSetLabelPropertyP(void)
484 {
485   ToolkitTestApplication application;
486
487   const std::string TEST_LABEL1 = "test label one";
488   const std::string TEST_LABEL2 = "test label two";
489
490   Button button = PushButton::New();
491
492   button.SetProperty( Button::Property::LABEL_TEXT, TEST_LABEL1 );
493
494   std::string labelText = button.GetProperty<std::string>( Button::Property::LABEL_TEXT );
495
496   DALI_TEST_EQUALS( labelText, TEST_LABEL1,  TEST_LOCATION );
497
498   Property::Map propertyMap;
499   propertyMap.Insert( Toolkit::TextLabel::Property::TEXT,  TEST_LABEL2 );
500   propertyMap.Insert( Toolkit::TextLabel::Property::TEXT_COLOR, Color::BLUE);
501   button.SetProperty( Button::Property::LABEL, propertyMap );
502
503   labelText = button.GetProperty<std::string>( Button::Property::LABEL_TEXT );
504
505   DALI_TEST_EQUALS( labelText, TEST_LABEL2,  TEST_LOCATION );
506
507   END_TEST;
508 }
509
510 int UtcDaliButtonSetUnselectedImageP(void)
511 {
512   ToolkitTestApplication application;
513   tet_infoline(" UtcDaliButtonSetUnselectedImageP");
514
515   PushButton pushButton = PushButton::New();
516   Stage::GetCurrent().Add( pushButton );
517
518   application.SendNotification();
519   application.Render();
520
521   pushButton.SetUnselectedImage( "Image.jpg" );
522
523   application.SendNotification();
524   application.Render();
525
526   DALI_TEST_CHECK( pushButton );
527
528   END_TEST;
529 }
530
531 int UtcDaliButtonSetSelectedImageP(void)
532 {
533   ToolkitTestApplication application;
534   tet_infoline(" UtcDaliButtonSetButtonImage");
535
536   PushButton pushButton = PushButton::New();
537   Stage::GetCurrent().Add( pushButton );
538
539   application.SendNotification();
540   application.Render();
541
542   pushButton.SetSelectedImage( "Image.jpg" );
543
544   application.SendNotification();
545   application.Render();
546
547   DALI_TEST_CHECK( pushButton );
548
549   END_TEST;
550 }
551
552 int UtcDaliButtonPressedSignalP(void)
553 {
554   ToolkitTestApplication application;
555   tet_infoline(" UtcDaliButtonPressedSignalP");
556
557   Button button = PushButton::New();
558   button.SetAnchorPoint( AnchorPoint::TOP_LEFT );
559   button.SetParentOrigin( ParentOrigin::TOP_LEFT );
560   button.SetPosition( 240, 400 );
561   button.SetSize( 100, 100 );
562
563   Stage::GetCurrent().Add( button );
564
565   application.SendNotification();
566   application.Render();
567
568   // connect to its touch signal
569   ConnectionTracker* testTracker = new ConnectionTracker();
570   button.PressedSignal().Connect( &ButtonCallback );
571   button.ReleasedSignal().Connect( &ButtonCallback );
572   bool pressedSignal = false;
573   bool releasedSignal = false;
574   button.ConnectSignal( testTracker, "pressed",   CallbackFunctor(&pressedSignal) );
575   button.ConnectSignal( testTracker, "released",  CallbackFunctor(&releasedSignal) );
576
577   Dali::Integration::TouchEvent event;
578
579   // Test1. Touch point down and up inside the button.
580
581   gIsCalledButtonCallback = false;
582   event = Dali::Integration::TouchEvent();
583   event.AddPoint( GetPointDownInside() );
584   application.ProcessEvent( event );
585
586   DALI_TEST_CHECK( gIsCalledButtonCallback );
587   DALI_TEST_CHECK( pressedSignal );
588
589   gIsCalledButtonCallback = false;
590   event = Dali::Integration::TouchEvent();
591   event.AddPoint( GetPointUpInside() );
592   application.ProcessEvent( event );
593
594   DALI_TEST_CHECK( gIsCalledButtonCallback );
595   DALI_TEST_CHECK( releasedSignal );
596
597   // Test2. Touch point down and up outside the button.
598
599   pressedSignal = false;
600   releasedSignal = false;
601   gIsCalledButtonCallback = false;
602   event = Dali::Integration::TouchEvent();
603   event.AddPoint( GetPointDownOutside() );
604   application.ProcessEvent( event );
605
606   DALI_TEST_CHECK( !gIsCalledButtonCallback );
607   DALI_TEST_CHECK( !pressedSignal );
608
609   gIsCalledButtonCallback = false;
610   event = Dali::Integration::TouchEvent();
611   event.AddPoint( GetPointUpOutside() );
612   application.ProcessEvent( event );
613
614   DALI_TEST_CHECK( !gIsCalledButtonCallback );
615   DALI_TEST_CHECK( !releasedSignal );
616
617   // Test3. Touch point down inside and up outside the button.
618
619   gIsCalledButtonCallback = false;
620   event = Dali::Integration::TouchEvent();
621   event.AddPoint( GetPointDownInside() );
622   application.ProcessEvent( event );
623
624   DALI_TEST_CHECK( gIsCalledButtonCallback );
625
626   gIsCalledButtonCallback = false;
627   event = Dali::Integration::TouchEvent();
628   event.AddPoint( GetPointLeave() );
629   application.ProcessEvent( event );
630
631   event = Dali::Integration::TouchEvent();
632   event.AddPoint( GetPointUpOutside() );
633   application.ProcessEvent( event );
634
635   DALI_TEST_CHECK( gIsCalledButtonCallback );
636
637   // Test4. Touch point down outside and up inside the button.
638
639   gIsCalledButtonCallback = false;
640   event = Dali::Integration::TouchEvent();
641   event.AddPoint( GetPointDownOutside() );
642   application.ProcessEvent( event );
643
644   DALI_TEST_CHECK( !gIsCalledButtonCallback );
645
646   gIsCalledButtonCallback = false;
647   event = Dali::Integration::TouchEvent();
648   event.AddPoint( GetPointEnter() );
649   application.ProcessEvent( event );
650
651   event = Dali::Integration::TouchEvent();
652   event.AddPoint( GetPointUpInside() );
653   application.ProcessEvent( event );
654
655   DALI_TEST_CHECK( !gIsCalledButtonCallback );
656   END_TEST;
657 }
658
659 int UtcDaliButtonClickedSignalP(void)
660 {
661   ToolkitTestApplication application;
662   tet_infoline(" UtcDaliButtonClickedSignalP");
663
664   Button button = PushButton::New();
665   button.SetAnchorPoint( AnchorPoint::TOP_LEFT );
666   button.SetParentOrigin( ParentOrigin::TOP_LEFT );
667   button.SetPosition( 240, 400 );
668   button.SetSize( 100, 100 );
669
670   Stage::GetCurrent().Add( button );
671
672   application.SendNotification();
673   application.Render();
674
675   // connect to its touch signal
676   button.ClickedSignal().Connect( &ButtonCallback );
677   bool clickedSignal = false;
678   ConnectionTracker* testTracker = new ConnectionTracker();
679   button.ConnectSignal( testTracker, "clicked",   CallbackFunctor(&clickedSignal) );
680
681   Dali::Integration::TouchEvent event;
682
683   // Test1. Touch point down and up inside the button.
684
685   gIsCalledButtonCallback = false;
686   event = Dali::Integration::TouchEvent();
687   event.AddPoint( GetPointDownInside() );
688   application.ProcessEvent( event );
689
690   event = Dali::Integration::TouchEvent();
691   event.AddPoint( GetPointUpInside() );
692   application.ProcessEvent( event );
693
694   DALI_TEST_CHECK( gIsCalledButtonCallback );
695   DALI_TEST_CHECK( clickedSignal );
696
697   // Test2. Touch point down and up outside the button.
698
699   gIsCalledButtonCallback = false;
700   clickedSignal = false;
701   event = Dali::Integration::TouchEvent();
702   event.AddPoint( GetPointDownOutside() );
703   application.ProcessEvent( event );
704
705   event = Dali::Integration::TouchEvent();
706   event.AddPoint( GetPointUpOutside() );
707   application.ProcessEvent( event );
708
709   DALI_TEST_CHECK( !gIsCalledButtonCallback );
710   DALI_TEST_CHECK( !clickedSignal );
711
712   // Test3. Touch point down inside and up outside the button.
713
714   gIsCalledButtonCallback = false;
715   clickedSignal = false;
716   event = Dali::Integration::TouchEvent();
717   event.AddPoint( GetPointDownInside() );
718   application.ProcessEvent( event );
719
720   event = Dali::Integration::TouchEvent();
721   event.AddPoint( GetPointLeave() );
722   application.ProcessEvent( event );
723
724   event = Dali::Integration::TouchEvent();
725   event.AddPoint( GetPointUpOutside() );
726   application.ProcessEvent( event );
727
728   DALI_TEST_CHECK( !gIsCalledButtonCallback );
729   DALI_TEST_CHECK( !clickedSignal );
730
731   // Test4. Touch point down outside and up inside the button.
732
733   gIsCalledButtonCallback = false;
734   clickedSignal = false;
735   event = Dali::Integration::TouchEvent();
736   event.AddPoint( GetPointDownOutside() );
737   application.ProcessEvent( event );
738
739   event = Dali::Integration::TouchEvent();
740   event.AddPoint( GetPointEnter() );
741   application.ProcessEvent( event );
742
743   event = Dali::Integration::TouchEvent();
744   event.AddPoint( GetPointUpInside() );
745   application.ProcessEvent( event );
746
747   DALI_TEST_CHECK( !gIsCalledButtonCallback );
748   DALI_TEST_CHECK( !clickedSignal );
749   END_TEST;
750 }
751
752 int UtcDaliButtonStateChangedSignalP(void)
753 {
754   ToolkitTestApplication application;
755   tet_infoline(" UtcDaliButtonStateChangedSignalP");
756
757   Button button = PushButton::New();
758   button.SetTogglableButton( true );
759
760   Stage::GetCurrent().Add( button );
761
762   application.SendNotification();
763   application.Render();
764
765   // connect to its signal
766   button.StateChangedSignal().Connect( &ButtonCallback );
767   bool stateChangedSignal = false;
768   ConnectionTracker* testTracker = new ConnectionTracker();
769   button.ConnectSignal( testTracker, "stateChanged",   CallbackFunctor(&stateChangedSignal) );
770
771   gIsCalledButtonCallback = false;
772   button.SetSelected( true );
773
774   DALI_TEST_CHECK( gIsCalledButtonCallback );
775   DALI_TEST_CHECK( stateChangedSignal );
776
777   gIsCalledButtonCallback = false;
778   stateChangedSignal = false;
779
780   button.SetSelected( false );
781
782   DALI_TEST_CHECK( gIsCalledButtonCallback );
783   DALI_TEST_CHECK( stateChangedSignal );
784   END_TEST;
785 }
786
787 int UtcDaliButtonSetProperty(void)
788 {
789   tet_infoline("UtcDaliButtonSetProperty: ");
790   ToolkitTestApplication application;
791
792   PushButton pushButton = PushButton::New();
793
794   pushButton.SetProperty(pushButton.GetPropertyIndex("disabled"), false);
795   DALI_TEST_CHECK( false == pushButton.IsDisabled() );
796
797   pushButton.SetProperty(pushButton.GetPropertyIndex("disabled"), true);
798   DALI_TEST_CHECK( true == pushButton.IsDisabled() );
799
800   END_TEST;
801 }
802
803 int UtcDaliButtonSize(void)
804 {
805   ToolkitTestApplication application;
806   tet_infoline(" UtcDaliButtonSize");
807
808   // First an image is set, then SetSize is called.
809   PushButton pushButton = PushButton::New();
810   Stage::GetCurrent().Add( pushButton );
811
812   pushButton.SetBackgroundImage( "Image.jpg" );
813   pushButton.SetSize( 10.f, 10.f );
814
815   application.SendNotification();
816   application.Render();
817
818   Vector3 size = pushButton.GetCurrentSize();
819
820   DALI_TEST_EQUALS( size.width, 10.f, TEST_LOCATION );
821   DALI_TEST_EQUALS( size.height, 10.f, TEST_LOCATION );
822   END_TEST;
823 }
824
825 int UtcDaliButtonSetSelectedBackgroundImageP(void)
826 {
827   ToolkitTestApplication application;
828
829   PushButton button = PushButton::New();
830   Stage::GetCurrent().Add( button );
831
832   try
833   {
834     button.SetSelectedBackgroundImage( "TestImage.jpg");
835     DALI_TEST_CHECK( true );
836   }
837   catch(...)
838   {
839     DALI_TEST_CHECK( false );
840   }
841
842   END_TEST;
843 }
844
845 int UtcDaliButtonSetSelectedBackgroundImageN(void)
846 {
847   ToolkitTestApplication application;
848
849   PushButton button;
850
851   try
852   {
853     button.SetSelectedBackgroundImage( "TestImage.jpg");
854     DALI_TEST_CHECK( false );
855   }
856   catch(...)
857   {
858     DALI_TEST_CHECK( true );
859   }
860
861   END_TEST;
862 }
863
864 int UtcDaliButtonSetDisabledImageP(void)
865 {
866   ToolkitTestApplication application;
867
868   PushButton button = PushButton::New();
869   Stage::GetCurrent().Add( button );
870
871   try
872   {
873     button.SetDisabledImage( "TestImage.jpg");
874     DALI_TEST_CHECK( true );
875   }
876   catch(...)
877   {
878     DALI_TEST_CHECK( false );
879   }
880
881   END_TEST;
882 }
883
884 int UtcDaliButtonSetDisabledImageN(void)
885 {
886   ToolkitTestApplication application;
887
888   PushButton button;
889
890   try
891   {
892     button.SetDisabledImage( "TestImage.jpg");
893     DALI_TEST_CHECK( false );
894   }
895   catch(...)
896   {
897     DALI_TEST_CHECK( true );
898   }
899
900   END_TEST;
901 }
902
903 int UtcDaliButtonSetDisabledSelectedImageP(void)
904 {
905   ToolkitTestApplication application;
906
907   PushButton button = PushButton::New();
908   Stage::GetCurrent().Add( button );
909
910   try
911   {
912     button.SetDisabledSelectedImage( "TestImage.jpg");
913     DALI_TEST_CHECK( true );
914   }
915   catch(...)
916   {
917     DALI_TEST_CHECK( false );
918   }
919
920   END_TEST;
921 }
922
923 int UtcDaliButtonSetDisabledSelectedImageN(void)
924 {
925   ToolkitTestApplication application;
926
927   PushButton button;
928
929   try
930   {
931     button.SetDisabledSelectedImage( "TestImage.jpg");
932     DALI_TEST_CHECK( false );
933   }
934   catch(...)
935   {
936     DALI_TEST_CHECK( true );
937   }
938
939   END_TEST;
940 }
941
942 int UtcDaliButtonSetLabeActorlP(void)
943 {
944   ToolkitTestApplication application;
945
946   PushButton button = PushButton::New();
947   Stage::GetCurrent().Add( button );
948
949   try
950   {
951     button.SetLabel( TextLabel::New("Hello") );
952     DALI_TEST_CHECK( true );
953   }
954   catch(...)
955   {
956     DALI_TEST_CHECK( false );
957   }
958
959   END_TEST;
960 }
961
962 int UtcDaliButtonSetLabelN(void)
963 {
964   ToolkitTestApplication application;
965
966   PushButton button;
967
968   try
969   {
970     button.SetLabel( TextLabel::New("Hello") );
971     DALI_TEST_CHECK( false );
972   }
973   catch(...)
974   {
975     DALI_TEST_CHECK( true );
976   }
977
978   END_TEST;
979 }
980
981 int UtcDaliButtonSetButtonImageP(void)
982 {
983   ToolkitTestApplication application;
984
985   PushButton button = PushButton::New();
986   Stage::GetCurrent().Add( button );
987
988   try
989   {
990     ResourceImage image1 = ResourceImage::New( TEST_IMAGE_ONE );
991     button.SetButtonImage( image1 );
992
993     Property::Value value = button.GetProperty(Button::Property::UNSELECTED_STATE_IMAGE );
994     DALI_TEST_CHECK( value.Get<std::string>() == TEST_IMAGE_ONE );
995   }
996   catch(...)
997   {
998     DALI_TEST_CHECK( false );
999   }
1000
1001   std::string imageUrl;
1002
1003   Dali::Actor actor = button.GetButtonImage();
1004
1005   Toolkit::ImageView imageView = Toolkit::ImageView ::DownCast( actor );
1006
1007   tet_infoline(" UtcDaliButtonSetButtonImageP Ensure an ImageView is returned\n");
1008   DALI_TEST_CHECK ( imageView )
1009
1010   END_TEST;
1011 }
1012
1013 int UtcDaliButtonSetButtonImageN(void)
1014 {
1015   ToolkitTestApplication application;
1016
1017   PushButton button;
1018
1019   try
1020   {
1021     ResourceImage image1 = ResourceImage::New( TEST_IMAGE_ONE );
1022     button.SetButtonImage( image1 );
1023
1024     DALI_TEST_CHECK( false );
1025   }
1026   catch(...)
1027   {
1028     DALI_TEST_CHECK( true );
1029   }
1030
1031   END_TEST;
1032 }
1033
1034 int UtcDaliButtonSetSelectedImageWithImageP(void)
1035 {
1036   ToolkitTestApplication application;
1037
1038   PushButton button = PushButton::New();
1039   Stage::GetCurrent().Add( button );
1040   ResourceImage image1 = ResourceImage::New( TEST_IMAGE_ONE );
1041
1042   try
1043   {
1044     button.SetSelectedImage( image1 );
1045     Property::Value value = button.GetProperty( Button::Property::SELECTED_STATE_IMAGE );
1046     DALI_TEST_CHECK( value.Get<std::string>() == TEST_IMAGE_ONE );
1047   }
1048   catch(...)
1049   {
1050     DALI_TEST_CHECK( false );
1051   }
1052
1053   std::string imageUrl;
1054
1055   Dali::Actor actor = button.GetSelectedImage();
1056
1057   Toolkit::ImageView imageView = Toolkit::ImageView::DownCast( actor );
1058
1059   tet_infoline(" UtcDaliButtonSetSelectedImageWithImageP Ensure an ImageView is returned\n");
1060
1061   END_TEST;
1062 }
1063
1064 int UtcDaliButtonSetSelectedImageWithImageN(void)
1065 {
1066   ToolkitTestApplication application;
1067
1068   PushButton button;
1069
1070   try
1071   {
1072     button.SetSelectedImage( CreateBufferImage( 10, 10, Color::WHITE ) );
1073     DALI_TEST_CHECK( false );
1074   }
1075   catch(...)
1076   {
1077     DALI_TEST_CHECK( true );
1078   }
1079
1080   END_TEST;
1081 }
1082
1083 int UtcDaliButtonSetSelectedColorP(void)
1084 {
1085   ToolkitTestApplication application;
1086   tet_infoline(" UtcDaliButtonSetSelectedColorP");
1087
1088   PushButton pushButton = PushButton::New();
1089   Stage::GetCurrent().Add( pushButton );
1090
1091   application.SendNotification();
1092   application.Render();
1093
1094   const Vector4 SET_COLOR = Color::BLUE;
1095
1096   pushButton.SetSize( Vector2( 20.0f, 20.0f ) );
1097   pushButton.SetProperty( Button::Property::SELECTED_COLOR, SET_COLOR );
1098
1099   application.SendNotification();
1100   application.Render();
1101
1102   Vector4 color = pushButton.GetProperty<Vector4>( Button::Property::SELECTED_COLOR );
1103
1104   DALI_TEST_EQUALS( color, SET_COLOR, TEST_LOCATION );
1105
1106   END_TEST;
1107 }
1108
1109 int UtcDaliButtonSetUnSelectedColorP(void)
1110 {
1111   ToolkitTestApplication application;
1112   tet_infoline(" UtcDaliButtonSetUnSelectedColorP");
1113
1114   PushButton pushButton = PushButton::New();
1115   Stage::GetCurrent().Add( pushButton );
1116
1117   application.SendNotification();
1118   application.Render();
1119
1120   const Vector4 SET_COLOR = Color::BLUE;
1121
1122   pushButton.SetSize( Vector2( 20.0f, 20.0f ) );
1123   pushButton.SetProperty( Button::Property::UNSELECTED_COLOR, SET_COLOR );
1124
1125   application.SendNotification();
1126   application.Render();
1127
1128   Vector4 color = pushButton.GetProperty<Vector4>( Button::Property::UNSELECTED_COLOR );
1129
1130   DALI_TEST_EQUALS( color, SET_COLOR, TEST_LOCATION );
1131
1132   END_TEST;
1133 }
1134
1135 int UtcDaliButtonResetSelectedColorP(void)
1136 {
1137   ToolkitTestApplication application;
1138   tet_infoline(" UtcDaliButtonSetSelectedColorP");
1139
1140   PushButton pushButton = PushButton::New();
1141   Stage::GetCurrent().Add( pushButton );
1142
1143   application.SendNotification();
1144   application.Render();
1145
1146   const Vector4 FIRST_COLOR = Color::BLUE;
1147   const Vector4 SECOND_COLOR = Color::BLUE;
1148
1149   pushButton.SetSize( Vector2( 20.0f, 20.0f ) );
1150   pushButton.SetProperty( Button::Property::SELECTED_COLOR, FIRST_COLOR );
1151
1152   application.SendNotification();
1153   application.Render();
1154
1155   Vector4 color = pushButton.GetProperty<Vector4>( Button::Property::SELECTED_COLOR );
1156
1157   DALI_TEST_EQUALS( color, FIRST_COLOR, TEST_LOCATION );
1158
1159   pushButton.SetProperty( Button::Property::SELECTED_COLOR, SECOND_COLOR );
1160
1161   application.SendNotification();
1162   application.Render();
1163
1164   color = pushButton.GetProperty<Vector4>( Button::Property::SELECTED_COLOR );
1165
1166   DALI_TEST_EQUALS( color, SECOND_COLOR, TEST_LOCATION );
1167
1168   END_TEST;
1169 }
1170
1171 int UtcDaliButtonSetImagesWithDeprecatedProperties(void)
1172 {
1173   ToolkitTestApplication application;
1174   tet_infoline(" UtcDaliButtonSetImagesWithDeprecatedProperties");
1175
1176   PushButton pushButton = PushButton::New();
1177   Stage::GetCurrent().Add( pushButton );
1178
1179   Property::Map propertyMap;
1180   propertyMap.Insert(Visual::Property::TYPE,  Visual::COLOR);
1181   propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1182
1183   DALI_TEST_EQUALS( pushButton.GetRendererCount(), 0, TEST_LOCATION );
1184
1185   pushButton.SetProperty( Toolkit::Button::Property::UNSELECTED_STATE_IMAGE, propertyMap );
1186   application.SendNotification();
1187   application.Render();
1188   DALI_TEST_EQUALS( pushButton.GetRendererCount(), 1, TEST_LOCATION );
1189
1190   tet_infoline(" Set state to selected and provide SELECTED visual");
1191   pushButton.SetProperty( Toolkit::Button::Property::SELECTED_STATE_IMAGE, propertyMap );
1192   pushButton.SetProperty( Toolkit::Button::Property::SELECTED, true );
1193   application.SendNotification();
1194   application.Render();
1195   DALI_TEST_EQUALS( pushButton.GetRendererCount(), 1, TEST_LOCATION );
1196
1197   tet_infoline(" Set state to selected, disabled and provide DISABLED_STATE_IMAGE visual");
1198   pushButton.SetProperty( Toolkit::Button::Property::SELECTED, false );
1199   pushButton.SetProperty( Toolkit::Button::Property::DISABLED, true );
1200   pushButton.SetProperty( Toolkit::Button::Property::DISABLED_STATE_IMAGE, propertyMap );
1201   application.SendNotification();
1202   application.Render();
1203   DALI_TEST_EQUALS( pushButton.GetRendererCount(), 1, TEST_LOCATION );
1204
1205 END_TEST;
1206 }
1207
1208 int UtcDaliButtonSetGetDepreciatedPropertiesWithURL(void)
1209 {
1210   ToolkitTestApplication application;
1211   tet_infoline(" UtcDaliButtonSetGetDepreciatedPropertiesWithURL");
1212
1213   PushButton button = PushButton::New();
1214   Stage::GetCurrent().Add( button );
1215
1216   tet_infoline(" Set state to selected, disabled and provide DISABLED_STATE_IMAGE visual");
1217   button.SetProperty( Toolkit::Button::Property::DISABLED, true );
1218   button.SetProperty( Toolkit::Button::Property::DISABLED_STATE_IMAGE, TEST_IMAGE_ONE );
1219
1220   Property::Value value = button.GetProperty(Button::Property::DISABLED_STATE_IMAGE );
1221   DALI_TEST_EQUALS( value.Get<std::string>(),  TEST_IMAGE_ONE, TEST_LOCATION );
1222
1223 END_TEST;
1224 }