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>
26 #include <dali-toolkit/dali-toolkit.h>
27 #include <dali/integration-api/events/touch-event-integ.h>
30 using namespace Toolkit;
33 void utc_dali_toolkit_button_startup(void)
35 test_return_value = TET_UNDEF;
38 void utc_dali_toolkit_button_cleanup(void)
40 test_return_value = TET_PASS;
45 static bool gIsCalledButtonCallback = false;
47 static bool ButtonCallback( Button button )
49 gIsCalledButtonCallback = true;
53 Image CreateSolidColorImage( const Vector4& color, unsigned int width, unsigned int height )
55 BufferImage imageData = BufferImage::New( width, height, Pixel::RGBA8888 );
58 PixelBuffer* pixbuf = imageData.GetBuffer();
59 unsigned int size = width * height;
61 for( size_t i = 0; i < size; i++ )
63 pixbuf[i*4+0] = 0xFF * color.r;
64 pixbuf[i*4+1] = 0xFF * color.g;
65 pixbuf[i*4+2] = 0xFF * color.b;
66 pixbuf[i*4+3] = 0xFF * color.a;
74 Dali::Integration::Point GetPointDownInside()
76 Dali::Integration::Point point;
77 point.SetState( PointState::DOWN );
78 point.SetScreenPosition( Vector2( 240, 400 ) );
82 Dali::Integration::Point GetPointUpInside()
84 Dali::Integration::Point point;
85 point.SetState( PointState::UP );
86 point.SetScreenPosition( Vector2( 240, 400 ) );
90 Dali::Integration::Point GetPointLeave()
92 Dali::Integration::Point point;
93 point.SetState( PointState::LEAVE );
94 point.SetScreenPosition( Vector2( 240, 400 ) );
98 Dali::Integration::Point GetPointEnter()
100 Dali::Integration::Point point;
101 point.SetState( PointState::MOTION );
102 point.SetScreenPosition( Vector2( 240, 400 ) );
106 Dali::Integration::Point GetPointDownOutside()
108 Dali::Integration::Point point;
109 point.SetState( PointState::DOWN );
110 point.SetScreenPosition( Vector2( 10, 10 ) );
114 Dali::Integration::Point GetPointUpOutside()
116 Dali::Integration::Point point;
117 point.SetState( PointState::UP );
118 point.SetScreenPosition( Vector2( 10, 10 ) );
123 static float ANIMATION_TIME( 0.5f );
126 int UtcDaliButtonConstructorP(void)
128 TestApplication application;
132 DALI_TEST_CHECK( !button );
136 int UtcDaliButtonCopyConstructorP(void)
138 TestApplication application;
140 // Initialize an object, ref count == 1
141 Button button = PushButton::New();
143 Button copy( button );
144 DALI_TEST_CHECK( copy );
148 int UtcDaliButtonAssignmentOperatorP(void)
150 TestApplication application;
152 Button button = PushButton::New();
154 Button copy( button );
155 DALI_TEST_CHECK( copy );
157 DALI_TEST_CHECK( button == copy );
161 int UtcDaliButtonDownCastP(void)
163 TestApplication application;
165 Button button = PushButton::New();
167 BaseHandle object(button);
169 Button button2 = Button::DownCast( object );
170 DALI_TEST_CHECK(button2);
172 Button button3 = DownCast< Button >(object);
173 DALI_TEST_CHECK(button3);
177 int UtcDaliButtonDownCastN(void)
179 TestApplication application;
181 BaseHandle unInitializedObject;
183 Button button1 = Button::DownCast( unInitializedObject );
184 DALI_TEST_CHECK( !button1 );
186 Button button2 = DownCast< Button >( unInitializedObject );
187 DALI_TEST_CHECK( !button2 );
191 int UtcDaliButtonSetDisabledP(void)
193 ToolkitTestApplication application;
195 Button button = PushButton::New();
197 button.SetDisabled( true );
199 DALI_TEST_CHECK( button.IsDisabled() );
201 button.SetDisabled( false );
203 DALI_TEST_CHECK( !button.IsDisabled() );
205 button.SetDisabled( true );
207 DALI_TEST_CHECK( button.IsDisabled() );
209 button.SetDisabled( false );
211 DALI_TEST_CHECK( !button.IsDisabled() );
215 int UtcDaliButtonIsDisabledP(void)
217 ToolkitTestApplication application;
219 Button button = PushButton::New();
221 button.SetDisabled( true );
223 DALI_TEST_CHECK( button.IsDisabled() );
225 button.SetDisabled( false );
227 DALI_TEST_CHECK( !button.IsDisabled() );
231 int UtcDaliButtonSetAutoRepeatingP(void)
233 ToolkitTestApplication application;
235 Button button = PushButton::New();
237 button.SetAutoRepeating( true );
239 DALI_TEST_CHECK( button.IsAutoRepeating() );
241 button.SetAutoRepeating( false );
243 DALI_TEST_CHECK( !button.IsAutoRepeating() );
245 button.SetAutoRepeating( true );
247 DALI_TEST_CHECK( button.IsAutoRepeating() );
249 button.SetAutoRepeating( false );
251 DALI_TEST_CHECK( !button.IsAutoRepeating() );
255 int UtcDaliButtonIsAutoRepeatingP(void)
257 ToolkitTestApplication application;
259 Button button = PushButton::New();
261 button.SetAutoRepeating( true );
263 DALI_TEST_CHECK( button.IsAutoRepeating() );
265 button.SetAutoRepeating( false );
267 DALI_TEST_CHECK( !button.IsAutoRepeating() );
271 int UtcDaliButtonSetInitialAutoRepeatingDelayP(void)
273 ToolkitTestApplication application;
275 Button button = PushButton::New();
277 button.SetInitialAutoRepeatingDelay( 0.5f );
279 DALI_TEST_EQUALS( button.GetInitialAutoRepeatingDelay(), 0.5f, TEST_LOCATION );
281 button.SetInitialAutoRepeatingDelay( 0.2f );
283 DALI_TEST_EQUALS( button.GetInitialAutoRepeatingDelay(), 0.2f, TEST_LOCATION );
287 int UtcDaliButtonSetNextAutoRepeatingDelayP(void)
289 ToolkitTestApplication application;
291 Button button = PushButton::New();
293 button.SetNextAutoRepeatingDelay( 0.5f );
295 DALI_TEST_EQUALS( button.GetNextAutoRepeatingDelay(), 0.5f, TEST_LOCATION );
297 button.SetNextAutoRepeatingDelay( 0.2f );
299 DALI_TEST_EQUALS( button.GetNextAutoRepeatingDelay(), 0.2f, TEST_LOCATION );
303 int UtcDaliButtonSetTogglableButtonP(void)
305 ToolkitTestApplication application;
307 Button button = PushButton::New();
309 button.SetTogglableButton( true );
311 DALI_TEST_CHECK( button.IsTogglableButton() );
313 button.SetTogglableButton( false );
315 DALI_TEST_CHECK( !button.IsTogglableButton() );
319 int UtcDaliButtonSetSelectedP(void)
321 ToolkitTestApplication application;
323 Button button = PushButton::New();
324 button.SetTogglableButton( true );
326 button.SetSelected( true );
328 DALI_TEST_CHECK( button.IsSelected() );
330 button.SetSelected( false );
332 DALI_TEST_CHECK( !button.IsSelected() );
336 int UtcDaliButtonSetAnimationTimeP(void)
338 ToolkitTestApplication application;
339 tet_infoline(" UtcDaliButtonSetAnimationTimeP");
341 Button button = PushButton::New();
343 button.SetAnimationTime( ANIMATION_TIME );
345 DALI_TEST_EQUALS( button.GetAnimationTime(), ANIMATION_TIME, TEST_LOCATION );
349 int UtcDaliButtonSetLabelStringP(void)
351 ToolkitTestApplication application;
353 Button button = PushButton::New();
355 button.SetLabelText( "Button Label" );
357 DALI_TEST_EQUALS( button.GetLabelText(), "Button Label", TEST_LOCATION );
361 int UtcDaliButtonSetLabelActorP(void)
363 ToolkitTestApplication application;
365 Button button = PushButton::New();
367 button.SetLabelText( "Button Label" );
369 DALI_TEST_EQUALS( button.GetLabelText(), "Button Label", TEST_LOCATION );
373 int UtcDaliButtonSetUnselectedImageP(void)
375 ToolkitTestApplication application;
376 tet_infoline(" UtcDaliButtonSetUnselectedImageP");
378 PushButton pushButton = PushButton::New();
379 Stage::GetCurrent().Add( pushButton );
381 application.SendNotification();
382 application.Render();
384 pushButton.SetSize( Vector2( 20.0f, 20.0f ) );
385 pushButton.SetUnselectedImage( "Image.jpg" );
387 application.SendNotification();
388 application.Render();
390 Vector3 size = pushButton.GetCurrentSize();
392 DALI_TEST_EQUALS( size.width, 20.f, TEST_LOCATION );
393 DALI_TEST_EQUALS( size.height, 20.f, TEST_LOCATION );
398 int UtcDaliButtonSetSelectedImageP(void)
400 ToolkitTestApplication application;
401 tet_infoline(" UtcDaliButtonSetButtonImage");
403 PushButton pushButton = PushButton::New();
404 Stage::GetCurrent().Add( pushButton );
406 application.SendNotification();
407 application.Render();
409 pushButton.SetSize( Vector2( 20.0f, 20.0f ) );
410 pushButton.SetSelectedImage( "Image.jpg" );
412 application.SendNotification();
413 application.Render();
415 Vector3 size = pushButton.GetCurrentSize();
417 DALI_TEST_EQUALS( size.width, 20.f, TEST_LOCATION );
418 DALI_TEST_EQUALS( size.height, 20.f, TEST_LOCATION );
423 int UtcDaliButtonPressedSignalP(void)
425 ToolkitTestApplication application;
426 tet_infoline(" UtcDaliButtonPressedSignalP");
428 Button button = PushButton::New();
429 button.SetAnchorPoint( AnchorPoint::TOP_LEFT );
430 button.SetParentOrigin( ParentOrigin::TOP_LEFT );
431 button.SetPosition( 240, 400 );
432 button.SetSize( 100, 100 );
434 Stage::GetCurrent().Add( button );
436 application.SendNotification();
437 application.Render();
439 // connect to its touch signal
440 button.PressedSignal().Connect( &ButtonCallback );
441 button.ReleasedSignal().Connect( &ButtonCallback );
443 Dali::Integration::TouchEvent event;
445 // Test1. Touch point down and up inside the button.
447 gIsCalledButtonCallback = false;
448 event = Dali::Integration::TouchEvent();
449 event.AddPoint( GetPointDownInside() );
450 application.ProcessEvent( event );
452 DALI_TEST_CHECK( gIsCalledButtonCallback );
454 gIsCalledButtonCallback = false;
455 event = Dali::Integration::TouchEvent();
456 event.AddPoint( GetPointUpInside() );
457 application.ProcessEvent( event );
459 DALI_TEST_CHECK( gIsCalledButtonCallback );
461 // Test2. Touch point down and up outside the button.
463 gIsCalledButtonCallback = false;
464 event = Dali::Integration::TouchEvent();
465 event.AddPoint( GetPointDownOutside() );
466 application.ProcessEvent( event );
468 DALI_TEST_CHECK( !gIsCalledButtonCallback );
470 gIsCalledButtonCallback = false;
471 event = Dali::Integration::TouchEvent();
472 event.AddPoint( GetPointUpOutside() );
473 application.ProcessEvent( event );
475 DALI_TEST_CHECK( !gIsCalledButtonCallback );
477 // Test3. Touch point down inside and up outside the button.
479 gIsCalledButtonCallback = false;
480 event = Dali::Integration::TouchEvent();
481 event.AddPoint( GetPointDownInside() );
482 application.ProcessEvent( event );
484 DALI_TEST_CHECK( gIsCalledButtonCallback );
486 gIsCalledButtonCallback = false;
487 event = Dali::Integration::TouchEvent();
488 event.AddPoint( GetPointLeave() );
489 application.ProcessEvent( event );
491 event = Dali::Integration::TouchEvent();
492 event.AddPoint( GetPointUpOutside() );
493 application.ProcessEvent( event );
495 DALI_TEST_CHECK( gIsCalledButtonCallback );
497 // Test4. Touch point down outside and up inside the button.
499 gIsCalledButtonCallback = false;
500 event = Dali::Integration::TouchEvent();
501 event.AddPoint( GetPointDownOutside() );
502 application.ProcessEvent( event );
504 DALI_TEST_CHECK( !gIsCalledButtonCallback );
506 gIsCalledButtonCallback = false;
507 event = Dali::Integration::TouchEvent();
508 event.AddPoint( GetPointEnter() );
509 application.ProcessEvent( event );
511 event = Dali::Integration::TouchEvent();
512 event.AddPoint( GetPointUpInside() );
513 application.ProcessEvent( event );
515 DALI_TEST_CHECK( !gIsCalledButtonCallback );
519 int UtcDaliButtonClickedSignalP(void)
521 ToolkitTestApplication application;
522 tet_infoline(" UtcDaliButtonClickedSignalP");
524 Button button = PushButton::New();
525 button.SetAnchorPoint( AnchorPoint::TOP_LEFT );
526 button.SetParentOrigin( ParentOrigin::TOP_LEFT );
527 button.SetPosition( 240, 400 );
528 button.SetSize( 100, 100 );
530 Stage::GetCurrent().Add( button );
532 application.SendNotification();
533 application.Render();
535 // connect to its touch signal
536 button.ClickedSignal().Connect( &ButtonCallback );
538 Dali::Integration::TouchEvent event;
540 // Test1. Touch point down and up inside the button.
542 gIsCalledButtonCallback = false;
543 event = Dali::Integration::TouchEvent();
544 event.AddPoint( GetPointDownInside() );
545 application.ProcessEvent( event );
547 event = Dali::Integration::TouchEvent();
548 event.AddPoint( GetPointUpInside() );
549 application.ProcessEvent( event );
551 DALI_TEST_CHECK( gIsCalledButtonCallback );
553 // Test2. Touch point down and up outside the button.
555 gIsCalledButtonCallback = false;
556 event = Dali::Integration::TouchEvent();
557 event.AddPoint( GetPointDownOutside() );
558 application.ProcessEvent( event );
560 event = Dali::Integration::TouchEvent();
561 event.AddPoint( GetPointUpOutside() );
562 application.ProcessEvent( event );
564 DALI_TEST_CHECK( !gIsCalledButtonCallback );
566 // Test3. Touch point down inside and up outside the button.
568 gIsCalledButtonCallback = false;
569 event = Dali::Integration::TouchEvent();
570 event.AddPoint( GetPointDownInside() );
571 application.ProcessEvent( event );
573 event = Dali::Integration::TouchEvent();
574 event.AddPoint( GetPointLeave() );
575 application.ProcessEvent( event );
577 event = Dali::Integration::TouchEvent();
578 event.AddPoint( GetPointUpOutside() );
579 application.ProcessEvent( event );
581 DALI_TEST_CHECK( !gIsCalledButtonCallback );
583 // Test4. Touch point down outside and up inside the button.
585 gIsCalledButtonCallback = false;
586 event = Dali::Integration::TouchEvent();
587 event.AddPoint( GetPointDownOutside() );
588 application.ProcessEvent( event );
590 event = Dali::Integration::TouchEvent();
591 event.AddPoint( GetPointEnter() );
592 application.ProcessEvent( event );
594 event = Dali::Integration::TouchEvent();
595 event.AddPoint( GetPointUpInside() );
596 application.ProcessEvent( event );
598 DALI_TEST_CHECK( !gIsCalledButtonCallback );
602 int UtcDaliButtonStateChangedSignalP(void)
604 ToolkitTestApplication application;
605 tet_infoline(" UtcDaliButtonStateChangedSignalP");
607 Button button = PushButton::New();
608 button.SetTogglableButton( true );
610 Stage::GetCurrent().Add( button );
612 application.SendNotification();
613 application.Render();
615 // connect to its signal
616 button.StateChangedSignal().Connect( &ButtonCallback );
618 gIsCalledButtonCallback = false;
619 button.SetSelected( true );
621 DALI_TEST_CHECK( gIsCalledButtonCallback );
623 gIsCalledButtonCallback = false;
624 button.SetSelected( false );
626 DALI_TEST_CHECK( gIsCalledButtonCallback );
630 int UtcDaliButtonSetProperty(void)
632 tet_infoline("UtcDaliButtonSetProperty: ");
633 ToolkitTestApplication application;
635 PushButton pushButton = PushButton::New();
637 pushButton.SetProperty(pushButton.GetPropertyIndex("disabled"), false);
638 DALI_TEST_CHECK( false == pushButton.IsDisabled() );
640 pushButton.SetProperty(pushButton.GetPropertyIndex("disabled"), true);
641 DALI_TEST_CHECK( true == pushButton.IsDisabled() );
646 int UtcDaliButtonSize(void)
648 ToolkitTestApplication application;
649 tet_infoline(" UtcDaliButtonSize");
651 // First an image is set, then SetSize is called.
652 PushButton pushButton = PushButton::New();
653 Stage::GetCurrent().Add( pushButton );
655 pushButton.SetBackgroundImage( "Image.jpg" );
656 pushButton.SetSize( 10.f, 10.f );
658 application.SendNotification();
659 application.Render();
661 Vector3 size = pushButton.GetCurrentSize();
663 DALI_TEST_EQUALS( size.width, 10.f, TEST_LOCATION );
664 DALI_TEST_EQUALS( size.height, 10.f, TEST_LOCATION );