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/integration-api/events/touch-event-integ.h>
27 #include <dali-toolkit/dali-toolkit.h>
30 using namespace Toolkit;
32 void utc_dali_toolkit_pushbutton_startup(void)
34 test_return_value = TET_UNDEF;
37 void utc_dali_toolkit_pushbutton_cleanup(void)
39 test_return_value = TET_PASS;
45 static bool gPushButtonSelectedState = false;
46 bool PushButtonSelected( Button button )
48 gPushButtonSelectedState = button.IsSelected();
52 static bool gPushButtonPressed = false;
54 static bool PushButtonPressed( Button button )
56 gPushButtonPressed = true;
60 static bool gPushButtonReleased = false;
62 static bool PushButtonReleased( Button button )
64 gPushButtonReleased = true;
68 const Dali::TouchPoint pointDownInside( 0, TouchPoint::Down, 240, 400 );
69 const Dali::TouchPoint pointUpInside( 0, TouchPoint::Up, 240, 400 );
70 const Dali::TouchPoint pointLeave( 0, TouchPoint::Leave, 240, 400 );
71 const Dali::TouchPoint pointEnter( 0, TouchPoint::Motion, 240, 400 );
72 const Dali::TouchPoint pointMotionOut( 0, TouchPoint::Motion, 10, 10 );
73 const Dali::TouchPoint pointDownOutside( 0, TouchPoint::Down, 10, 10 );
74 const Dali::TouchPoint pointUpOutside( 0, TouchPoint::Up, 10, 10 );
76 Image CreateSolidColorImage( const Vector4& color, unsigned int width, unsigned int height )
78 BufferImage imageData = BufferImage::New( width, height, Pixel::RGBA8888 );
81 PixelBuffer* pixbuf = imageData.GetBuffer();
82 unsigned int size = width * height;
84 for( size_t i = 0; i < size; i++ )
86 pixbuf[i*4+0] = 0xFF * color.r;
87 pixbuf[i*4+1] = 0xFF * color.g;
88 pixbuf[i*4+2] = 0xFF * color.b;
89 pixbuf[i*4+3] = 0xFF * color.a;
99 int UtcDaliPushButtonConstructorP(void)
101 TestApplication application;
105 DALI_TEST_CHECK( !button );
109 int UtcDaliPushButtonCopyConstructorP(void)
111 TestApplication application;
113 // Initialize an object, ref count == 1
114 PushButton button = PushButton::New();
116 PushButton copy( button );
117 DALI_TEST_CHECK( copy );
121 int UtcDaliPushButtonAssignmentOperatorP(void)
123 TestApplication application;
125 PushButton button = PushButton::New();
127 PushButton copy( button );
128 DALI_TEST_CHECK( copy );
130 DALI_TEST_CHECK( button == copy );
134 int UtcDaliPushButtonNewP(void)
136 TestApplication application;
138 PushButton button = PushButton::New();
140 DALI_TEST_CHECK( button );
144 int UtcDaliPushButtonDownCastP(void)
146 TestApplication application;
148 PushButton button = PushButton::New();
150 BaseHandle object(button);
152 PushButton button2 = PushButton::DownCast( object );
153 DALI_TEST_CHECK(button2);
155 PushButton button3 = DownCast< PushButton >(object);
156 DALI_TEST_CHECK(button3);
160 int UtcDaliPushButtonDownCastN(void)
162 TestApplication application;
164 BaseHandle unInitializedObject;
166 PushButton button1 = PushButton::DownCast( unInitializedObject );
167 DALI_TEST_CHECK( !button1 );
169 PushButton button2 = DownCast< PushButton >( unInitializedObject );
170 DALI_TEST_CHECK( !button2 );
174 int UtcDaliPushButtonSetGetAutoRepeating(void)
176 ToolkitTestApplication application;
177 tet_infoline(" UtcDaliPushButtonSetGetAutoRepeating");
179 PushButton pushButton = PushButton::New();
181 pushButton.SetAutoRepeating( true );
183 DALI_TEST_CHECK( pushButton.IsAutoRepeating() );
185 pushButton.SetAutoRepeating( false );
187 DALI_TEST_CHECK( !pushButton.IsAutoRepeating() );
189 pushButton.SetAutoRepeating( true );
191 DALI_TEST_CHECK( pushButton.IsAutoRepeating() );
195 int UtcDaliPushButtonSetGetTogglableButton(void)
197 ToolkitTestApplication application;
198 tet_infoline(" UtcDaliPushButtonSetGetTogglableButton");
200 PushButton pushButton = PushButton::New();
202 pushButton.SetTogglableButton( true );
204 DALI_TEST_CHECK( pushButton.IsTogglableButton() );
206 pushButton.SetTogglableButton( false );
208 DALI_TEST_CHECK( !pushButton.IsTogglableButton() );
210 pushButton.SetTogglableButton( true );
212 DALI_TEST_CHECK( pushButton.IsTogglableButton() );
216 int UtcDaliPushButtonSetGetAutoRepeatingAndTogglableButton(void)
218 ToolkitTestApplication application;
219 tet_infoline(" UtcDaliPushButtonSetGetAutoRepeatingAndTogglableButton");
221 PushButton pushButton = PushButton::New();
223 pushButton.SetAutoRepeating( true );
224 pushButton.SetTogglableButton( true );
226 DALI_TEST_CHECK( pushButton.IsTogglableButton() );
227 DALI_TEST_CHECK( !pushButton.IsAutoRepeating() );
229 pushButton.SetTogglableButton( true );
230 pushButton.SetAutoRepeating( true );
232 DALI_TEST_CHECK( pushButton.IsAutoRepeating() );
233 DALI_TEST_CHECK( !pushButton.IsTogglableButton() );
237 int UtcDaliPushButtonSetGetSelected01(void)
239 ToolkitTestApplication application;
240 tet_infoline(" UtcDaliPushButtonSetGetSelected01");
242 PushButton pushButton = PushButton::New();
244 pushButton.SetTogglableButton( true );
245 pushButton.StateChangedSignal().Connect( &PushButtonSelected );
247 gPushButtonSelectedState = false;
248 pushButton.SetSelected( true );
250 DALI_TEST_CHECK( pushButton.IsSelected() );
251 DALI_TEST_CHECK( gPushButtonSelectedState );
253 pushButton.SetSelected( false );
255 DALI_TEST_CHECK( !pushButton.IsSelected() );
256 DALI_TEST_CHECK( !gPushButtonSelectedState );
258 pushButton.SetSelected( true );
260 DALI_TEST_CHECK( pushButton.IsSelected() );
261 DALI_TEST_CHECK( gPushButtonSelectedState );
265 int UtcDaliPushButtonSetGetSelected02(void)
267 ToolkitTestApplication application;
268 tet_infoline(" UtcDaliPushButtonSetGetSelected02");
270 PushButton pushButton = PushButton::New();
272 pushButton.SetTogglableButton( false );
273 pushButton.StateChangedSignal().Connect( &PushButtonSelected );
275 gPushButtonSelectedState = false;
276 pushButton.SetSelected( true );
278 DALI_TEST_CHECK( !pushButton.IsSelected() );
279 DALI_TEST_CHECK( !gPushButtonSelectedState );
281 pushButton.SetSelected( false );
283 DALI_TEST_CHECK( !pushButton.IsSelected() );
284 DALI_TEST_CHECK( !gPushButtonSelectedState );
286 pushButton.SetSelected( true );
288 DALI_TEST_CHECK( !pushButton.IsSelected() );
289 DALI_TEST_CHECK( !gPushButtonSelectedState );
293 int UtcDaliPushButtonSetGetAutorepeatingDelayValues01(void)
295 ToolkitTestApplication application;
296 tet_infoline(" UtcDaliPushButtonSetGetAutorepeatingDelayValues01");
298 PushButton pushButton = PushButton::New();
300 pushButton.SetAutoRepeating( true );
302 pushButton.SetInitialAutoRepeatingDelay( 1.f );
303 DALI_TEST_EQUALS( pushButton.GetInitialAutoRepeatingDelay(), 1.f, TEST_LOCATION );
305 pushButton.SetNextAutoRepeatingDelay( 1.f );
306 DALI_TEST_EQUALS( pushButton.GetNextAutoRepeatingDelay(), 1.f, TEST_LOCATION );
310 int UtcDaliPushButtonSetGetAutorepeatingDelayValues02(void)
312 ToolkitTestApplication application;
313 tet_infoline(" UtcDaliPushButtonSetGetAutorepeatingDelayValues02");
315 PushButton pushButton = PushButton::New();
317 bool assert1( false );
318 bool assert2( false );
320 pushButton.SetAutoRepeating( true );
324 pushButton.SetInitialAutoRepeatingDelay( -1.f );
326 catch( Dali::DaliException& e )
328 DALI_TEST_PRINT_ASSERT( e );
329 DALI_TEST_EQUALS(e.condition, "initialAutoRepeatingDelay > 0.f", TEST_LOCATION);
335 pushButton.SetNextAutoRepeatingDelay( -1.f );
337 catch( Dali::DaliException& e )
339 DALI_TEST_PRINT_ASSERT( e );
340 DALI_TEST_EQUALS(e.condition, "nextAutoRepeatingDelay > 0.f", TEST_LOCATION);
344 DALI_TEST_CHECK( assert1 && assert2 );
348 int UtcDaliPushButtonSetLabelText(void)
350 ToolkitTestApplication application;
351 tet_infoline(" UtcDaliPushButtonSetLabelText");
353 const std::string STR( "Hola!" );
355 PushButton pushButton = PushButton::New();
357 application.SendNotification();
358 application.Render();
360 pushButton.SetLabel( STR );
362 TextLabel label = TextLabel::DownCast( pushButton.GetLabel() );
363 DALI_TEST_CHECK( STR == label.GetProperty<std::string>( TextLabel::Property::TEXT ) );
368 int UtcDaliPushButtonPressed(void)
370 ToolkitTestApplication application;
371 tet_infoline(" UtcDaliPushButtonPressed");
373 PushButton pushButton = PushButton::New();
374 pushButton.SetAnchorPoint( AnchorPoint::TOP_LEFT );
375 pushButton.SetParentOrigin( ParentOrigin::TOP_LEFT );
376 pushButton.SetPosition( 240, 400 );
377 pushButton.SetSize( 100, 100 );
379 Stage::GetCurrent().Add( pushButton );
381 application.SendNotification();
382 application.Render();
384 gPushButtonPressed = false;
386 // connect to its touch signal
387 pushButton.PressedSignal().Connect( &PushButtonPressed );
389 Dali::Integration::TouchEvent eventDown;
390 eventDown.AddPoint( pointDownInside );
392 // flush the queue and render once
393 application.SendNotification();
394 application.Render();
395 application.ProcessEvent( eventDown );
397 DALI_TEST_CHECK( gPushButtonPressed );
401 int UtcDaliPushButtonReleased(void)
403 ToolkitTestApplication application;
404 tet_infoline(" UtcDaliPushButtonReleased");
406 PushButton pushButton = PushButton::New();
407 pushButton.SetAnchorPoint( AnchorPoint::TOP_LEFT );
408 pushButton.SetParentOrigin( ParentOrigin::TOP_LEFT );
409 pushButton.SetPosition( 240, 400 );
410 pushButton.SetSize( 100, 100 );
412 Stage::GetCurrent().Add( pushButton );
414 application.SendNotification();
415 application.Render();
417 // connect to its touch signal
418 pushButton.ReleasedSignal().Connect( &PushButtonReleased );
420 Dali::Integration::TouchEvent event;
422 // Test1. Touch point down and up inside the button.
424 gPushButtonReleased = false;
425 event = Dali::Integration::TouchEvent();
426 event.AddPoint( pointDownInside );
427 application.ProcessEvent( event );
429 event = Dali::Integration::TouchEvent();
430 event.AddPoint( pointUpInside );
431 application.ProcessEvent( event );
433 DALI_TEST_CHECK( gPushButtonReleased );
435 // Test2. Touch point down and up outside the button.
437 gPushButtonReleased = false;
438 event = Dali::Integration::TouchEvent();
439 event.AddPoint( pointDownOutside );
440 application.ProcessEvent( event );
442 event = Dali::Integration::TouchEvent();
443 event.AddPoint( pointUpOutside );
444 application.ProcessEvent( event );
446 DALI_TEST_CHECK( !gPushButtonReleased );
448 // Test3. Touch point down inside and up outside the button.
450 gPushButtonReleased = false;
451 event = Dali::Integration::TouchEvent();
452 event.AddPoint( pointDownInside );
453 application.ProcessEvent( event );
455 event = Dali::Integration::TouchEvent();
456 event.AddPoint( pointLeave );
457 application.ProcessEvent( event );
459 event = Dali::Integration::TouchEvent();
460 event.AddPoint( pointUpOutside );
461 application.ProcessEvent( event );
463 DALI_TEST_CHECK( gPushButtonReleased );
465 // Test4. Touch point down outside and up inside the button.
467 gPushButtonReleased = false;
468 event = Dali::Integration::TouchEvent();
469 event.AddPoint( pointDownOutside );
470 application.ProcessEvent( event );
472 event = Dali::Integration::TouchEvent();
473 event.AddPoint( pointEnter );
474 application.ProcessEvent( event );
476 event = Dali::Integration::TouchEvent();
477 event.AddPoint( pointUpInside );
478 application.ProcessEvent( event );
480 DALI_TEST_CHECK( !gPushButtonReleased );
484 int UtcDaliPushButtonSelected(void)
486 ToolkitTestApplication application;
487 tet_infoline(" UtcDaliPushButtonSelected");
489 PushButton pushButton = PushButton::New();
490 pushButton.SetAnchorPoint( AnchorPoint::TOP_LEFT );
491 pushButton.SetParentOrigin( ParentOrigin::TOP_LEFT );
492 pushButton.SetPosition( 240, 400 );
493 pushButton.SetSize( 100, 100 );
495 Stage::GetCurrent().Add( pushButton );
497 application.SendNotification();
498 application.Render();
500 // connect to its touch signal
501 pushButton.StateChangedSignal().Connect( &PushButtonSelected );
503 Dali::Integration::TouchEvent event;
505 // Test1. No togglable button.
507 gPushButtonSelectedState = false;
508 event = Dali::Integration::TouchEvent();
509 event.AddPoint( pointDownInside );
510 application.ProcessEvent( event );
512 event = Dali::Integration::TouchEvent();
513 event.AddPoint( pointUpInside );
514 application.ProcessEvent( event );
516 DALI_TEST_CHECK( !gPushButtonSelectedState );
518 // Set togglable property.
519 pushButton.SetTogglableButton( true );
521 // Test2. Touch point down and up inside the button twice.
522 gPushButtonSelectedState = false;
523 event = Dali::Integration::TouchEvent();
524 event.AddPoint( pointDownInside );
525 application.ProcessEvent( event );
527 event = Dali::Integration::TouchEvent();
528 event.AddPoint( pointUpInside );
529 application.ProcessEvent( event );
531 DALI_TEST_CHECK( gPushButtonSelectedState );
533 event = Dali::Integration::TouchEvent();
534 event.AddPoint( pointDownInside );
535 application.ProcessEvent( event );
537 event = Dali::Integration::TouchEvent();
538 event.AddPoint( pointUpInside );
539 application.ProcessEvent( event );
541 DALI_TEST_CHECK( !gPushButtonSelectedState );
543 // Test3. Touch point down and up outside the button.
545 gPushButtonSelectedState = false;
546 event = Dali::Integration::TouchEvent();
547 event.AddPoint( pointDownOutside );
548 application.ProcessEvent( event );
550 event = Dali::Integration::TouchEvent();
551 event.AddPoint( pointUpOutside );
552 application.ProcessEvent( event );
554 DALI_TEST_CHECK( !gPushButtonSelectedState );
556 // Test4. Touch point down inside and up outside the button.
558 gPushButtonSelectedState = false;
559 event = Dali::Integration::TouchEvent();
560 event.AddPoint( pointDownInside );
561 application.ProcessEvent( event );
563 event = Dali::Integration::TouchEvent();
564 event.AddPoint( pointLeave );
565 application.ProcessEvent( event );
567 event = Dali::Integration::TouchEvent();
568 event.AddPoint( pointUpOutside );
569 application.ProcessEvent( event );
571 DALI_TEST_CHECK( !gPushButtonSelectedState );
573 // Test5. Touch point down outside and up inside the button.
575 gPushButtonSelectedState = false;
576 event = Dali::Integration::TouchEvent();
577 event.AddPoint( pointDownOutside );
578 application.ProcessEvent( event );
580 event = Dali::Integration::TouchEvent();
581 event.AddPoint( pointEnter );
582 application.ProcessEvent( event );
584 event = Dali::Integration::TouchEvent();
585 event.AddPoint( pointUpInside );
586 application.ProcessEvent( event );
588 DALI_TEST_CHECK( !gPushButtonSelectedState );