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.SetLabelText( "Button Label" );
315 DALI_TEST_EQUALS( button.GetLabelText(), "Button Label", TEST_LOCATION );
319 int UtcDaliButtonSetLabelActorP(void)
321 ToolkitTestApplication application;
323 Button button = PushButton::New();
325 button.SetLabelText( "Button Label" );
327 DALI_TEST_EQUALS( button.GetLabelText(), "Button Label", TEST_LOCATION );
331 int UtcDaliButtonSetUnselectedImageP(void)
333 ToolkitTestApplication application;
334 tet_infoline(" UtcDaliButtonSetUnselectedImageP");
336 PushButton pushButton = PushButton::New();
337 Stage::GetCurrent().Add( pushButton );
339 application.SendNotification();
340 application.Render();
342 pushButton.SetSize( Vector2( 20.0f, 20.0f ) );
343 pushButton.SetUnselectedImage( "Image.jpg" );
345 application.SendNotification();
346 application.Render();
348 Vector3 size = pushButton.GetCurrentSize();
350 DALI_TEST_EQUALS( size.width, 20.f, TEST_LOCATION );
351 DALI_TEST_EQUALS( size.height, 20.f, TEST_LOCATION );
356 int UtcDaliButtonSetSelectedImageP(void)
358 ToolkitTestApplication application;
359 tet_infoline(" UtcDaliButtonSetButtonImage");
361 PushButton pushButton = PushButton::New();
362 Stage::GetCurrent().Add( pushButton );
364 application.SendNotification();
365 application.Render();
367 pushButton.SetSize( Vector2( 20.0f, 20.0f ) );
368 pushButton.SetSelectedImage( "Image.jpg" );
370 application.SendNotification();
371 application.Render();
373 Vector3 size = pushButton.GetCurrentSize();
375 DALI_TEST_EQUALS( size.width, 20.f, TEST_LOCATION );
376 DALI_TEST_EQUALS( size.height, 20.f, TEST_LOCATION );
381 int UtcDaliButtonPressedSignalP(void)
383 ToolkitTestApplication application;
384 tet_infoline(" UtcDaliButtonPressedSignalP");
386 Button button = PushButton::New();
387 button.SetAnchorPoint( AnchorPoint::TOP_LEFT );
388 button.SetParentOrigin( ParentOrigin::TOP_LEFT );
389 button.SetPosition( 240, 400 );
390 button.SetSize( 100, 100 );
392 Stage::GetCurrent().Add( button );
394 application.SendNotification();
395 application.Render();
397 // connect to its touch signal
398 button.PressedSignal().Connect( &ButtonCallback );
399 button.ReleasedSignal().Connect( &ButtonCallback );
401 Dali::Integration::TouchEvent event;
403 // Test1. Touch point down and up inside the button.
405 gIsCalledButtonCallback = false;
406 event = Dali::Integration::TouchEvent();
407 event.AddPoint( pointDownInside );
408 application.ProcessEvent( event );
410 DALI_TEST_CHECK( gIsCalledButtonCallback );
412 gIsCalledButtonCallback = false;
413 event = Dali::Integration::TouchEvent();
414 event.AddPoint( pointUpInside );
415 application.ProcessEvent( event );
417 DALI_TEST_CHECK( gIsCalledButtonCallback );
419 // Test2. Touch point down and up outside the button.
421 gIsCalledButtonCallback = false;
422 event = Dali::Integration::TouchEvent();
423 event.AddPoint( pointDownOutside );
424 application.ProcessEvent( event );
426 DALI_TEST_CHECK( !gIsCalledButtonCallback );
428 gIsCalledButtonCallback = false;
429 event = Dali::Integration::TouchEvent();
430 event.AddPoint( pointUpOutside );
431 application.ProcessEvent( event );
433 DALI_TEST_CHECK( !gIsCalledButtonCallback );
435 // Test3. Touch point down inside and up outside the button.
437 gIsCalledButtonCallback = false;
438 event = Dali::Integration::TouchEvent();
439 event.AddPoint( pointDownInside );
440 application.ProcessEvent( event );
442 DALI_TEST_CHECK( gIsCalledButtonCallback );
444 gIsCalledButtonCallback = false;
445 event = Dali::Integration::TouchEvent();
446 event.AddPoint( pointLeave );
447 application.ProcessEvent( event );
449 event = Dali::Integration::TouchEvent();
450 event.AddPoint( pointUpOutside );
451 application.ProcessEvent( event );
453 DALI_TEST_CHECK( gIsCalledButtonCallback );
455 // Test4. Touch point down outside and up inside the button.
457 gIsCalledButtonCallback = false;
458 event = Dali::Integration::TouchEvent();
459 event.AddPoint( pointDownOutside );
460 application.ProcessEvent( event );
462 DALI_TEST_CHECK( !gIsCalledButtonCallback );
464 gIsCalledButtonCallback = false;
465 event = Dali::Integration::TouchEvent();
466 event.AddPoint( pointEnter );
467 application.ProcessEvent( event );
469 event = Dali::Integration::TouchEvent();
470 event.AddPoint( pointUpInside );
471 application.ProcessEvent( event );
473 DALI_TEST_CHECK( !gIsCalledButtonCallback );
477 int UtcDaliButtonClickedSignalP(void)
479 ToolkitTestApplication application;
480 tet_infoline(" UtcDaliButtonClickedSignalP");
482 Button button = PushButton::New();
483 button.SetAnchorPoint( AnchorPoint::TOP_LEFT );
484 button.SetParentOrigin( ParentOrigin::TOP_LEFT );
485 button.SetPosition( 240, 400 );
486 button.SetSize( 100, 100 );
488 Stage::GetCurrent().Add( button );
490 application.SendNotification();
491 application.Render();
493 // connect to its touch signal
494 button.ClickedSignal().Connect( &ButtonCallback );
496 Dali::Integration::TouchEvent event;
498 // Test1. Touch point down and up inside the button.
500 gIsCalledButtonCallback = false;
501 event = Dali::Integration::TouchEvent();
502 event.AddPoint( pointDownInside );
503 application.ProcessEvent( event );
505 event = Dali::Integration::TouchEvent();
506 event.AddPoint( pointUpInside );
507 application.ProcessEvent( event );
509 DALI_TEST_CHECK( gIsCalledButtonCallback );
511 // Test2. Touch point down and up outside the button.
513 gIsCalledButtonCallback = false;
514 event = Dali::Integration::TouchEvent();
515 event.AddPoint( pointDownOutside );
516 application.ProcessEvent( event );
518 event = Dali::Integration::TouchEvent();
519 event.AddPoint( pointUpOutside );
520 application.ProcessEvent( event );
522 DALI_TEST_CHECK( !gIsCalledButtonCallback );
524 // Test3. Touch point down inside and up outside the button.
526 gIsCalledButtonCallback = false;
527 event = Dali::Integration::TouchEvent();
528 event.AddPoint( pointDownInside );
529 application.ProcessEvent( event );
531 event = Dali::Integration::TouchEvent();
532 event.AddPoint( pointLeave );
533 application.ProcessEvent( event );
535 event = Dali::Integration::TouchEvent();
536 event.AddPoint( pointUpOutside );
537 application.ProcessEvent( event );
539 DALI_TEST_CHECK( !gIsCalledButtonCallback );
541 // Test4. Touch point down outside and up inside the button.
543 gIsCalledButtonCallback = false;
544 event = Dali::Integration::TouchEvent();
545 event.AddPoint( pointDownOutside );
546 application.ProcessEvent( event );
548 event = Dali::Integration::TouchEvent();
549 event.AddPoint( pointEnter );
550 application.ProcessEvent( event );
552 event = Dali::Integration::TouchEvent();
553 event.AddPoint( pointUpInside );
554 application.ProcessEvent( event );
556 DALI_TEST_CHECK( !gIsCalledButtonCallback );
560 int UtcDaliButtonStateChangedSignalP(void)
562 ToolkitTestApplication application;
563 tet_infoline(" UtcDaliButtonStateChangedSignalP");
565 Button button = PushButton::New();
566 button.SetTogglableButton( true );
568 Stage::GetCurrent().Add( button );
570 application.SendNotification();
571 application.Render();
573 // connect to its signal
574 button.StateChangedSignal().Connect( &ButtonCallback );
576 gIsCalledButtonCallback = false;
577 button.SetSelected( true );
579 DALI_TEST_CHECK( gIsCalledButtonCallback );
581 gIsCalledButtonCallback = false;
582 button.SetSelected( false );
584 DALI_TEST_CHECK( gIsCalledButtonCallback );
588 int UtcDaliButtonSetProperty(void)
590 tet_infoline("UtcDaliButtonSetProperty: ");
591 ToolkitTestApplication application;
593 PushButton pushButton = PushButton::New();
595 pushButton.SetProperty(pushButton.GetPropertyIndex("disabled"), false);
596 DALI_TEST_CHECK( false == pushButton.IsDisabled() );
598 pushButton.SetProperty(pushButton.GetPropertyIndex("disabled"), true);
599 DALI_TEST_CHECK( true == pushButton.IsDisabled() );
604 int UtcDaliButtonSize(void)
606 ToolkitTestApplication application;
607 tet_infoline(" UtcDaliButtonSize");
609 // First an image is set, then SetSize is called.
610 PushButton pushButton = PushButton::New();
611 Stage::GetCurrent().Add( pushButton );
613 pushButton.SetBackgroundImage( "Image.jpg" );
614 pushButton.SetSize( 10.f, 10.f );
616 application.SendNotification();
617 application.Render();
619 Vector3 size = pushButton.GetCurrentSize();
621 DALI_TEST_EQUALS( size.width, 10.f, TEST_LOCATION );
622 DALI_TEST_EQUALS( size.height, 10.f, TEST_LOCATION );