#include <dali/integration-api/events/touch-event-integ.h>
#include <dali-toolkit/dali-toolkit.h>
+#include <dali-toolkit/devel-api/controls/buttons/button-devel.h>
+#include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
+#include <dali-toolkit/devel-api/visuals/text-visual-properties.h>
+
+#include <dali/devel-api/adaptor-framework/image-loading.h>
+
using namespace Dali;
using namespace Toolkit;
return true;
}
-const Dali::TouchPoint pointDownInside( 0, TouchPoint::Down, 240, 400 );
-const Dali::TouchPoint pointUpInside( 0, TouchPoint::Up, 240, 400 );
-const Dali::TouchPoint pointLeave( 0, TouchPoint::Leave, 240, 400 );
-const Dali::TouchPoint pointEnter( 0, TouchPoint::Motion, 240, 400 );
-const Dali::TouchPoint pointMotionOut( 0, TouchPoint::Motion, 10, 10 );
-const Dali::TouchPoint pointDownOutside( 0, TouchPoint::Down, 10, 10 );
-const Dali::TouchPoint pointUpOutside( 0, TouchPoint::Up, 10, 10 );
+Dali::Integration::Point GetPointDownInside()
+{
+ Dali::Integration::Point point;
+ point.SetState( PointState::DOWN );
+ point.SetScreenPosition( Vector2( 240, 400 ) );
+ return point;
+}
-Image CreateSolidColorImage( const Vector4& color, unsigned int width, unsigned int height )
+Dali::Integration::Point GetPointUpInside()
{
- BufferImage imageData = BufferImage::New( width, height, Pixel::RGBA8888 );
+ Dali::Integration::Point point;
+ point.SetState( PointState::UP );
+ point.SetScreenPosition( Vector2( 240, 400 ) );
+ return point;
+}
- // Create the image
- PixelBuffer* pixbuf = imageData.GetBuffer();
- unsigned int size = width * height;
+Dali::Integration::Point GetPointLeave()
+{
+ Dali::Integration::Point point;
+ point.SetState( PointState::LEAVE );
+ point.SetScreenPosition( Vector2( 240, 400 ) );
+ return point;
+}
- for( size_t i = 0; i < size; i++ )
- {
- pixbuf[i*4+0] = 0xFF * color.r;
- pixbuf[i*4+1] = 0xFF * color.g;
- pixbuf[i*4+2] = 0xFF * color.b;
- pixbuf[i*4+3] = 0xFF * color.a;
- }
+Dali::Integration::Point GetPointEnter()
+{
+ Dali::Integration::Point point;
+ point.SetState( PointState::MOTION );
+ point.SetScreenPosition( Vector2( 240, 400 ) );
+ return point;
+}
- imageData.Update();
+Dali::Integration::Point GetPointDownOutside()
+{
+ Dali::Integration::Point point;
+ point.SetState( PointState::DOWN );
+ point.SetScreenPosition( Vector2( 10, 10 ) );
+ return point;
+}
- return imageData;
+Dali::Integration::Point GetPointUpOutside()
+{
+ Dali::Integration::Point point;
+ point.SetState( PointState::UP );
+ point.SetScreenPosition( Vector2( 10, 10 ) );
+ return point;
}
} //namespace
+int UtcDaliPushButtonConstructorP(void)
+{
+ TestApplication application;
+
+ PushButton button;
+
+ DALI_TEST_CHECK( !button );
+ END_TEST;
+}
+
+int UtcDaliPushButtonCopyConstructorP(void)
+{
+ TestApplication application;
+
+ // Initialize an object, ref count == 1
+ PushButton button = PushButton::New();
+
+ PushButton copy( button );
+ DALI_TEST_CHECK( copy );
+ END_TEST;
+}
+
+int UtcDaliPushButtonAssignmentOperatorP(void)
+{
+ TestApplication application;
+
+ PushButton button = PushButton::New();
+
+ PushButton copy( button );
+ DALI_TEST_CHECK( copy );
+
+ DALI_TEST_CHECK( button == copy );
+ END_TEST;
+}
+
+int UtcDaliPushButtonNewP(void)
+{
+ TestApplication application;
+
+ PushButton button = PushButton::New();
+
+ DALI_TEST_CHECK( button );
+ END_TEST;
+}
+
+int UtcDaliPushButtonDownCastP(void)
+{
+ TestApplication application;
+
+ PushButton button = PushButton::New();
+
+ BaseHandle object(button);
+
+ PushButton button2 = PushButton::DownCast( object );
+ DALI_TEST_CHECK(button2);
+
+ PushButton button3 = DownCast< PushButton >(object);
+ DALI_TEST_CHECK(button3);
+ END_TEST;
+}
+
+int UtcDaliPushButtonDownCastN(void)
+{
+ TestApplication application;
+
+ BaseHandle unInitializedObject;
+
+ PushButton button1 = PushButton::DownCast( unInitializedObject );
+ DALI_TEST_CHECK( !button1 );
+
+ PushButton button2 = DownCast< PushButton >( unInitializedObject );
+ DALI_TEST_CHECK( !button2 );
+ END_TEST;
+}
int UtcDaliPushButtonSetGetAutoRepeating(void)
{
END_TEST;
}
-int UtcDaliPushButtonSetImages(void)
-{
- ToolkitTestApplication application;
- tet_infoline(" UtcDaliPushButtonSetImages");
-
- Actor imageActor;
-
- Image image01 = CreateSolidColorImage( Color::RED, 10, 10 );
- ImageActor imageActor01 = CreateSolidColorActor( Color::RED );
- imageActor01.SetSize( 20.f, 20.f );
-
- Image image02 = CreateSolidColorImage( Color::RED, 30, 30 );
- ImageActor imageActor02 = CreateSolidColorActor( Color::RED );
- imageActor02.SetSize( 40.f, 40.f );
-
- Image image03 = CreateSolidColorImage( Color::RED, 50, 50 );
- ImageActor imageActor03 = CreateSolidColorActor( Color::RED );
- imageActor03.SetSize( 60.f, 60.f );
-
- Image image04 = CreateSolidColorImage( Color::RED, 70, 70 );
- ImageActor imageActor04 = CreateSolidColorActor( Color::RED );
- imageActor04.SetSize( 80.f, 80.f );
-
- Image image05 = CreateSolidColorImage( Color::RED, 90, 90 );
- ImageActor imageActor05 = CreateSolidColorActor( Color::RED );
- imageActor05.SetSize( 100.f, 100.f );
-
- Vector3 size;
- PushButton pushButton = PushButton::New();
-
- application.SendNotification();
- application.Render();
-
- // Just check if check box button size changes when a bigger image is set.
-
- pushButton.SetButtonImage( image01 );
-
- application.SendNotification();
- application.Render();
-
- size = pushButton.GetButtonImage().GetCurrentSize();
-
- DALI_TEST_EQUALS( size.width, 10.f, TEST_LOCATION );
- DALI_TEST_EQUALS( size.height, 10.f, TEST_LOCATION );
-
- pushButton.SetButtonImage( imageActor01 );
-
- application.SendNotification();
- application.Render();
-
- size = pushButton.GetButtonImage().GetCurrentSize();
-
- DALI_TEST_EQUALS( size.width, 20.f, TEST_LOCATION );
- DALI_TEST_EQUALS( size.height, 20.f, TEST_LOCATION );
-
- pushButton.SetBackgroundImage( image02 );
-
- application.SendNotification();
- application.Render();
-
- size = pushButton.GetBackgroundImage().GetCurrentSize();
-
- DALI_TEST_EQUALS( size.width, 30.f, TEST_LOCATION );
- DALI_TEST_EQUALS( size.height, 30.f, TEST_LOCATION );
-
- pushButton.SetBackgroundImage( imageActor02 );
-
- application.SendNotification();
- application.Render();
-
- size = pushButton.GetBackgroundImage().GetCurrentSize();
-
- DALI_TEST_EQUALS( size.width, 40.f, TEST_LOCATION );
- DALI_TEST_EQUALS( size.height, 40.f, TEST_LOCATION );
-
- pushButton.SetSelectedImage( image03 );
-
- application.SendNotification();
- application.Render();
-
- size = pushButton.GetSelectedImage().GetCurrentSize();
-
- DALI_TEST_EQUALS( size.width, 50.f, TEST_LOCATION );
- DALI_TEST_EQUALS( size.height, 50.f, TEST_LOCATION );
-
- pushButton.SetSelectedImage( imageActor03 );
-
- application.SendNotification();
- application.Render();
-
- size = pushButton.GetSelectedImage().GetCurrentSize();
-
- DALI_TEST_EQUALS( size.width, 60.f, TEST_LOCATION );
- DALI_TEST_EQUALS( size.height, 60.f, TEST_LOCATION );
-
- pushButton.SetDisabledBackgroundImage( image04 );
-
- application.SendNotification();
- application.Render();
-
- size = pushButton.GetDisabledBackgroundImage().GetCurrentSize();
-
- DALI_TEST_EQUALS( size.width, 70.f, TEST_LOCATION );
- DALI_TEST_EQUALS( size.height, 70.f, TEST_LOCATION );
-
- pushButton.SetDisabledBackgroundImage( imageActor04 );
-
- application.SendNotification();
- application.Render();
-
- size = pushButton.GetDisabledBackgroundImage().GetCurrentSize();
-
- DALI_TEST_EQUALS( size.width, 80.f, TEST_LOCATION );
- DALI_TEST_EQUALS( size.height, 80.f, TEST_LOCATION );
-
- pushButton.SetDisabledImage( image05 );
-
- application.SendNotification();
- application.Render();
-
- size = pushButton.GetDisabledImage().GetCurrentSize();
-
- DALI_TEST_EQUALS( size.width, 90.f, TEST_LOCATION );
- DALI_TEST_EQUALS( size.height, 90.f, TEST_LOCATION );
-
- pushButton.SetDisabledImage( imageActor05 );
-
- application.SendNotification();
- application.Render();
-
- size = pushButton.GetDisabledImage().GetCurrentSize();
-
- DALI_TEST_EQUALS( size.width, 100.f, TEST_LOCATION );
- DALI_TEST_EQUALS( size.height, 100.f, TEST_LOCATION );
- END_TEST;
-}
-
int UtcDaliPushButtonSetLabelText(void)
{
ToolkitTestApplication application;
application.SendNotification();
application.Render();
- pushButton.SetLabel( STR );
+ pushButton.SetLabelText( STR );
+
+ DALI_TEST_EQUALS( pushButton.GetLabelText(), STR, TEST_LOCATION );
END_TEST;
}
pushButton.PressedSignal().Connect( &PushButtonPressed );
Dali::Integration::TouchEvent eventDown;
- eventDown.AddPoint( pointDownInside );
+ eventDown.AddPoint( GetPointDownInside() );
// flush the queue and render once
application.SendNotification();
gPushButtonReleased = false;
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointDownInside );
+ event.AddPoint( GetPointDownInside() );
application.ProcessEvent( event );
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointUpInside );
+ event.AddPoint( GetPointUpInside() );
application.ProcessEvent( event );
DALI_TEST_CHECK( gPushButtonReleased );
gPushButtonReleased = false;
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointDownOutside );
+ event.AddPoint( GetPointDownOutside() );
application.ProcessEvent( event );
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointUpOutside );
+ event.AddPoint( GetPointUpOutside() );
application.ProcessEvent( event );
DALI_TEST_CHECK( !gPushButtonReleased );
gPushButtonReleased = false;
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointDownInside );
+ event.AddPoint( GetPointDownInside() );
application.ProcessEvent( event );
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointLeave );
+ event.AddPoint( GetPointLeave() );
application.ProcessEvent( event );
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointUpOutside );
+ event.AddPoint( GetPointUpOutside() );
application.ProcessEvent( event );
DALI_TEST_CHECK( gPushButtonReleased );
gPushButtonReleased = false;
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointDownOutside );
+ event.AddPoint( GetPointDownOutside() );
application.ProcessEvent( event );
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointEnter );
+ event.AddPoint( GetPointEnter() );
application.ProcessEvent( event );
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointUpInside );
+ event.AddPoint( GetPointUpInside() );
application.ProcessEvent( event );
DALI_TEST_CHECK( !gPushButtonReleased );
gPushButtonSelectedState = false;
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointDownInside );
+ event.AddPoint( GetPointDownInside() );
application.ProcessEvent( event );
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointUpInside );
+ event.AddPoint( GetPointUpInside() );
application.ProcessEvent( event );
DALI_TEST_CHECK( !gPushButtonSelectedState );
// Test2. Touch point down and up inside the button twice.
gPushButtonSelectedState = false;
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointDownInside );
+ event.AddPoint( GetPointDownInside() );
application.ProcessEvent( event );
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointUpInside );
+ event.AddPoint( GetPointUpInside() );
application.ProcessEvent( event );
DALI_TEST_CHECK( gPushButtonSelectedState );
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointDownInside );
+ event.AddPoint( GetPointDownInside() );
application.ProcessEvent( event );
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointUpInside );
+ event.AddPoint( GetPointUpInside() );
application.ProcessEvent( event );
DALI_TEST_CHECK( !gPushButtonSelectedState );
gPushButtonSelectedState = false;
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointDownOutside );
+ event.AddPoint( GetPointDownOutside() );
application.ProcessEvent( event );
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointUpOutside );
+ event.AddPoint( GetPointUpOutside() );
application.ProcessEvent( event );
DALI_TEST_CHECK( !gPushButtonSelectedState );
gPushButtonSelectedState = false;
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointDownInside );
+ event.AddPoint( GetPointDownInside() );
application.ProcessEvent( event );
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointLeave );
+ event.AddPoint( GetPointLeave() );
application.ProcessEvent( event );
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointUpOutside );
+ event.AddPoint( GetPointUpOutside() );
application.ProcessEvent( event );
DALI_TEST_CHECK( !gPushButtonSelectedState );
gPushButtonSelectedState = false;
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointDownOutside );
+ event.AddPoint( GetPointDownOutside() );
application.ProcessEvent( event );
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointEnter );
+ event.AddPoint( GetPointEnter() );
application.ProcessEvent( event );
event = Dali::Integration::TouchEvent();
- event.AddPoint( pointUpInside );
+ event.AddPoint( GetPointUpInside() );
application.ProcessEvent( event );
DALI_TEST_CHECK( !gPushButtonSelectedState );
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<std::string>( Toolkit::PushButton::Property::ICON_ALIGNMENT ), "TOP", TEST_LOCATION );
+
+ pushButton.SetProperty( Toolkit::PushButton::Property::ICON_ALIGNMENT, "RIGHT" );
+ DALI_TEST_EQUALS( pushButton.GetProperty<std::string>( Toolkit::PushButton::Property::ICON_ALIGNMENT ), "RIGHT", TEST_LOCATION );
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonPropertySetLabelPadding(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline(" UtcDaliPushButtonPropertySetLabelPadding");
+
+ PushButton pushButton = PushButton::New();
+ pushButton.SetProperty( Toolkit::PushButton::Property::LABEL_PADDING, Vector4( 1.0f, 1.0f, 1.0f, 1.0f ) );
+ DALI_TEST_EQUALS( pushButton.GetProperty<Vector4>( Toolkit::PushButton::Property::LABEL_PADDING ), Vector4( 1.0f, 1.0f, 1.0f, 1.0f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
+
+ pushButton.SetProperty( Toolkit::PushButton::Property::LABEL_PADDING, Vector4( 10.0f, 10.0f, 10.0f, 10.0f ) );
+ DALI_TEST_EQUALS( pushButton.GetProperty<Vector4>( Toolkit::PushButton::Property::LABEL_PADDING ), Vector4( 10.0f, 10.0f, 10.0f, 10.0f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonPropertySetIconPadding(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline(" UtcDaliPushButtonPropertySetIconPadding");
+
+ PushButton pushButton = PushButton::New();
+ pushButton.SetProperty( Toolkit::PushButton::Property::ICON_PADDING, Vector4( 1.0f, 1.0f, 1.0f, 1.0f ) );
+ DALI_TEST_EQUALS( pushButton.GetProperty<Vector4>( Toolkit::PushButton::Property::ICON_PADDING ), Vector4( 1.0f, 1.0f, 1.0f, 1.0f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
+
+ pushButton.SetProperty( Toolkit::PushButton::Property::ICON_PADDING, Vector4( 10.0f, 10.0f, 10.0f, 10.0f ) );
+ DALI_TEST_EQUALS( pushButton.GetProperty<Vector4>( Toolkit::PushButton::Property::ICON_PADDING ), Vector4( 10.0f, 10.0f, 10.0f, 10.0f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonPaddingLayout(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline(" UtcDaliPushButtonPaddingLayout");
+
+ // This test creates padding for an icon and a label.
+ // The icon and label are each enabled and disabled to confirm the correct padding is used.
+ PushButton pushButton = PushButton::New();
+
+
+ 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.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
+
+ Stage::GetCurrent().Add( pushButton );
+
+ application.SendNotification();
+ application.Render();
+
+ // First test the size is zero.
+ // No padding should be added as there is no label or icon.
+ Vector2 size( Vector2::ZERO );
+ size.width = pushButton.GetRelayoutSize( Dimension::WIDTH );
+ size.height = pushButton.GetRelayoutSize( Dimension::HEIGHT );
+
+ DALI_TEST_EQUALS( size, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
+
+ // Check label only padding.
+ pushButton.SetLabelText( "Label" );
+
+ application.SendNotification();
+ application.Render();
+
+ size.width = pushButton.GetRelayoutSize( Dimension::WIDTH );
+ size.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 );
+
+ // 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.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
+
+ Stage::GetCurrent().Add( pushButton );
+
+
+
+ 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 );
+
+ application.SendNotification();
+ application.Render();
+
+ size.width = pushButton.GetRelayoutSize( Dimension::WIDTH );
+ size.height = pushButton.GetRelayoutSize( Dimension::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 );
+
+ 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" );
+
+ application.SendNotification();
+ application.Render();
+
+ size.width = pushButton.GetRelayoutSize( Dimension::WIDTH );
+ size.height = pushButton.GetRelayoutSize( Dimension::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;
+}
+
+int UtcDaliPushButtonAlignmentLayout(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline(" UtcDaliPushButtonAlignmentLayout");
+
+ /*
+ * This test checks different alignments for the icon against the label.
+ * The icon is then moved around the label in each of it's alignments.
+ * The final relayed out size is checked to confirm the layout has been done correctly.
+ *
+ * There is an Icon which has 0 width and height, but with 75 padding on all sides.
+ * - Therefore total width and height are both 150.
+ *
+ * There is a Label which has "an unknown" width and height, but with 30 padding on all sides.
+ * - Therefore total width and height are 60+x and 60+y respectively.
+ * Where x & y are the width and height of the text.
+ *
+ * The width of the button will always expand to the largest of the icon and label sizes (plus padding).
+ * So We use the padding to help us determine the orientation is correct for each alignment.
+ *
+ * |<- 150 ->| |<-- 60+x -->|
+ *
+ * +---------+ -
+ * | | ^ +------------+ -
+ * | | | | | ^
+ * | Icon | 150 | Label | 60+y
+ * | | | | | v
+ * | | v +------------+ -
+ * +---------+ -
+ */
+
+
+ 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 );
+
+ // 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( 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 ) );
+
+ pushButton.SetAnchorPoint( AnchorPoint::TOP_LEFT );
+ pushButton.SetParentOrigin( ParentOrigin::TOP_LEFT );
+ pushButton.SetPosition( 0.0f, 0.0f );
+ pushButton.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
+
+ Stage::GetCurrent().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 );
+
+ 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 );
+
+ DALI_TEST_EQUALS( baseSize, Vector2( 150.0f, 150.0f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
+
+
+ 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::PushButton::Property::ICON_ALIGNMENT, "RIGHT" );
+ pushButton.SetProperty( Toolkit::PushButton::Property::UNSELECTED_ICON, TEST_IMAGE_ONE );
+ pushButton.SetProperty( Toolkit::PushButton::Property::SELECTED_ICON, TEST_IMAGE_ONE );
+ pushButton.SetProperty( Toolkit::PushButton::Property::ICON_PADDING, TEST_ICON_PADDING );
+
+ application.SendNotification();
+ application.Render();
+
+ Vector2 size( Vector2::ZERO );
+ 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).
+ * Normally this will be Icons height, except with very large font sizes.
+ *
+ * +------------+---------+
+ * |............+ |
+ * | | |
+ * | Label | Icon |
+ * | | |
+ * |............+ |
+ * +------------+---------+
+ */
+ DALI_TEST_GREATER( size.width, 150.0f + 60.0f, TEST_LOCATION );
+ DALI_TEST_EQUALS( size.height, 150.0f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
+
+ // Now test left alignment matches right for size.
+ pushButton.SetProperty( Toolkit::PushButton::Property::ICON_ALIGNMENT, "LEFT" );
+
+ application.SendNotification();
+ application.Render();
+
+ Vector2 compareSize( Vector2::ZERO );
+ compareSize.width = pushButton.GetRelayoutSize( Dimension::WIDTH );
+ compareSize.height = pushButton.GetRelayoutSize( Dimension::HEIGHT );
+
+ /*
+ * Test Icon left alignment.
+ * Height grows to largest of Icon or Label (+ padding).
+ * Normally this will be Icons height, except with very large font sizes.
+ *
+ * +---------+------------+
+ * | +............|
+ * | | |
+ * | Icon | Label |
+ * | | |
+ * | +............|
+ * +---------+------------+
+ */
+ 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 );
+
+ /*
+ * Test Icon top alignment.
+ * Width grows to largest of Icon or Label (+ padding).
+ *
+ * +---------+
+ * | |
+ * | |
+ * | Icon |
+ * | |
+ * | |
+ * +---------+
+ * | |
+ * | Label |
+ * | |
+ * +---------+
+ *
+ * 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" );
+
+ application.SendNotification();
+ application.Render();
+
+ size.width = pushButton.GetRelayoutSize( Dimension::WIDTH );
+ size.height = pushButton.GetRelayoutSize( Dimension::HEIGHT );
+
+ /*
+ * Test Icon bottom alignment.
+ * Width grows to largest of Icon or Label (+ padding).
+ *
+ * +---------+
+ * | |
+ * | Label |
+ * | |
+ * +---------+
+ * | |
+ * | |
+ * | Icon |
+ * | |
+ * | |
+ * +---------+
+ */
+ DALI_TEST_EQUALS( size, compareSize, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetButtonImageP(void)
+{
+ ToolkitTestApplication application;
+
+ PushButton button = PushButton::New();
+ Stage::GetCurrent().Add( button );
+
+ try
+ {
+ button.SetButtonImage( ImageView::New() );
+ DALI_TEST_CHECK( true );
+ }
+ catch(...)
+ {
+ DALI_TEST_CHECK( false );
+ }
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetButtonImageN(void)
+{
+ ToolkitTestApplication application;
+
+ PushButton button;
+
+ try
+ {
+ button.SetSelectedImage( ImageView::New() );
+ DALI_TEST_CHECK( false );
+ }
+ catch(...)
+ {
+ DALI_TEST_CHECK( true );
+ }
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetBackgroundImageP(void)
+{
+ ToolkitTestApplication application;
+
+ PushButton button = PushButton::New();
+ Stage::GetCurrent().Add( button );
+
+ try
+ {
+ button.SetBackgroundImage( ImageView::New() );
+ DALI_TEST_CHECK( true );
+ }
+ catch(...)
+ {
+ DALI_TEST_CHECK( false );
+ }
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetBackgroundImageN(void)
+{
+ ToolkitTestApplication application;
+
+ PushButton button;
+
+ try
+ {
+ button.SetBackgroundImage( ImageView::New() );
+ DALI_TEST_CHECK( false );
+ }
+ catch(...)
+ {
+ DALI_TEST_CHECK( true );
+ }
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetSelectedImageP(void)
+{
+ ToolkitTestApplication application;
+
+ PushButton button = PushButton::New();
+ Stage::GetCurrent().Add( button );
+
+ try
+ {
+ button.SetSelectedImage( ImageView::New() );
+ DALI_TEST_CHECK( true );
+ }
+ catch(...)
+ {
+ DALI_TEST_CHECK( false );
+ }
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetSelectedImageN(void)
+{
+ ToolkitTestApplication application;
+
+ PushButton button;
+
+ try
+ {
+ button.SetSelectedImage( ImageView::New() );
+ DALI_TEST_CHECK( false );
+ }
+ catch(...)
+ {
+ DALI_TEST_CHECK( true );
+ }
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetSelectedBackgroundImageP(void)
+{
+ ToolkitTestApplication application;
+
+ PushButton button = PushButton::New();
+ Stage::GetCurrent().Add( button );
+
+ try
+ {
+ button.SetSelectedBackgroundImage( ImageView::New() );
+ DALI_TEST_CHECK( true );
+ }
+ catch(...)
+ {
+ DALI_TEST_CHECK( false );
+ }
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetSelectedBackgroundImageN(void)
+{
+ ToolkitTestApplication application;
+
+ PushButton button;
+
+ try
+ {
+ button.SetSelectedBackgroundImage( ImageView::New() );
+ DALI_TEST_CHECK( false );
+ }
+ catch(...)
+ {
+ DALI_TEST_CHECK( true );
+ }
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetDisabledBackgroundImageP(void)
+{
+ ToolkitTestApplication application;
+
+ PushButton button = PushButton::New();
+ Stage::GetCurrent().Add( button );
+
+ try
+ {
+ button.SetDisabledBackgroundImage( ImageView::New() );
+ DALI_TEST_CHECK( true );
+ }
+ catch(...)
+ {
+ DALI_TEST_CHECK( false );
+ }
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetDisabledBackgroundImageN(void)
+{
+ ToolkitTestApplication application;
+
+ PushButton button;
+
+ try
+ {
+ button.SetDisabledBackgroundImage( ImageView::New() );
+ DALI_TEST_CHECK( false );
+ }
+ catch(...)
+ {
+ DALI_TEST_CHECK( true );
+ }
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetDisabledImageP(void)
+{
+ ToolkitTestApplication application;
+
+ PushButton button = PushButton::New();
+ Stage::GetCurrent().Add( button );
+
+ try
+ {
+ button.SetDisabledImage( ImageView::New() );
+ DALI_TEST_CHECK( true );
+ }
+ catch(...)
+ {
+ DALI_TEST_CHECK( false );
+ }
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetDisabledImageN(void)
+{
+ ToolkitTestApplication application;
+
+ PushButton button;
+
+ try
+ {
+ button.SetDisabledImage( ImageView::New() );
+ DALI_TEST_CHECK( false );
+ }
+ catch(...)
+ {
+ DALI_TEST_CHECK( 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 );
+ }
+ catch(...)
+ {
+ DALI_TEST_CHECK( false );
+ }
+
+ END_TEST;
+}
+
+int UtcDaliPushButtonSetDisabledSelectedImageN(void)
+{
+ ToolkitTestApplication application;
+
+ PushButton button;
+
+ try
+ {
+ button.SetDisabledSelectedImage( ImageView::New() );
+ DALI_TEST_CHECK( false );
+ }
+ catch(...)
+ {
+ DALI_TEST_CHECK( true );
+ }
+
+ END_TEST;
+}