+ tet_infoline(" Test Icon BOTTOM alignment - Width grows to largest of Icon or label (plus padding)");
+ pushButton.SetProperty( Toolkit::DevelButton::Property::LABEL_RELATIVE_ALIGNMENT, "TOP" );
+
+ application.SendNotification();
+ application.Render();
+
+ size.width = pushButton.GetRelayoutSize( Dimension::WIDTH );
+ size.height = pushButton.GetRelayoutSize( Dimension::HEIGHT );
+
+ DALI_TEST_EQUALS( size.width, ( std::max(testImageWithPaddingSize.width, labelAndPaddingSize.width )) , TEST_LOCATION );
+ DALI_TEST_EQUALS( size.height,( testImageWithPaddingSize.height + labelAndPaddingSize.height ) , TEST_LOCATION );
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetUnSelectedVisual01P(void)
+{
+ tet_infoline(" Test adding a visual for the UNSELECTED_VISUAL property, removing Button from stage and counting renderers\n");
+ ToolkitTestApplication application;
+
+ PushButton pushButton = PushButton::New();
+ pushButton.SetProperty( Actor::Property::SIZE, Vector2( BUTTON_SIZE_TO_GET_INSIDE_TOUCH_EVENTS ) );
+
+ application.GetScene().Add( pushButton );
+
+ Property::Map propertyMap;
+ propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
+ propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
+
+ pushButton.SetProperty( Toolkit::Button::Property::UNSELECTED_BACKGROUND_VISUAL, propertyMap );
+
+ tet_infoline(" UNSELECTED_VISUAL Added to button\n");
+
+ application.SendNotification();
+ application.Render(0);
+
+ unsigned int rendererCount = pushButton.GetRendererCount();
+ tet_printf("After adding UNSELECTED_BACKGROUND_VISUAL the renderer count is(%d)\n", rendererCount );
+
+ DALI_TEST_EQUALS( pushButton.GetRendererCount(), 1 , TEST_LOCATION );
+
+ tet_printf("Remove button from stage\n" );
+
+ application.GetScene().Remove( pushButton );
+
+ rendererCount = pushButton.GetRendererCount();
+ tet_printf("After removing pushbutton from stage the renderer count is(%d)\n ", rendererCount );
+
+ DALI_TEST_EQUALS( pushButton.GetRendererCount(), 0, TEST_LOCATION );
+
+ tet_printf("After removing pushbutton from stage the renderer count is(%d)\n ", rendererCount );
+
+ Property::Map propertyMap2;
+ propertyMap2.Insert(Visual::Property::TYPE, Visual::COLOR);
+ propertyMap2.Insert(ColorVisual::Property::MIX_COLOR, Color::RED);
+ pushButton.SetProperty( Toolkit::Button::Property::UNSELECTED_VISUAL, propertyMap2 );
+
+ tet_printf("Added UNSELECTED_VISUAL and add button back to Stage\n");
+
+ application.GetScene().Add( pushButton );
+
+ tet_printf("With UNSELECTED_BACKGROUND_VISUAL and UNSELECTED_VISUAL the renderer count is(%d)\n", pushButton.GetRendererCount() );
+
+ DALI_TEST_EQUALS( pushButton.GetRendererCount(), 2, TEST_LOCATION );
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetSelectedVisualN(void)
+{
+ tet_infoline(" Test adding a broken visual for the UNSELECTED_VISUAL property");
+
+ ToolkitTestApplication application;
+
+ PushButton pushButton = PushButton::New();
+
+ pushButton.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
+ pushButton.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
+ pushButton.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
+
+ application.GetScene().Add( pushButton );
+ application.SendNotification();
+ application.Render(0);
+
+ unsigned int preRendererCount = pushButton.GetRendererCount();
+ tet_printf("RendererCount prior to adding visual(%d)\n",preRendererCount);
+ DALI_TEST_EQUALS( preRendererCount, 0, TEST_LOCATION );
+
+ application.GetScene().Remove( pushButton );
+ application.SendNotification();
+ application.Render(0);
+
+ Property::Map colorMap;
+ const int BROKEN_VISUAL_TYPE = 999999999;
+
+ colorMap.Insert(Visual::Property::TYPE, BROKEN_VISUAL_TYPE);
+ colorMap.Insert(BorderVisual::Property::COLOR, Color::BLUE);
+ colorMap.Insert(BorderVisual::Property::SIZE, 5.f);
+ pushButton.SetProperty( Toolkit::Button::Property::UNSELECTED_VISUAL, colorMap );
+
+ application.GetScene().Add( pushButton );
+ application.SendNotification();
+ application.Render(0);
+
+ unsigned int postRendererCount = pushButton.GetRendererCount();
+ tet_printf("RendererCount post broken visual (%d)\n", postRendererCount);
+ DALI_TEST_EQUALS( postRendererCount, 0, TEST_LOCATION );
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonToggleSignalP(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline(" UtcDaliButtonToggleSignalP Ensure Signals emitted");
+
+ PushButton button = PushButton::New();
+ button.SetProperty( Button::Property::TOGGLABLE, true);
+
+ SetupButtonForTestTouchEvents( application, button, true );
+
+ application.GetScene().Add( button );
+
+ application.SendNotification();
+ application.Render();
+
+ // connect to its signal
+ button.ClickedSignal().Connect( &PushButtonClicked );
+ gPushButtonClicked = false;
+
+ tet_infoline(" Touch down and up within button");
+ Dali::Integration::TouchEvent event;
+ event = Dali::Integration::TouchEvent();
+ event.AddPoint( GetPointDownInside() );
+ application.ProcessEvent( event );
+
+ event = Dali::Integration::TouchEvent();
+ event.AddPoint( GetPointUpInside() );
+ application.ProcessEvent( event );
+
+ DALI_TEST_EQUALS( gPushButtonClicked, true, TEST_LOCATION );
+
+ END_TEST;
+}
+
+// Deprecated API Tests
+
+int UtcDaliPushButtonSetGetAutoRepeating(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline(" UtcDaliPushButtonSetGetAutoRepeating");
+
+ PushButton pushButton = PushButton::New();
+
+ pushButton.SetProperty( Button::Property::AUTO_REPEATING, true );
+
+ DALI_TEST_EQUALS( pushButton.GetProperty<bool>( Button::Property::AUTO_REPEATING ), true, TEST_LOCATION );
+
+ pushButton.SetProperty( Button::Property::AUTO_REPEATING, false );
+
+ DALI_TEST_EQUALS( pushButton.GetProperty<bool>( Button::Property::AUTO_REPEATING ), false, TEST_LOCATION );
+
+ pushButton.SetProperty( Button::Property::AUTO_REPEATING, true );
+
+ DALI_TEST_EQUALS( pushButton.GetProperty<bool>( Button::Property::AUTO_REPEATING ), true, TEST_LOCATION );
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetGetTogglableButton(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline(" UtcDaliPushButtonSetGetTogglableButton");
+
+ PushButton pushButton = PushButton::New();
+
+ pushButton.SetProperty( Button::Property::TOGGLABLE, true );
+
+ DALI_TEST_EQUALS( pushButton.GetProperty<bool>( Button::Property::TOGGLABLE ), true, TEST_LOCATION );
+
+ pushButton.SetProperty( Button::Property::TOGGLABLE, false );
+
+ DALI_TEST_EQUALS( pushButton.GetProperty<bool>( Button::Property::TOGGLABLE ), false, TEST_LOCATION );
+
+ pushButton.SetProperty( Button::Property::TOGGLABLE, true );
+
+ DALI_TEST_EQUALS( pushButton.GetProperty<bool>( Button::Property::TOGGLABLE ), true, TEST_LOCATION );
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetGetAutoRepeatingAndTogglableButton(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline(" UtcDaliPushButtonSetGetAutoRepeatingAndTogglableButton");
+
+ PushButton pushButton = PushButton::New();
+
+ pushButton.SetProperty( Button::Property::AUTO_REPEATING, true );
+ pushButton.SetProperty( Button::Property::TOGGLABLE, true);
+
+ DALI_TEST_EQUALS( pushButton.GetProperty<bool>( Button::Property::TOGGLABLE ), true, TEST_LOCATION );
+ DALI_TEST_EQUALS( pushButton.GetProperty<bool>( Button::Property::AUTO_REPEATING ), false, TEST_LOCATION );
+
+ pushButton.SetProperty( Button::Property::TOGGLABLE, true);
+ pushButton.SetProperty( Button::Property::AUTO_REPEATING, true );
+
+ DALI_TEST_EQUALS( pushButton.GetProperty<bool>( Button::Property::AUTO_REPEATING ), true, TEST_LOCATION );
+ DALI_TEST_EQUALS( pushButton.GetProperty<bool>( Button::Property::TOGGLABLE ), false, TEST_LOCATION );
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetGetSelected01(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline(" UtcDaliPushButtonSetGetSelected01");
+
+ PushButton pushButton = PushButton::New();
+
+ pushButton.SetProperty( Button::Property::TOGGLABLE, true);
+ pushButton.StateChangedSignal().Connect( &PushButtonSelected );
+
+ gPushButtonSelectedState = false;
+ pushButton.SetProperty( Button::Property::SELECTED, true );
+
+ DALI_TEST_EQUALS( pushButton.GetProperty<bool>( Button::Property::SELECTED), true, TEST_LOCATION );
+ DALI_TEST_CHECK( gPushButtonSelectedState );
+
+ pushButton.SetProperty( Button::Property::SELECTED, false );
+
+ DALI_TEST_EQUALS( pushButton.GetProperty<bool>( Button::Property::SELECTED), false, TEST_LOCATION );
+ DALI_TEST_CHECK( !gPushButtonSelectedState );
+
+ pushButton.SetProperty( Button::Property::SELECTED, true );
+
+ DALI_TEST_EQUALS( pushButton.GetProperty<bool>( Button::Property::SELECTED), true, TEST_LOCATION );
+ DALI_TEST_CHECK( gPushButtonSelectedState );
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetGetSelected02(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline(" UtcDaliPushButtonSetGetSelected02");
+
+ PushButton pushButton = PushButton::New();
+
+ tet_infoline(" Set Toggle feature off");
+ pushButton.SetProperty( Button::Property::TOGGLABLE, false);
+ pushButton.StateChangedSignal().Connect( &PushButtonSelected );
+
+ gPushButtonSelectedState = false;
+ tet_infoline(" Try to set to selected, expecting failure as not a toggle button");
+ pushButton.SetProperty( Button::Property::SELECTED, true );
+
+ DALI_TEST_EQUALS( pushButton.GetProperty<bool>( Button::Property::SELECTED), false, TEST_LOCATION );
+ DALI_TEST_CHECK( !gPushButtonSelectedState );
+
+ pushButton.SetProperty( Button::Property::SELECTED, false );
+
+ DALI_TEST_EQUALS( pushButton.GetProperty<bool>( Button::Property::SELECTED), false, TEST_LOCATION );
+ DALI_TEST_CHECK( !gPushButtonSelectedState );
+
+ pushButton.SetProperty( Button::Property::SELECTED, true );
+
+ DALI_TEST_EQUALS( pushButton.GetProperty<bool>( Button::Property::SELECTED ), false, TEST_LOCATION );
+ DALI_TEST_CHECK( !gPushButtonSelectedState );
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetGetAutorepeatingDelayValues01(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline(" UtcDaliPushButtonSetGetAutorepeatingDelayValues01");
+
+ PushButton pushButton = PushButton::New();
+
+ pushButton.SetProperty( Button::Property::AUTO_REPEATING, true );
+
+ pushButton.SetProperty( Button::Property::INITIAL_AUTO_REPEATING_DELAY, 1.f);
+ DALI_TEST_EQUALS( pushButton.GetProperty<float>( Button::Property::INITIAL_AUTO_REPEATING_DELAY ), 1.f, TEST_LOCATION );
+
+ pushButton.SetProperty( Button::Property::NEXT_AUTO_REPEATING_DELAY, 1.f);
+
+ DALI_TEST_EQUALS( pushButton.GetProperty<float>( Button::Property::NEXT_AUTO_REPEATING_DELAY ), 1.f, TEST_LOCATION );
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetGetAutorepeatingDelayValues02(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline(" UtcDaliPushButtonSetGetAutorepeatingDelayValues02");
+
+ PushButton pushButton = PushButton::New();
+
+ bool assert1( false );
+ bool assert2( false );
+
+ pushButton.SetProperty( Button::Property::AUTO_REPEATING, true );
+
+ try
+ {
+ pushButton.SetProperty( Button::Property::INITIAL_AUTO_REPEATING_DELAY, -1.f );
+ }
+ catch( Dali::DaliException& e )
+ {
+ DALI_TEST_PRINT_ASSERT( e );
+ DALI_TEST_EQUALS(e.condition, "initialAutoRepeatingDelay > 0.f", TEST_LOCATION);
+ assert1 = true;
+ }
+
+ try
+ {
+ pushButton.SetProperty( Button::Property::NEXT_AUTO_REPEATING_DELAY, -1.f );
+ }
+ catch( Dali::DaliException& e )
+ {
+ DALI_TEST_PRINT_ASSERT( e );
+ DALI_TEST_EQUALS(e.condition, "nextAutoRepeatingDelay > 0.f", TEST_LOCATION);
+ assert2 = true;
+ }
+
+ DALI_TEST_CHECK( assert1 && assert2 );
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetLabelText(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline(" UtcDaliPushButtonSetLabelText");
+
+ const std::string STR( "Hola!" );
+
+ PushButton pushButton = PushButton::New();
+
+ pushButton.SetProperty( Toolkit::Button::Property::LABEL,
+ Property::Map().Add( Toolkit::Visual::Property::TYPE, Toolkit::Visual::TEXT )
+ .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f )
+ );
+
+ application.SendNotification();
+ application.Render();
+
+ pushButton.SetProperty( Button::Property::LABEL, STR );
+
+ DALI_TEST_EQUALS(GetButtonText( pushButton ), STR, TEST_LOCATION);