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=f785c636ed1a09f647d663d1c5ac6a3af6816076;hp=49ed86dd2e8330286322452ced50f29b3f107cc7;hb=3a289377436005f632a2dca8916706879b7e3a28;hpb=928136dbb9e23970f3894eabc7c8b224003b77be diff --git a/automated-tests/src/dali-toolkit/utc-Dali-PushButton.cpp b/automated-tests/src/dali-toolkit/utc-Dali-PushButton.cpp index 49ed86d..f785c63 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-PushButton.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-PushButton.cpp @@ -96,6 +96,80 @@ Image CreateSolidColorImage( const Vector4& color, unsigned int width, unsigned } //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) { @@ -271,143 +345,6 @@ int UtcDaliPushButtonSetGetAutorepeatingDelayValues02(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; @@ -420,7 +357,9 @@ int UtcDaliPushButtonSetLabelText(void) application.SendNotification(); application.Render(); - pushButton.SetLabel( STR ); + pushButton.SetLabelText( STR ); + + DALI_TEST_EQUALS( pushButton.GetLabelText(), STR, TEST_LOCATION ); END_TEST; } @@ -648,3 +587,304 @@ int UtcDaliPushButtonSelected(void) 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( 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; + 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( 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( 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( 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( 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(); + + 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 ); + + 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 ); + + 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(); + + size.width = pushButton.GetRelayoutSize( Dimension::WIDTH ); + size.height = pushButton.GetRelayoutSize( Dimension::HEIGHT ); + + DALI_TEST_EQUALS( size, Vector2( 40.0f, 40.0f ), 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 ); + + // 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 ); + + 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 +------------+ - + * +---------+ - + */ + 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 ); + + // Add a label to cause size to be modified in the direction of alignment. + pushButton.SetLabelText( "Label" ); + + 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; +}