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 const Dali::TouchPoint pointDownInside( 0, TouchPoint::Down, 240, 400 );
75 const Dali::TouchPoint pointUpInside( 0, TouchPoint::Up, 240, 400 );
76 const Dali::TouchPoint pointLeave( 0, TouchPoint::Leave, 240, 400 );
77 const Dali::TouchPoint pointEnter( 0, TouchPoint::Motion, 240, 400 );
78 const Dali::TouchPoint pointDownOutside( 0, TouchPoint::Down, 10, 10 );
79 const Dali::TouchPoint pointUpOutside( 0, TouchPoint::Up, 10, 10 );
81 static float ANIMATION_TIME( 0.5f );
84 int UtcDaliButtonConstructorP(void)
86 TestApplication application;
90 DALI_TEST_CHECK( !button );
94 int UtcDaliButtonCopyConstructorP(void)
96 TestApplication application;
98 // Initialize an object, ref count == 1
99 Button button = PushButton::New();
101 Button copy( button );
102 DALI_TEST_CHECK( copy );
106 int UtcDaliButtonAssignmentOperatorP(void)
108 TestApplication application;
110 Button button = PushButton::New();
112 Button copy( button );
113 DALI_TEST_CHECK( copy );
115 DALI_TEST_CHECK( button == copy );
119 int UtcDaliButtonDownCastP(void)
121 TestApplication application;
123 Button button = PushButton::New();
125 BaseHandle object(button);
127 Button button2 = Button::DownCast( object );
128 DALI_TEST_CHECK(button2);
130 Button button3 = DownCast< Button >(object);
131 DALI_TEST_CHECK(button3);
135 int UtcDaliButtonDownCastN(void)
137 TestApplication application;
139 BaseHandle unInitializedObject;
141 Button button1 = Button::DownCast( unInitializedObject );
142 DALI_TEST_CHECK( !button1 );
144 Button button2 = DownCast< Button >( unInitializedObject );
145 DALI_TEST_CHECK( !button2 );
149 int UtcDaliButtonSetDisabledP(void)
151 ToolkitTestApplication application;
153 Button button = PushButton::New();
155 button.SetDisabled( true );
157 DALI_TEST_CHECK( button.IsDisabled() );
159 button.SetDisabled( false );
161 DALI_TEST_CHECK( !button.IsDisabled() );
163 button.SetDisabled( true );
165 DALI_TEST_CHECK( button.IsDisabled() );
167 button.SetDisabled( false );
169 DALI_TEST_CHECK( !button.IsDisabled() );
173 int UtcDaliButtonIsDisabledP(void)
175 ToolkitTestApplication application;
177 Button button = PushButton::New();
179 button.SetDisabled( true );
181 DALI_TEST_CHECK( button.IsDisabled() );
183 button.SetDisabled( false );
185 DALI_TEST_CHECK( !button.IsDisabled() );
189 int UtcDaliButtonSetAutoRepeatingP(void)
191 ToolkitTestApplication application;
193 Button button = PushButton::New();
195 button.SetAutoRepeating( true );
197 DALI_TEST_CHECK( button.IsAutoRepeating() );
199 button.SetAutoRepeating( false );
201 DALI_TEST_CHECK( !button.IsAutoRepeating() );
203 button.SetAutoRepeating( true );
205 DALI_TEST_CHECK( button.IsAutoRepeating() );
207 button.SetAutoRepeating( false );
209 DALI_TEST_CHECK( !button.IsAutoRepeating() );
213 int UtcDaliButtonIsAutoRepeatingP(void)
215 ToolkitTestApplication application;
217 Button button = PushButton::New();
219 button.SetAutoRepeating( true );
221 DALI_TEST_CHECK( button.IsAutoRepeating() );
223 button.SetAutoRepeating( false );
225 DALI_TEST_CHECK( !button.IsAutoRepeating() );
229 int UtcDaliButtonSetInitialAutoRepeatingDelayP(void)
231 ToolkitTestApplication application;
233 Button button = PushButton::New();
235 button.SetInitialAutoRepeatingDelay( 0.5f );
237 DALI_TEST_EQUALS( button.GetInitialAutoRepeatingDelay(), 0.5f, TEST_LOCATION );
239 button.SetInitialAutoRepeatingDelay( 0.2f );
241 DALI_TEST_EQUALS( button.GetInitialAutoRepeatingDelay(), 0.2f, TEST_LOCATION );
245 int UtcDaliButtonSetNextAutoRepeatingDelayP(void)
247 ToolkitTestApplication application;
249 Button button = PushButton::New();
251 button.SetNextAutoRepeatingDelay( 0.5f );
253 DALI_TEST_EQUALS( button.GetNextAutoRepeatingDelay(), 0.5f, TEST_LOCATION );
255 button.SetNextAutoRepeatingDelay( 0.2f );
257 DALI_TEST_EQUALS( button.GetNextAutoRepeatingDelay(), 0.2f, TEST_LOCATION );
261 int UtcDaliButtonSetTogglableButtonP(void)
263 ToolkitTestApplication application;
265 Button button = PushButton::New();
267 button.SetTogglableButton( true );
269 DALI_TEST_CHECK( button.IsTogglableButton() );
271 button.SetTogglableButton( false );
273 DALI_TEST_CHECK( !button.IsTogglableButton() );
277 int UtcDaliButtonSetSelectedP(void)
279 ToolkitTestApplication application;
281 Button button = PushButton::New();
282 button.SetTogglableButton( true );
284 button.SetSelected( true );
286 DALI_TEST_CHECK( button.IsSelected() );
288 button.SetSelected( false );
290 DALI_TEST_CHECK( !button.IsSelected() );
294 int UtcDaliButtonSetAnimationTimeP(void)
296 ToolkitTestApplication application;
297 tet_infoline(" UtcDaliButtonSetAnimationTimeP");
299 Button button = PushButton::New();
301 button.SetAnimationTime( ANIMATION_TIME );
303 DALI_TEST_EQUALS( button.GetAnimationTime(), ANIMATION_TIME, TEST_LOCATION );
307 int UtcDaliButtonSetLabelStringP(void)
309 ToolkitTestApplication application;
311 Button button = PushButton::New();
313 button.SetLabel( "Button Label" );
315 DALI_TEST_CHECK( button.GetLabel() );
319 int UtcDaliButtonSetLabelActorP(void)
321 ToolkitTestApplication application;
323 Button button = PushButton::New();
325 TextLabel textLabel = TextLabel::New( "Button Label" );
326 button.SetLabel( textLabel );
328 DALI_TEST_CHECK( button.GetLabel() );
332 int UtcDaliButtonSetButtonImage(void)
334 ToolkitTestApplication application;
335 tet_infoline(" UtcDaliButtonSetButtonImage");
337 Image image = CreateSolidColorImage( Color::RED, 10, 10 );
339 PushButton pushButton = PushButton::New();
340 Stage::GetCurrent().Add( pushButton );
342 application.SendNotification();
343 application.Render();
345 pushButton.SetSize( Vector2( 20.0f, 20.0f ) );
346 pushButton.SetButtonImage( image );
348 application.SendNotification();
349 application.Render();
351 Vector3 size = pushButton.GetCurrentSize();
353 DALI_TEST_EQUALS( size.width, 20.f, TEST_LOCATION );
354 DALI_TEST_EQUALS( size.height, 20.f, TEST_LOCATION );
359 int UtcDaliButtonSetSelectedImageP(void)
361 ToolkitTestApplication application;
362 tet_infoline(" UtcDaliButtonSetButtonImage");
364 Image image = CreateSolidColorImage( Color::RED, 10, 10 );
366 PushButton pushButton = PushButton::New();
367 Stage::GetCurrent().Add( pushButton );
369 application.SendNotification();
370 application.Render();
372 pushButton.SetSize( Vector2( 20.0f, 20.0f ) );
373 pushButton.SetSelectedImage( image );
375 application.SendNotification();
376 application.Render();
378 Vector3 size = pushButton.GetCurrentSize();
380 DALI_TEST_EQUALS( size.width, 20.f, TEST_LOCATION );
381 DALI_TEST_EQUALS( size.height, 20.f, TEST_LOCATION );
386 int UtcDaliButtonPressedSignalP(void)
388 ToolkitTestApplication application;
389 tet_infoline(" UtcDaliButtonPressedSignalP");
391 Button button = PushButton::New();
392 button.SetAnchorPoint( AnchorPoint::TOP_LEFT );
393 button.SetParentOrigin( ParentOrigin::TOP_LEFT );
394 button.SetPosition( 240, 400 );
395 button.SetSize( 100, 100 );
397 Stage::GetCurrent().Add( button );
399 application.SendNotification();
400 application.Render();
402 // connect to its touch signal
403 button.PressedSignal().Connect( &ButtonCallback );
404 button.ReleasedSignal().Connect( &ButtonCallback );
406 Dali::Integration::TouchEvent event;
408 // Test1. Touch point down and up inside the button.
410 gIsCalledButtonCallback = false;
411 event = Dali::Integration::TouchEvent();
412 event.AddPoint( pointDownInside );
413 application.ProcessEvent( event );
415 DALI_TEST_CHECK( gIsCalledButtonCallback );
417 gIsCalledButtonCallback = false;
418 event = Dali::Integration::TouchEvent();
419 event.AddPoint( pointUpInside );
420 application.ProcessEvent( event );
422 DALI_TEST_CHECK( gIsCalledButtonCallback );
424 // Test2. Touch point down and up outside the button.
426 gIsCalledButtonCallback = false;
427 event = Dali::Integration::TouchEvent();
428 event.AddPoint( pointDownOutside );
429 application.ProcessEvent( event );
431 DALI_TEST_CHECK( !gIsCalledButtonCallback );
433 gIsCalledButtonCallback = false;
434 event = Dali::Integration::TouchEvent();
435 event.AddPoint( pointUpOutside );
436 application.ProcessEvent( event );
438 DALI_TEST_CHECK( !gIsCalledButtonCallback );
440 // Test3. Touch point down inside and up outside the button.
442 gIsCalledButtonCallback = false;
443 event = Dali::Integration::TouchEvent();
444 event.AddPoint( pointDownInside );
445 application.ProcessEvent( event );
447 DALI_TEST_CHECK( gIsCalledButtonCallback );
449 gIsCalledButtonCallback = false;
450 event = Dali::Integration::TouchEvent();
451 event.AddPoint( pointLeave );
452 application.ProcessEvent( event );
454 event = Dali::Integration::TouchEvent();
455 event.AddPoint( pointUpOutside );
456 application.ProcessEvent( event );
458 DALI_TEST_CHECK( gIsCalledButtonCallback );
460 // Test4. Touch point down outside and up inside the button.
462 gIsCalledButtonCallback = false;
463 event = Dali::Integration::TouchEvent();
464 event.AddPoint( pointDownOutside );
465 application.ProcessEvent( event );
467 DALI_TEST_CHECK( !gIsCalledButtonCallback );
469 gIsCalledButtonCallback = false;
470 event = Dali::Integration::TouchEvent();
471 event.AddPoint( pointEnter );
472 application.ProcessEvent( event );
474 event = Dali::Integration::TouchEvent();
475 event.AddPoint( pointUpInside );
476 application.ProcessEvent( event );
478 DALI_TEST_CHECK( !gIsCalledButtonCallback );
482 int UtcDaliButtonClickedSignalP(void)
484 ToolkitTestApplication application;
485 tet_infoline(" UtcDaliButtonClickedSignalP");
487 Button button = PushButton::New();
488 button.SetAnchorPoint( AnchorPoint::TOP_LEFT );
489 button.SetParentOrigin( ParentOrigin::TOP_LEFT );
490 button.SetPosition( 240, 400 );
491 button.SetSize( 100, 100 );
493 Stage::GetCurrent().Add( button );
495 application.SendNotification();
496 application.Render();
498 // connect to its touch signal
499 button.ClickedSignal().Connect( &ButtonCallback );
501 Dali::Integration::TouchEvent event;
503 // Test1. Touch point down and up inside the button.
505 gIsCalledButtonCallback = false;
506 event = Dali::Integration::TouchEvent();
507 event.AddPoint( pointDownInside );
508 application.ProcessEvent( event );
510 event = Dali::Integration::TouchEvent();
511 event.AddPoint( pointUpInside );
512 application.ProcessEvent( event );
514 DALI_TEST_CHECK( gIsCalledButtonCallback );
516 // Test2. Touch point down and up outside the button.
518 gIsCalledButtonCallback = false;
519 event = Dali::Integration::TouchEvent();
520 event.AddPoint( pointDownOutside );
521 application.ProcessEvent( event );
523 event = Dali::Integration::TouchEvent();
524 event.AddPoint( pointUpOutside );
525 application.ProcessEvent( event );
527 DALI_TEST_CHECK( !gIsCalledButtonCallback );
529 // Test3. Touch point down inside and up outside the button.
531 gIsCalledButtonCallback = false;
532 event = Dali::Integration::TouchEvent();
533 event.AddPoint( pointDownInside );
534 application.ProcessEvent( event );
536 event = Dali::Integration::TouchEvent();
537 event.AddPoint( pointLeave );
538 application.ProcessEvent( event );
540 event = Dali::Integration::TouchEvent();
541 event.AddPoint( pointUpOutside );
542 application.ProcessEvent( event );
544 DALI_TEST_CHECK( !gIsCalledButtonCallback );
546 // Test4. Touch point down outside and up inside the button.
548 gIsCalledButtonCallback = false;
549 event = Dali::Integration::TouchEvent();
550 event.AddPoint( pointDownOutside );
551 application.ProcessEvent( event );
553 event = Dali::Integration::TouchEvent();
554 event.AddPoint( pointEnter );
555 application.ProcessEvent( event );
557 event = Dali::Integration::TouchEvent();
558 event.AddPoint( pointUpInside );
559 application.ProcessEvent( event );
561 DALI_TEST_CHECK( !gIsCalledButtonCallback );
565 int UtcDaliButtonStateChangedSignalP(void)
567 ToolkitTestApplication application;
568 tet_infoline(" UtcDaliButtonStateChangedSignalP");
570 Button button = PushButton::New();
571 button.SetTogglableButton( true );
573 Stage::GetCurrent().Add( button );
575 application.SendNotification();
576 application.Render();
578 // connect to its signal
579 button.StateChangedSignal().Connect( &ButtonCallback );
581 gIsCalledButtonCallback = false;
582 button.SetSelected( true );
584 DALI_TEST_CHECK( gIsCalledButtonCallback );
586 gIsCalledButtonCallback = false;
587 button.SetSelected( false );
589 DALI_TEST_CHECK( gIsCalledButtonCallback );
593 int UtcDaliButtonSetProperty(void)
595 tet_infoline("UtcDaliButtonSetProperty: ");
596 ToolkitTestApplication application;
598 PushButton pushButton = PushButton::New();
600 pushButton.SetProperty(pushButton.GetPropertyIndex("disabled"), false);
601 DALI_TEST_CHECK( false == pushButton.IsDisabled() );
602 pushButton.SetProperty(pushButton.GetPropertyIndex("disabled"), true);
603 DALI_TEST_CHECK( true == pushButton.IsDisabled() );
607 int UtcDaliButtonSize(void)
609 ToolkitTestApplication application;
610 tet_infoline(" UtcDaliButtonSize");
612 ImageActor image01 = ImageActor::New(CreateBufferImage());
613 image01.SetSize( 100, 50 );
615 PushButton pushButton;
619 // Test1 Size is set through Actor API
621 // First an image is set, then SetSize is called.
622 pushButton = PushButton::New();
623 Stage::GetCurrent().Add( pushButton );
625 pushButton.SetBackgroundImage( image01 );
626 pushButton.SetSize( 10.f, 10.f );
628 application.SendNotification();
629 application.Render();
631 size = pushButton.GetCurrentSize();
633 DALI_TEST_EQUALS( size.width, 10.f, TEST_LOCATION );
634 DALI_TEST_EQUALS( size.height, 10.f, TEST_LOCATION );