X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-PushButton.cpp;h=5913861b7723b1ae4ebb23652a71efee18e72e9e;hp=a191f43147cb52070282fe1bea7c3f278dda960d;hb=8a647e87a01c5c78451653c1264a9eea81ac9b20;hpb=7011817795c4ae23533c8e920929c02718d04d79 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-PushButton.cpp b/automated-tests/src/dali-toolkit/utc-Dali-PushButton.cpp index a191f43..5913861 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-PushButton.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-PushButton.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,6 +26,10 @@ #include #include +#include + +#include + using namespace Dali; using namespace Toolkit; @@ -41,11 +45,16 @@ void utc_dali_toolkit_pushbutton_cleanup(void) namespace { +static const char* TEST_IMAGE_ONE = TEST_RESOURCE_DIR "/gallery-small-1.jpg"; + +static const Vector2 INSIDE_TOUCH_POINT_POSITON = Vector2( 240, 400 ); +static const Vector3 BUTTON_POSITON_TO_GET_INSIDE_TOUCH_EVENTS = Vector3( 200, 360, 0 ); +static const Size BUTTON_SIZE_TO_GET_INSIDE_TOUCH_EVENTS = Size( 100, 100 ); static bool gPushButtonSelectedState = false; bool PushButtonSelected( Button button ) { - gPushButtonSelectedState = button.IsSelected(); + gPushButtonSelectedState = button.GetProperty(button.GetPropertyIndex("selected") ); return true; } @@ -65,11 +74,19 @@ static bool PushButtonReleased( Button button ) return true; } +static bool gPushButtonClicked = false; + +static bool PushButtonClicked( Button button ) +{ + gPushButtonClicked = true; + return gPushButtonClicked; +} + Dali::Integration::Point GetPointDownInside() { Dali::Integration::Point point; point.SetState( PointState::DOWN ); - point.SetScreenPosition( Vector2( 240, 400 ) ); + point.SetScreenPosition( INSIDE_TOUCH_POINT_POSITON ); return point; } @@ -77,7 +94,7 @@ Dali::Integration::Point GetPointUpInside() { Dali::Integration::Point point; point.SetState( PointState::UP ); - point.SetScreenPosition( Vector2( 240, 400 ) ); + point.SetScreenPosition( INSIDE_TOUCH_POINT_POSITON ); return point; } @@ -85,7 +102,7 @@ Dali::Integration::Point GetPointLeave() { Dali::Integration::Point point; point.SetState( PointState::LEAVE ); - point.SetScreenPosition( Vector2( 240, 400 ) ); + point.SetScreenPosition( INSIDE_TOUCH_POINT_POSITON ); return point; } @@ -93,7 +110,7 @@ Dali::Integration::Point GetPointEnter() { Dali::Integration::Point point; point.SetState( PointState::MOTION ); - point.SetScreenPosition( Vector2( 240, 400 ) ); + point.SetScreenPosition( INSIDE_TOUCH_POINT_POSITON ); return point; } @@ -113,11 +130,44 @@ Dali::Integration::Point GetPointUpOutside() return point; } +// Set up the position of the button for the default test events +void SetupButtonForTestTouchEvents( ToolkitTestApplication& application, Button& button, bool useDefaultImages ) +{ + button.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + button.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + button.SetProperty( Actor::Property::POSITION, BUTTON_POSITON_TO_GET_INSIDE_TOUCH_EVENTS ); + if ( useDefaultImages ) + { + const Vector2 TEST_IMAGE_SIZE = Vector2( BUTTON_SIZE_TO_GET_INSIDE_TOUCH_EVENTS ); + TestPlatformAbstraction& platform = application.GetPlatform(); + platform.SetClosestImageSize( TEST_IMAGE_SIZE ); + button.SetProperty( Toolkit::Button::Property::UNSELECTED_BACKGROUND_VISUAL, TEST_IMAGE_ONE ); + button.SetProperty( Toolkit::Button::Property::SELECTED_BACKGROUND_VISUAL, TEST_IMAGE_ONE ); + } +} + +static std::string GetButtonText( Button button ) +{ + Property::Value value = button.GetProperty( Toolkit::Button::Property::LABEL ); + + Property::Map *labelProperty = value.GetMap(); + + std::string textLabel; + + if ( labelProperty ) + { + Property::Value* value = labelProperty->Find( Toolkit::TextVisual::Property::TEXT ); + value->Get( textLabel ); + } + + return textLabel; +} + } //namespace int UtcDaliPushButtonConstructorP(void) { - TestApplication application; + ToolkitTestApplication application; PushButton button; @@ -127,7 +177,7 @@ int UtcDaliPushButtonConstructorP(void) int UtcDaliPushButtonCopyConstructorP(void) { - TestApplication application; + ToolkitTestApplication application; // Initialize an object, ref count == 1 PushButton button = PushButton::New(); @@ -137,9 +187,28 @@ int UtcDaliPushButtonCopyConstructorP(void) END_TEST; } +int UtcDaliPushButtonMoveConstructor(void) +{ + ToolkitTestApplication application; + + PushButton button = PushButton::New(); + DALI_TEST_EQUALS( 1, button.GetBaseObject().ReferenceCount(), TEST_LOCATION ); + DALI_TEST_EQUALS( button.GetProperty( Button::Property::TOGGLABLE ), false , TEST_LOCATION ); + button.SetProperty( Button::Property::TOGGLABLE, true ); + DALI_TEST_EQUALS( button.GetProperty( Button::Property::TOGGLABLE ), true , TEST_LOCATION ); + + PushButton moved = std::move( button ); + DALI_TEST_CHECK( moved ); + DALI_TEST_EQUALS( 1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION ); + DALI_TEST_EQUALS( moved.GetProperty( Button::Property::TOGGLABLE ), true , TEST_LOCATION ); + DALI_TEST_CHECK( !button ); + + END_TEST; +} + int UtcDaliPushButtonAssignmentOperatorP(void) { - TestApplication application; + ToolkitTestApplication application; PushButton button = PushButton::New(); @@ -150,9 +219,29 @@ int UtcDaliPushButtonAssignmentOperatorP(void) END_TEST; } +int UtcDaliPushButtonMoveAssignment(void) +{ + ToolkitTestApplication application; + + PushButton button = PushButton::New(); + DALI_TEST_EQUALS( 1, button.GetBaseObject().ReferenceCount(), TEST_LOCATION ); + DALI_TEST_EQUALS( button.GetProperty( Button::Property::TOGGLABLE ), false , TEST_LOCATION ); + button.SetProperty( Button::Property::TOGGLABLE, true ); + DALI_TEST_EQUALS( button.GetProperty( Button::Property::TOGGLABLE ), true , TEST_LOCATION ); + + PushButton moved; + moved = std::move( button ); + DALI_TEST_CHECK( moved ); + DALI_TEST_EQUALS( 1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION ); + DALI_TEST_EQUALS( moved.GetProperty( Button::Property::TOGGLABLE ), true , TEST_LOCATION ); + DALI_TEST_CHECK( !button ); + + END_TEST; +} + int UtcDaliPushButtonNewP(void) { - TestApplication application; + ToolkitTestApplication application; PushButton button = PushButton::New(); @@ -162,7 +251,7 @@ int UtcDaliPushButtonNewP(void) int UtcDaliPushButtonDownCastP(void) { - TestApplication application; + ToolkitTestApplication application; PushButton button = PushButton::New(); @@ -178,7 +267,7 @@ int UtcDaliPushButtonDownCastP(void) int UtcDaliPushButtonDownCastN(void) { - TestApplication application; + ToolkitTestApplication application; BaseHandle unInitializedObject; @@ -190,143 +279,162 @@ int UtcDaliPushButtonDownCastN(void) END_TEST; } -int UtcDaliPushButtonSetGetAutoRepeating(void) +int UtcDaliPushButtonAutoRepeatingProperty(void) { ToolkitTestApplication application; tet_infoline(" UtcDaliPushButtonSetGetAutoRepeating"); PushButton pushButton = PushButton::New(); - pushButton.SetAutoRepeating( true ); + pushButton.SetProperty( pushButton.GetPropertyIndex("autoRepeating"), true ); + DALI_TEST_EQUALS( pushButton.GetProperty(pushButton.GetPropertyIndex("autoRepeating")), true, TEST_LOCATION ); + + pushButton.SetProperty( pushButton.GetPropertyIndex("autoRepeating"), false ); + DALI_TEST_EQUALS( pushButton.GetProperty(pushButton.GetPropertyIndex("autoRepeating")), false, TEST_LOCATION ); + + pushButton.SetProperty( pushButton.GetPropertyIndex("autoRepeating"), true ); + DALI_TEST_EQUALS( pushButton.GetProperty(pushButton.GetPropertyIndex("autoRepeating")), true, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliPushButtonSetAutoRepeating(void) +{ + ToolkitTestApplication application; + tet_infoline("UtcDaliPushButtonSetAutoRepeating\n"); + tet_infoline("Ensure setting AutoRepeating on a SELECTED Toggle button switches off Toggle\n"); + PushButton pushButton = PushButton::New(); - DALI_TEST_CHECK( pushButton.IsAutoRepeating() ); + const bool INITIAL_TOGGLE_VALUE = true; + const bool INITIAL_SELECTED_VALUE = true; - pushButton.SetAutoRepeating( false ); + pushButton.SetProperty( Button::Property::TOGGLABLE, INITIAL_TOGGLE_VALUE); + pushButton.SetProperty( Button::Property::SELECTED, INITIAL_SELECTED_VALUE ); - DALI_TEST_CHECK( !pushButton.IsAutoRepeating() ); + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::TOGGLABLE ), INITIAL_TOGGLE_VALUE , TEST_LOCATION ); + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::SELECTED ), INITIAL_SELECTED_VALUE , TEST_LOCATION ); - pushButton.SetAutoRepeating( true ); + pushButton.SetProperty( Button::Property::AUTO_REPEATING, true ); + + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::TOGGLABLE ), !INITIAL_TOGGLE_VALUE , TEST_LOCATION ); - DALI_TEST_CHECK( pushButton.IsAutoRepeating() ); END_TEST; } -int UtcDaliPushButtonSetGetTogglableButton(void) +int UtcDaliPushButtonTogglableProperty(void) { ToolkitTestApplication application; tet_infoline(" UtcDaliPushButtonSetGetTogglableButton"); PushButton pushButton = PushButton::New(); - pushButton.SetTogglableButton( true ); - - DALI_TEST_CHECK( pushButton.IsTogglableButton() ); + pushButton.SetProperty( pushButton.GetPropertyIndex("togglable"), true ); + DALI_TEST_EQUALS( pushButton.GetProperty(pushButton.GetPropertyIndex("togglable")), true, TEST_LOCATION ); - pushButton.SetTogglableButton( false ); + pushButton.SetProperty( pushButton.GetPropertyIndex("togglable"), false ); + DALI_TEST_EQUALS( pushButton.GetProperty(pushButton.GetPropertyIndex("togglable")), false, TEST_LOCATION ); - DALI_TEST_CHECK( !pushButton.IsTogglableButton() ); + pushButton.SetProperty( pushButton.GetPropertyIndex("togglable"), true ); + DALI_TEST_EQUALS( pushButton.GetProperty(pushButton.GetPropertyIndex("togglable")), true, TEST_LOCATION ); - pushButton.SetTogglableButton( true ); - - DALI_TEST_CHECK( pushButton.IsTogglableButton() ); END_TEST; } -int UtcDaliPushButtonSetGetAutoRepeatingAndTogglableButton(void) +int UtcDaliPushButtonAutoRepeatingPropertyAndTogglableButton(void) { ToolkitTestApplication application; tet_infoline(" UtcDaliPushButtonSetGetAutoRepeatingAndTogglableButton"); PushButton pushButton = PushButton::New(); - pushButton.SetAutoRepeating( true ); - pushButton.SetTogglableButton( true ); + pushButton.SetProperty( Button::Property::AUTO_REPEATING, true ); + pushButton.SetProperty( pushButton.GetPropertyIndex("togglable"), true ); - DALI_TEST_CHECK( pushButton.IsTogglableButton() ); - DALI_TEST_CHECK( !pushButton.IsAutoRepeating() ); + DALI_TEST_EQUALS( pushButton.GetProperty(pushButton.GetPropertyIndex("togglable")), true, TEST_LOCATION ); + DALI_TEST_EQUALS( pushButton.GetProperty(pushButton.GetPropertyIndex("autoRepeating")), false, TEST_LOCATION ); - pushButton.SetTogglableButton( true ); - pushButton.SetAutoRepeating( true ); + pushButton.SetProperty( pushButton.GetPropertyIndex("togglable"), true ); + pushButton.SetProperty( Button::Property::AUTO_REPEATING, true ); - DALI_TEST_CHECK( pushButton.IsAutoRepeating() ); - DALI_TEST_CHECK( !pushButton.IsTogglableButton() ); + DALI_TEST_EQUALS( pushButton.GetProperty(pushButton.GetPropertyIndex("autoRepeating")), true, TEST_LOCATION ); + DALI_TEST_EQUALS( pushButton.GetProperty(pushButton.GetPropertyIndex("togglable")), false, TEST_LOCATION ); END_TEST; } -int UtcDaliPushButtonSetGetSelected01(void) +int UtcDaliPushButtonSelectedProperty01(void) { ToolkitTestApplication application; tet_infoline(" UtcDaliPushButtonSetGetSelected01"); PushButton pushButton = PushButton::New(); - pushButton.SetTogglableButton( true ); + pushButton.SetProperty( pushButton.GetPropertyIndex("togglable"), true ); + pushButton.StateChangedSignal().Connect( &PushButtonSelected ); gPushButtonSelectedState = false; - pushButton.SetSelected( true ); + pushButton.SetProperty( Button::Property::SELECTED, true ); - DALI_TEST_CHECK( pushButton.IsSelected() ); + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::SELECTED ), true , TEST_LOCATION ); DALI_TEST_CHECK( gPushButtonSelectedState ); - pushButton.SetSelected( false ); + pushButton.SetProperty( Button::Property::SELECTED, false ); - DALI_TEST_CHECK( !pushButton.IsSelected() ); + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::SELECTED ), false , TEST_LOCATION ); DALI_TEST_CHECK( !gPushButtonSelectedState ); - pushButton.SetSelected( true ); + pushButton.SetProperty( Button::Property::SELECTED, true ); - DALI_TEST_CHECK( pushButton.IsSelected() ); + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::SELECTED ), true , TEST_LOCATION ); DALI_TEST_CHECK( gPushButtonSelectedState ); END_TEST; } -int UtcDaliPushButtonSetGetSelected02(void) +int UtcDaliPushButtonSelectedProperty02(void) { ToolkitTestApplication application; tet_infoline(" UtcDaliPushButtonSetGetSelected02"); PushButton pushButton = PushButton::New(); - pushButton.SetTogglableButton( false ); + pushButton.SetProperty( pushButton.GetPropertyIndex("togglable"), false ); pushButton.StateChangedSignal().Connect( &PushButtonSelected ); gPushButtonSelectedState = false; - pushButton.SetSelected( true ); + pushButton.SetProperty( Button::Property::SELECTED, true ); - DALI_TEST_CHECK( !pushButton.IsSelected() ); + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::SELECTED ), false , TEST_LOCATION ); DALI_TEST_CHECK( !gPushButtonSelectedState ); - pushButton.SetSelected( false ); + pushButton.SetProperty( Button::Property::SELECTED, false ); - DALI_TEST_CHECK( !pushButton.IsSelected() ); + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::SELECTED ), false , TEST_LOCATION ); DALI_TEST_CHECK( !gPushButtonSelectedState ); - pushButton.SetSelected( true ); + pushButton.SetProperty( Button::Property::SELECTED, true ); - DALI_TEST_CHECK( !pushButton.IsSelected() ); + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::SELECTED ), false , TEST_LOCATION ); DALI_TEST_CHECK( !gPushButtonSelectedState ); END_TEST; } -int UtcDaliPushButtonSetGetAutorepeatingDelayValues01(void) +int UtcDaliPushButtonAutorepeatingDelayPropertyValues01(void) { ToolkitTestApplication application; tet_infoline(" UtcDaliPushButtonSetGetAutorepeatingDelayValues01"); PushButton pushButton = PushButton::New(); - pushButton.SetAutoRepeating( true ); + pushButton.SetProperty( Button::Property::AUTO_REPEATING, true ); + + pushButton.SetProperty( Button::Property::INITIAL_AUTO_REPEATING_DELAY, 1.f ); - pushButton.SetInitialAutoRepeatingDelay( 1.f ); - DALI_TEST_EQUALS( pushButton.GetInitialAutoRepeatingDelay(), 1.f, TEST_LOCATION ); + DALI_TEST_EQUALS( pushButton.GetProperty(pushButton.GetPropertyIndex("initialAutoRepeatingDelay") ), 1.f, TEST_LOCATION ); - pushButton.SetNextAutoRepeatingDelay( 1.f ); - DALI_TEST_EQUALS( pushButton.GetNextAutoRepeatingDelay(), 1.f, TEST_LOCATION ); END_TEST; } -int UtcDaliPushButtonSetGetAutorepeatingDelayValues02(void) +int UtcDaliPushButtonAutorepeatingDelayPropertyValues02(void) { ToolkitTestApplication application; tet_infoline(" UtcDaliPushButtonSetGetAutorepeatingDelayValues02"); @@ -336,11 +444,11 @@ int UtcDaliPushButtonSetGetAutorepeatingDelayValues02(void) bool assert1( false ); bool assert2( false ); - pushButton.SetAutoRepeating( true ); + pushButton.SetProperty( Button::Property::AUTO_REPEATING, true ); try { - pushButton.SetInitialAutoRepeatingDelay( -1.f ); + pushButton.SetProperty( Button::Property::INITIAL_AUTO_REPEATING_DELAY, -1.f ); } catch( Dali::DaliException& e ) { @@ -351,7 +459,7 @@ int UtcDaliPushButtonSetGetAutorepeatingDelayValues02(void) try { - pushButton.SetNextAutoRepeatingDelay( -1.f ); + pushButton.SetProperty( Button::Property::NEXT_AUTO_REPEATING_DELAY, -1.f ); } catch( Dali::DaliException& e ) { @@ -364,7 +472,7 @@ int UtcDaliPushButtonSetGetAutorepeatingDelayValues02(void) END_TEST; } -int UtcDaliPushButtonSetLabelText(void) +int UtcDaliPushButtonLabelProperty(void) { ToolkitTestApplication application; tet_infoline(" UtcDaliPushButtonSetLabelText"); @@ -376,9 +484,15 @@ int UtcDaliPushButtonSetLabelText(void) application.SendNotification(); application.Render(); - pushButton.SetLabelText( STR ); + pushButton.SetProperty( Toolkit::Button::Property::LABEL, + Property::Map().Add( Toolkit::Visual::Property::TYPE, Toolkit::Visual::TEXT ) + .Add( Toolkit::TextVisual::Property::POINT_SIZE, 15.0f ) + ); + - DALI_TEST_EQUALS( pushButton.GetLabelText(), STR, TEST_LOCATION ); + pushButton.SetProperty( Toolkit::Button::Property::LABEL, STR ); + + DALI_TEST_EQUALS( GetButtonText( pushButton ), STR, TEST_LOCATION ); END_TEST; } @@ -389,12 +503,12 @@ int UtcDaliPushButtonPressed(void) tet_infoline(" UtcDaliPushButtonPressed"); PushButton pushButton = PushButton::New(); - pushButton.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - pushButton.SetParentOrigin( ParentOrigin::TOP_LEFT ); - pushButton.SetPosition( 240, 400 ); - pushButton.SetSize( 100, 100 ); + pushButton.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + pushButton.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + pushButton.SetProperty( Actor::Property::POSITION, BUTTON_POSITON_TO_GET_INSIDE_TOUCH_EVENTS ); + pushButton.SetProperty( Actor::Property::SIZE, BUTTON_SIZE_TO_GET_INSIDE_TOUCH_EVENTS ); - Stage::GetCurrent().Add( pushButton ); + application.GetScene().Add( pushButton ); application.SendNotification(); application.Render(); @@ -422,12 +536,12 @@ int UtcDaliPushButtonReleased(void) tet_infoline(" UtcDaliPushButtonReleased"); PushButton pushButton = PushButton::New(); - pushButton.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - pushButton.SetParentOrigin( ParentOrigin::TOP_LEFT ); - pushButton.SetPosition( 240, 400 ); - pushButton.SetSize( 100, 100 ); + pushButton.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + pushButton.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + pushButton.SetProperty( Actor::Property::POSITION, BUTTON_POSITON_TO_GET_INSIDE_TOUCH_EVENTS ); + pushButton.SetProperty( Actor::Property::SIZE, BUTTON_SIZE_TO_GET_INSIDE_TOUCH_EVENTS ); - Stage::GetCurrent().Add( pushButton ); + application.GetScene().Add( pushButton ); application.SendNotification(); application.Render(); @@ -505,12 +619,12 @@ int UtcDaliPushButtonSelected(void) tet_infoline(" UtcDaliPushButtonSelected"); PushButton pushButton = PushButton::New(); - pushButton.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - pushButton.SetParentOrigin( ParentOrigin::TOP_LEFT ); - pushButton.SetPosition( 240, 400 ); - pushButton.SetSize( 100, 100 ); + pushButton.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + pushButton.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + pushButton.SetProperty( Actor::Property::POSITION, BUTTON_POSITON_TO_GET_INSIDE_TOUCH_EVENTS ); + pushButton.SetProperty( Actor::Property::SIZE, BUTTON_SIZE_TO_GET_INSIDE_TOUCH_EVENTS ); - Stage::GetCurrent().Add( pushButton ); + application.GetScene().Add( pushButton ); application.SendNotification(); application.Render(); @@ -534,7 +648,7 @@ int UtcDaliPushButtonSelected(void) DALI_TEST_CHECK( !gPushButtonSelectedState ); // Set togglable property. - pushButton.SetTogglableButton( true ); + pushButton.SetProperty( Button::Property::TOGGLABLE, true ); // Test2. Touch point down and up inside the button twice. gPushButtonSelectedState = false; @@ -572,7 +686,7 @@ int UtcDaliPushButtonSelected(void) DALI_TEST_CHECK( !gPushButtonSelectedState ); // Test4. Touch point down inside and up outside the button. - + // State changes on Button down gPushButtonSelectedState = false; event = Dali::Integration::TouchEvent(); event.AddPoint( GetPointDownInside() ); @@ -586,9 +700,13 @@ int UtcDaliPushButtonSelected(void) event.AddPoint( GetPointUpOutside() ); application.ProcessEvent( event ); - DALI_TEST_CHECK( !gPushButtonSelectedState ); + DALI_TEST_CHECK( gPushButtonSelectedState ); // Test5. Touch point down outside and up inside the button. + // Start in unselected state + pushButton.SetProperty( Button::Property::SELECTED, false ); + + DALI_TEST_EQUALS( pushButton.GetProperty(pushButton.GetPropertyIndex("selected") ),false , TEST_LOCATION ); gPushButtonSelectedState = false; event = Dali::Integration::TouchEvent(); @@ -607,21 +725,6 @@ int UtcDaliPushButtonSelected(void) END_TEST; } -int UtcDaliPushButtonPropertySetIconAlignment(void) -{ - ToolkitTestApplication application; - tet_infoline(" UtcDaliPushButtonPropertySetIconAlignment"); - - PushButton pushButton = PushButton::New(); - pushButton.SetProperty( Toolkit::PushButton::Property::ICON_ALIGNMENT, "TOP" ); - DALI_TEST_EQUALS( pushButton.GetProperty( Toolkit::PushButton::Property::ICON_ALIGNMENT ), "TOP", TEST_LOCATION ); - - pushButton.SetProperty( Toolkit::PushButton::Property::ICON_ALIGNMENT, "RIGHT" ); - DALI_TEST_EQUALS( pushButton.GetProperty( Toolkit::PushButton::Property::ICON_ALIGNMENT ), "RIGHT", TEST_LOCATION ); - - END_TEST; -} - int UtcDaliPushButtonPropertySetLabelPadding(void) { ToolkitTestApplication application; @@ -661,15 +764,19 @@ int UtcDaliPushButtonPaddingLayout(void) // The icon and label are each enabled and disabled to confirm the correct padding is used. PushButton pushButton = PushButton::New(); - pushButton.SetProperty( Toolkit::PushButton::Property::LABEL_PADDING, Vector4( 10.0f, 10.0f, 10.0f, 10.0f ) ); - pushButton.SetProperty( Toolkit::PushButton::Property::ICON_PADDING, Vector4( 20.0f, 20.0f, 20.0f, 20.0f ) ); + const Vector4 TEST_ICON_PADDING( 20.0f, 20.0f, 20.0f, 20.0f ); + const Vector4 TEST_LABEL_PADDING( 10.0f, 10.0f, 10.0f, 10.0f ); + + // Get actual size of test image + ImageDimensions testImageSize = Dali::GetClosestImageSize( TEST_IMAGE_ONE ); + const Vector2 TEST_IMAGE_SIZE( testImageSize.GetWidth(), testImageSize.GetHeight() ); - pushButton.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - pushButton.SetParentOrigin( ParentOrigin::TOP_LEFT ); - pushButton.SetPosition( 0.0f, 0.0f ); + pushButton.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + pushButton.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + pushButton.SetProperty( Actor::Property::POSITION, Vector2( 0.0f, 0.0f )); pushButton.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS ); - Stage::GetCurrent().Add( pushButton ); + application.GetScene().Add( pushButton ); application.SendNotification(); application.Render(); @@ -679,62 +786,94 @@ int UtcDaliPushButtonPaddingLayout(void) Vector2 size( Vector2::ZERO ); size.width = pushButton.GetRelayoutSize( Dimension::WIDTH ); size.height = pushButton.GetRelayoutSize( Dimension::HEIGHT ); + tet_printf( "Button Natural Size(%f,%f)\n", pushButton.GetNaturalSize().width, pushButton.GetNaturalSize().height ); DALI_TEST_EQUALS( size, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); - // Check label only padding. - pushButton.SetLabelText( "Label" ); + // Check label only padding + pushButton.SetProperty( Toolkit::Button::Property::LABEL, "Label" ); application.SendNotification(); application.Render(); - size.width = pushButton.GetRelayoutSize( Dimension::WIDTH ); - size.height = pushButton.GetRelayoutSize( Dimension::HEIGHT ); + Vector2 sizeWithLabelWithoutPadding( Vector2::ZERO ); + sizeWithLabelWithoutPadding.width = pushButton.GetRelayoutSize( Dimension::WIDTH ); + sizeWithLabelWithoutPadding.height = pushButton.GetRelayoutSize( Dimension::HEIGHT ); - // We should not test against the exact label size, we just make sure it is larger than our label padding so we know the padding has been applied. - DALI_TEST_GREATER( size.width, 20.0f, TEST_LOCATION ); - DALI_TEST_GREATER( size.height, 20.0f, TEST_LOCATION ); + tet_printf( "Button RelayoutSize label without padding (%f,%f)\n", sizeWithLabelWithoutPadding.width, sizeWithLabelWithoutPadding.height ); + + // Add label padding to label + pushButton.SetProperty( Toolkit::PushButton::Property::LABEL_PADDING, TEST_LABEL_PADDING ); + application.SendNotification(); + application.Render(); + + Vector2 sizeLabelAndPadding( Vector2::ZERO ); + sizeLabelAndPadding.width = pushButton.GetRelayoutSize( Dimension::WIDTH ); + sizeLabelAndPadding.height = pushButton.GetRelayoutSize( Dimension::HEIGHT ); + tet_printf( "Button RelayoutSize after label padding(%f,%f)\n", sizeLabelAndPadding.width, sizeLabelAndPadding.height ); + + // If control size has increased beyond size of just label then padding has been applied + DALI_TEST_GREATER( sizeLabelAndPadding.width, sizeWithLabelWithoutPadding.width+TEST_LABEL_PADDING.x, TEST_LOCATION ); + DALI_TEST_GREATER( sizeLabelAndPadding.height, sizeWithLabelWithoutPadding.height+TEST_LABEL_PADDING.w, TEST_LOCATION ); // Re-initialise the button so we can setup icon-only padding. pushButton.Unparent(); pushButton = PushButton::New(); - pushButton.SetProperty( Toolkit::PushButton::Property::LABEL_PADDING, Vector4( 10.0f, 10.0f, 10.0f, 10.0f ) ); - pushButton.SetProperty( Toolkit::PushButton::Property::ICON_PADDING, Vector4( 20.0f, 20.0f, 20.0f, 20.0f ) ); - - pushButton.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - pushButton.SetParentOrigin( ParentOrigin::TOP_LEFT ); - pushButton.SetPosition( 0.0f, 0.0f ); + pushButton.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + pushButton.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + pushButton.SetProperty( Actor::Property::POSITION, Vector2( 0.0f, 0.0f )); pushButton.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS ); - Stage::GetCurrent().Add( pushButton ); + application.GetScene().Add( pushButton ); + - const char* INVALID_IMAGE_FILE_NAME = "invalid-image.jpg"; - pushButton.SetProperty( Toolkit::PushButton::Property::ICON_ALIGNMENT, "RIGHT" ); - pushButton.SetProperty( Toolkit::PushButton::Property::UNSELECTED_ICON, INVALID_IMAGE_FILE_NAME ); - pushButton.SetProperty( Toolkit::PushButton::Property::SELECTED_ICON, INVALID_IMAGE_FILE_NAME ); + pushButton.SetProperty( Toolkit::DevelButton::Property::LABEL_RELATIVE_ALIGNMENT, "BEGIN" ); + pushButton.SetProperty( Toolkit::Button::Property::UNSELECTED_VISUAL, TEST_IMAGE_ONE ); + pushButton.SetProperty( Toolkit::Button::Property::SELECTED_VISUAL, TEST_IMAGE_ONE ); application.SendNotification(); application.Render(); + // Size of button with just icon size.width = pushButton.GetRelayoutSize( Dimension::WIDTH ); size.height = pushButton.GetRelayoutSize( Dimension::HEIGHT ); + tet_printf( "Button RelayoutSize with icon(%f,%f)\n", size.width, size.height ); + + pushButton.SetProperty( Toolkit::PushButton::Property::ICON_PADDING, TEST_ICON_PADDING ); + + application.SendNotification(); + application.Render(); + DALI_TEST_EQUALS( size, TEST_IMAGE_SIZE, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); - DALI_TEST_EQUALS( size, Vector2( 40.0f, 40.0f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + size.width = pushButton.GetRelayoutSize( Dimension::WIDTH ); + size.height = pushButton.GetRelayoutSize( Dimension::HEIGHT ); + tet_printf( "Button RelayoutSize after icon padding(%f,%f)\n", size.width, size.height ); + const Vector2 expectedIconAndPaddingSize( TEST_ICON_PADDING.x+TEST_ICON_PADDING.y+TEST_IMAGE_SIZE.width, TEST_ICON_PADDING.w + TEST_ICON_PADDING.z + TEST_IMAGE_SIZE.height ); + DALI_TEST_EQUALS( size, expectedIconAndPaddingSize, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); // Now test padding for both label and icon simultaneously. - pushButton.SetLabelText( "Label" ); + pushButton.SetProperty( Toolkit::Button::Property::LABEL, "Label" ); application.SendNotification(); application.Render(); size.width = pushButton.GetRelayoutSize( Dimension::WIDTH ); size.height = pushButton.GetRelayoutSize( Dimension::HEIGHT ); + tet_printf( "Button RelayoutSize after label added(%f,%f)\n", size.width, size.height ); - // We should not test against the exact label size, we just make sure it is larger than our label padding so we know the padding has been applied. - // Note we only test the width as we are horizontally aligned and the label my be less high than the icon. - // Full directional alignment tests are done in UtcDaliPushButtonAlignmentLayout. - DALI_TEST_GREATER( size.width, 60.0f, TEST_LOCATION ); + pushButton.SetProperty( Toolkit::PushButton::Property::LABEL_PADDING, TEST_LABEL_PADDING ); + + application.SendNotification(); + application.Render(); + + size.width = pushButton.GetRelayoutSize( Dimension::WIDTH ); + size.height = pushButton.GetRelayoutSize( Dimension::HEIGHT ); + tet_printf( "Button RelayoutSize after icon and label padding(%f,%f)\n", size.width, size.height ); + + DALI_TEST_EQUALS( size.width, sizeLabelAndPadding.width + expectedIconAndPaddingSize.width, TEST_LOCATION ); + // Test height of control is same as icon and padding, as Text is smaller than icon + DALI_TEST_EQUALS( size.height, expectedIconAndPaddingSize.height, TEST_LOCATION ); END_TEST; } @@ -769,35 +908,57 @@ int UtcDaliPushButtonAlignmentLayout(void) * | | v +------------+ - * +---------+ - */ - PushButton pushButton = PushButton::New(); - pushButton.SetProperty( Toolkit::PushButton::Property::LABEL_PADDING, Vector4( 30.0f, 30.0f, 30.0f, 30.0f ) ); - pushButton.SetProperty( Toolkit::PushButton::Property::ICON_PADDING, Vector4( 75.0f, 75.0f, 75.0f, 75.0f ) ); + const Vector4 TEST_ICON_PADDING( 70.0f, 70.0f, 70.0f, 70.0f ); + const Vector4 TEST_LABEL_PADDING( 30.0f, 30.0f, 30.0f, 30.0f ); - pushButton.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - pushButton.SetParentOrigin( ParentOrigin::TOP_LEFT ); - pushButton.SetPosition( 0.0f, 0.0f ); + // Get actual size of test image + ImageDimensions testImageSize = Dali::GetClosestImageSize( TEST_IMAGE_ONE ); + const Vector2 TEST_IMAGE_SIZE( testImageSize.GetWidth(), testImageSize.GetHeight() ); + + PushButton pushButton = PushButton::New(); + + pushButton.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + pushButton.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + pushButton.SetProperty( Actor::Property::POSITION, Vector2( 0.0f, 0.0f )); pushButton.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS ); - Stage::GetCurrent().Add( pushButton ); + application.GetScene().Add( pushButton ); + + // Add a label and get size of control + pushButton.SetProperty( Toolkit::Button::Property::LABEL, "Label" ); + application.SendNotification(); + application.Render(); - const char* INVALID_IMAGE_FILE_NAME = "invalid-image.jpg"; - pushButton.SetProperty( Toolkit::PushButton::Property::ICON_ALIGNMENT, "RIGHT" ); - pushButton.SetProperty( Toolkit::PushButton::Property::UNSELECTED_ICON, INVALID_IMAGE_FILE_NAME ); - pushButton.SetProperty( Toolkit::PushButton::Property::SELECTED_ICON, INVALID_IMAGE_FILE_NAME ); + // First get the size of control with just label + Vector2 justLabelSize( Vector2::ZERO ); + justLabelSize.width = pushButton.GetRelayoutSize( Dimension::WIDTH ); + justLabelSize.height = pushButton.GetRelayoutSize( Dimension::HEIGHT ); + tet_printf( "Button RelayoutSize with just label and no padding(%f,%f)\n", justLabelSize.width, justLabelSize.height ); + pushButton.SetProperty( Toolkit::PushButton::Property::LABEL_PADDING, TEST_LABEL_PADDING ); application.SendNotification(); application.Render(); - // First get the base size (without label). - Vector2 baseSize( Vector2::ZERO ); - baseSize.width = pushButton.GetRelayoutSize( Dimension::WIDTH ); - baseSize.height = pushButton.GetRelayoutSize( Dimension::HEIGHT ); + // Size of Label and Padding + Vector2 expectedLabelAndPaddingSize( Vector2::ZERO ); + expectedLabelAndPaddingSize.width = justLabelSize.width + TEST_LABEL_PADDING.x + TEST_LABEL_PADDING.y; + expectedLabelAndPaddingSize.height = justLabelSize.height + TEST_LABEL_PADDING.w + TEST_LABEL_PADDING.z; - DALI_TEST_EQUALS( baseSize, Vector2( 150.0f, 150.0f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + Vector2 labelAndPaddingSize( Vector2::ZERO ); + labelAndPaddingSize.width = pushButton.GetRelayoutSize( Dimension::WIDTH ); + labelAndPaddingSize.height = pushButton.GetRelayoutSize( Dimension::HEIGHT ); - // Add a label to cause size to be modified in the direction of alignment. - pushButton.SetLabelText( "Label" ); + DALI_TEST_EQUALS( labelAndPaddingSize, expectedLabelAndPaddingSize , Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + + const Vector2 testImageWithPaddingSize = Vector2 ( ( TEST_IMAGE_SIZE.width + TEST_ICON_PADDING.x + TEST_ICON_PADDING.y ), + ( TEST_IMAGE_SIZE.height + TEST_ICON_PADDING.w + TEST_ICON_PADDING.z ) ); + + // Add Icon and set its alignment + pushButton.SetProperty( Toolkit::DevelButton::Property::LABEL_RELATIVE_ALIGNMENT, "BEGIN" ); + pushButton.SetProperty( Toolkit::Button::Property::UNSELECTED_VISUAL, TEST_IMAGE_ONE ); + pushButton.SetProperty( Toolkit::Button::Property::SELECTED_VISUAL, TEST_IMAGE_ONE ); + pushButton.SetProperty( Toolkit::PushButton::Property::ICON_PADDING, TEST_ICON_PADDING ); application.SendNotification(); application.Render(); @@ -806,7 +967,6 @@ int UtcDaliPushButtonAlignmentLayout(void) size.width = pushButton.GetRelayoutSize( Dimension::WIDTH ); size.height = pushButton.GetRelayoutSize( Dimension::HEIGHT ); - /* * Test Icon right alignment. * Height grows to largest of Icon or Label (+ padding). @@ -820,18 +980,17 @@ int UtcDaliPushButtonAlignmentLayout(void) * |............+ | * +------------+---------+ */ - DALI_TEST_GREATER( size.width, 150.0f + 60.0f, TEST_LOCATION ); - DALI_TEST_EQUALS( size.height, 150.0f, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + DALI_TEST_EQUALS( size.width, ( testImageWithPaddingSize.width + labelAndPaddingSize.width ) , TEST_LOCATION ); + DALI_TEST_EQUALS( size.height, ( std::max( testImageWithPaddingSize.height, labelAndPaddingSize.height) ) , Math::MACHINE_EPSILON_1000, TEST_LOCATION ); // Now test left alignment matches right for size. - pushButton.SetProperty( Toolkit::PushButton::Property::ICON_ALIGNMENT, "LEFT" ); + pushButton.SetProperty( Toolkit::DevelButton::Property::LABEL_RELATIVE_ALIGNMENT, "END" ); application.SendNotification(); application.Render(); - Vector2 compareSize( Vector2::ZERO ); - compareSize.width = pushButton.GetRelayoutSize( Dimension::WIDTH ); - compareSize.height = pushButton.GetRelayoutSize( Dimension::HEIGHT ); + size.width = pushButton.GetRelayoutSize( Dimension::WIDTH ); + size.height = pushButton.GetRelayoutSize( Dimension::HEIGHT ); /* * Test Icon left alignment. @@ -846,20 +1005,11 @@ int UtcDaliPushButtonAlignmentLayout(void) * | +............| * +---------+------------+ */ - DALI_TEST_EQUALS( size, compareSize, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); - - // Test top alignment. - pushButton.SetProperty( Toolkit::PushButton::Property::ICON_ALIGNMENT, "TOP" ); - - application.SendNotification(); - application.Render(); - - compareSize.width = pushButton.GetRelayoutSize( Dimension::WIDTH ); - compareSize.height = pushButton.GetRelayoutSize( Dimension::HEIGHT ); + DALI_TEST_EQUALS( size.width, ( testImageWithPaddingSize.width + labelAndPaddingSize.width ) , TEST_LOCATION ); + DALI_TEST_EQUALS( size.height, ( std::max( testImageWithPaddingSize.height, labelAndPaddingSize.height) ) , Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + tet_infoline(" Test Icon TOP alignment - Width grows to largest of Icon or label (plus padding)"); /* - * Test Icon top alignment. - * Width grows to largest of Icon or Label (+ padding). * * +---------+ * | | @@ -873,13 +1023,10 @@ int UtcDaliPushButtonAlignmentLayout(void) * | | * +---------+ * - * Note: We subtract a small number as we want to do a >= test. */ - DALI_TEST_GREATER( size.width, 150.0f - Math::MACHINE_EPSILON_1000, TEST_LOCATION ); - DALI_TEST_GREATER( compareSize.height, 150.0f + 60.0f, TEST_LOCATION ); - // Test bottom alignment. - pushButton.SetProperty( Toolkit::PushButton::Property::ICON_ALIGNMENT, "BOTTOM" ); + tet_infoline("SetProperty on LABEL_RELATIVE_ALIGNMENT should relayout the Button"); + pushButton.SetProperty( Toolkit::DevelButton::Property::LABEL_RELATIVE_ALIGNMENT, "BOTTOM" ); application.SendNotification(); application.Render(); @@ -887,6 +1034,16 @@ int UtcDaliPushButtonAlignmentLayout(void) size.width = pushButton.GetRelayoutSize( Dimension::WIDTH ); size.height = pushButton.GetRelayoutSize( Dimension::HEIGHT ); + tet_printf("Natural width (%f)\n",pushButton.GetNaturalSize().width); + tet_printf("Natural height (%f)\n",pushButton.GetNaturalSize().height); + + tet_printf(" UtcDaliPushButtonAlignmentLayout Top layout - Image and Padding size (%f,%f)\n", testImageWithPaddingSize.width, testImageWithPaddingSize.height ); + tet_printf(" UtcDaliPushButtonAlignmentLayout Top layout - Text and Padding size (%f,%f)\n", labelAndPaddingSize.width, labelAndPaddingSize.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 ); + /* * Test Icon bottom alignment. * Width grows to largest of Icon or Label (+ padding). @@ -903,280 +1060,352 @@ int UtcDaliPushButtonAlignmentLayout(void) * | | * +---------+ */ - DALI_TEST_EQUALS( size, compareSize, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + 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 UtcDaliPushButtonSetButtonImageP(void) +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 button = PushButton::New(); - Stage::GetCurrent().Add( button ); + PushButton pushButton = PushButton::New(); + pushButton.SetProperty( Actor::Property::SIZE, Vector2( BUTTON_SIZE_TO_GET_INSIDE_TOUCH_EVENTS ) ); - try - { - button.SetButtonImage( ImageView::New() ); - DALI_TEST_CHECK( true ); - } - catch(...) - { - DALI_TEST_CHECK( false ); - } + application.GetScene().Add( pushButton ); - END_TEST; -} + Property::Map propertyMap; + propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR); + propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE); -int UtcDaliPushButtonSetButtonImageN(void) -{ - ToolkitTestApplication application; + pushButton.SetProperty( Toolkit::Button::Property::UNSELECTED_BACKGROUND_VISUAL, propertyMap ); - PushButton button; + tet_infoline(" UNSELECTED_VISUAL Added to button\n"); - try - { - button.SetSelectedImage( ImageView::New() ); - DALI_TEST_CHECK( false ); - } - catch(...) - { - DALI_TEST_CHECK( true ); - } + application.SendNotification(); + application.Render(0); - END_TEST; -} + unsigned int rendererCount = pushButton.GetRendererCount(); + tet_printf("After adding UNSELECTED_BACKGROUND_VISUAL the renderer count is(%d)\n", rendererCount ); -int UtcDaliPushButtonSetBackgroundImageP(void) -{ - ToolkitTestApplication application; + DALI_TEST_EQUALS( pushButton.GetRendererCount(), 1 , TEST_LOCATION ); - PushButton button = PushButton::New(); - Stage::GetCurrent().Add( button ); + tet_printf("Remove button from stage\n" ); - try - { - button.SetBackgroundImage( ImageView::New() ); - DALI_TEST_CHECK( true ); - } - catch(...) - { - DALI_TEST_CHECK( false ); - } + 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 UtcDaliPushButtonSetBackgroundImageN(void) +int UtcDaliPushButtonSetSelectedVisualN(void) { + tet_infoline(" Test adding a broken visual for the UNSELECTED_VISUAL property"); + ToolkitTestApplication application; - PushButton button; + PushButton pushButton = PushButton::New(); - try - { - button.SetBackgroundImage( ImageView::New() ); - DALI_TEST_CHECK( false ); - } - catch(...) - { - DALI_TEST_CHECK( true ); - } + 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 UtcDaliPushButtonSetSelectedImageP(void) +int UtcDaliPushButtonToggleSignalP(void) { ToolkitTestApplication application; + tet_infoline(" UtcDaliButtonToggleSignalP Ensure Signals emitted"); PushButton button = PushButton::New(); - Stage::GetCurrent().Add( button ); + button.SetProperty( Button::Property::TOGGLABLE, true); - try - { - button.SetSelectedImage( ImageView::New() ); - DALI_TEST_CHECK( true ); - } - catch(...) - { - DALI_TEST_CHECK( false ); - } + 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; } -int UtcDaliPushButtonSetSelectedImageN(void) +// Deprecated API Tests + +int UtcDaliPushButtonSetGetAutoRepeating(void) { ToolkitTestApplication application; + tet_infoline(" UtcDaliPushButtonSetGetAutoRepeating"); - PushButton button; + PushButton pushButton = PushButton::New(); - try - { - button.SetSelectedImage( ImageView::New() ); - DALI_TEST_CHECK( false ); - } - catch(...) - { - DALI_TEST_CHECK( true ); - } + pushButton.SetProperty( Button::Property::AUTO_REPEATING, true ); + + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::AUTO_REPEATING ), true, TEST_LOCATION ); + + pushButton.SetProperty( Button::Property::AUTO_REPEATING, false ); + + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::AUTO_REPEATING ), false, TEST_LOCATION ); + + pushButton.SetProperty( Button::Property::AUTO_REPEATING, true ); + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::AUTO_REPEATING ), true, TEST_LOCATION ); END_TEST; } -int UtcDaliPushButtonSetSelectedBackgroundImageP(void) +int UtcDaliPushButtonSetGetTogglableButton(void) { ToolkitTestApplication application; + tet_infoline(" UtcDaliPushButtonSetGetTogglableButton"); - PushButton button = PushButton::New(); - Stage::GetCurrent().Add( button ); + PushButton pushButton = PushButton::New(); - try - { - button.SetSelectedBackgroundImage( ImageView::New() ); - DALI_TEST_CHECK( true ); - } - catch(...) - { - DALI_TEST_CHECK( false ); - } + pushButton.SetProperty( Button::Property::TOGGLABLE, true ); + + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::TOGGLABLE ), true, TEST_LOCATION ); + pushButton.SetProperty( Button::Property::TOGGLABLE, false ); + + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::TOGGLABLE ), false, TEST_LOCATION ); + + pushButton.SetProperty( Button::Property::TOGGLABLE, true ); + + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::TOGGLABLE ), true, TEST_LOCATION ); END_TEST; } -int UtcDaliPushButtonSetSelectedBackgroundImageN(void) +int UtcDaliPushButtonSetGetAutoRepeatingAndTogglableButton(void) { ToolkitTestApplication application; + tet_infoline(" UtcDaliPushButtonSetGetAutoRepeatingAndTogglableButton"); - PushButton button; + PushButton pushButton = PushButton::New(); - try - { - button.SetSelectedBackgroundImage( ImageView::New() ); - DALI_TEST_CHECK( false ); - } - catch(...) - { - DALI_TEST_CHECK( true ); - } + pushButton.SetProperty( Button::Property::AUTO_REPEATING, true ); + pushButton.SetProperty( Button::Property::TOGGLABLE, true); + + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::TOGGLABLE ), true, TEST_LOCATION ); + DALI_TEST_EQUALS( pushButton.GetProperty( 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( Button::Property::AUTO_REPEATING ), true, TEST_LOCATION ); + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::TOGGLABLE ), false, TEST_LOCATION ); END_TEST; } -int UtcDaliPushButtonSetDisabledBackgroundImageP(void) +int UtcDaliPushButtonSetGetSelected01(void) { ToolkitTestApplication application; + tet_infoline(" UtcDaliPushButtonSetGetSelected01"); - PushButton button = PushButton::New(); - Stage::GetCurrent().Add( button ); + PushButton pushButton = PushButton::New(); - try - { - button.SetDisabledBackgroundImage( ImageView::New() ); - DALI_TEST_CHECK( true ); - } - catch(...) - { - DALI_TEST_CHECK( false ); - } + pushButton.SetProperty( Button::Property::TOGGLABLE, true); + pushButton.StateChangedSignal().Connect( &PushButtonSelected ); + + gPushButtonSelectedState = false; + pushButton.SetProperty( Button::Property::SELECTED, true ); + + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::SELECTED), true, TEST_LOCATION ); + DALI_TEST_CHECK( gPushButtonSelectedState ); + + pushButton.SetProperty( Button::Property::SELECTED, false ); + + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::SELECTED), false, TEST_LOCATION ); + DALI_TEST_CHECK( !gPushButtonSelectedState ); + pushButton.SetProperty( Button::Property::SELECTED, true ); + + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::SELECTED), true, TEST_LOCATION ); + DALI_TEST_CHECK( gPushButtonSelectedState ); END_TEST; } -int UtcDaliPushButtonSetDisabledBackgroundImageN(void) +int UtcDaliPushButtonSetGetSelected02(void) { ToolkitTestApplication application; + tet_infoline(" UtcDaliPushButtonSetGetSelected02"); - PushButton button; + PushButton pushButton = PushButton::New(); - try - { - button.SetDisabledBackgroundImage( ImageView::New() ); - DALI_TEST_CHECK( false ); - } - catch(...) - { - DALI_TEST_CHECK( true ); - } + 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( Button::Property::SELECTED), false, TEST_LOCATION ); + DALI_TEST_CHECK( !gPushButtonSelectedState ); + + pushButton.SetProperty( Button::Property::SELECTED, false ); + + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::SELECTED), false, TEST_LOCATION ); + DALI_TEST_CHECK( !gPushButtonSelectedState ); + + pushButton.SetProperty( Button::Property::SELECTED, true ); + + DALI_TEST_EQUALS( pushButton.GetProperty( Button::Property::SELECTED ), false, TEST_LOCATION ); + DALI_TEST_CHECK( !gPushButtonSelectedState ); END_TEST; } -int UtcDaliPushButtonSetDisabledImageP(void) +int UtcDaliPushButtonSetGetAutorepeatingDelayValues01(void) { ToolkitTestApplication application; + tet_infoline(" UtcDaliPushButtonSetGetAutorepeatingDelayValues01"); - PushButton button = PushButton::New(); - Stage::GetCurrent().Add( button ); + PushButton pushButton = PushButton::New(); - try - { - button.SetDisabledImage( ImageView::New() ); - DALI_TEST_CHECK( true ); - } - catch(...) - { - DALI_TEST_CHECK( false ); - } + pushButton.SetProperty( Button::Property::AUTO_REPEATING, true ); + + pushButton.SetProperty( Button::Property::INITIAL_AUTO_REPEATING_DELAY, 1.f); + DALI_TEST_EQUALS( pushButton.GetProperty( 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( Button::Property::NEXT_AUTO_REPEATING_DELAY ), 1.f, TEST_LOCATION ); END_TEST; } -int UtcDaliPushButtonSetDisabledImageN(void) +int UtcDaliPushButtonSetGetAutorepeatingDelayValues02(void) { ToolkitTestApplication application; + tet_infoline(" UtcDaliPushButtonSetGetAutorepeatingDelayValues02"); - PushButton button; + PushButton pushButton = PushButton::New(); + + bool assert1( false ); + bool assert2( false ); + + pushButton.SetProperty( Button::Property::AUTO_REPEATING, true ); try { - button.SetDisabledImage( ImageView::New() ); - DALI_TEST_CHECK( false ); + pushButton.SetProperty( Button::Property::INITIAL_AUTO_REPEATING_DELAY, -1.f ); } - catch(...) + catch( Dali::DaliException& e ) { - DALI_TEST_CHECK( true ); + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_EQUALS(e.condition, "initialAutoRepeatingDelay > 0.f", TEST_LOCATION); + assert1 = true; } - END_TEST; -} - -int UtcDaliPushButtonSetDisabledSelectedImageP(void) -{ - ToolkitTestApplication application; - - PushButton button = PushButton::New(); - Stage::GetCurrent().Add( button ); - try { - button.SetDisabledSelectedImage( ImageView::New() ); - DALI_TEST_CHECK( true ); + pushButton.SetProperty( Button::Property::NEXT_AUTO_REPEATING_DELAY, -1.f ); } - catch(...) + catch( Dali::DaliException& e ) { - DALI_TEST_CHECK( false ); + 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 UtcDaliPushButtonSetDisabledSelectedImageN(void) +int UtcDaliPushButtonSetLabelText(void) { ToolkitTestApplication application; + tet_infoline(" UtcDaliPushButtonSetLabelText"); - PushButton button; + const std::string STR( "Hola!" ); - try - { - button.SetDisabledSelectedImage( ImageView::New() ); - DALI_TEST_CHECK( false ); - } - catch(...) - { - DALI_TEST_CHECK( true ); - } + 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); END_TEST; }