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-Layouting.cpp;h=fbc717ceefbb49590d5c9a86ae87c78f6e049bf4;hp=7d8586aaf282e24e659cc8343954eceaef5c5d9c;hb=1c3258c8dbc37546ff31137462758a8b3323bdff;hpb=16634ab902b66b0ba2f3f39af8ff6ed25b5f7115 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp index 7d8586a..fbc717c 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp @@ -18,13 +18,13 @@ #include #include #include + #include -#include -#include #include #include #include -//#include + +#include using namespace Dali; using namespace Toolkit; @@ -39,31 +39,6 @@ void utc_dali_toolkit_layouting_cleanup(void) test_return_value = TET_PASS; } - -Control CreateLeafControl( int width, int height ) -{ - auto control = Control::New(); - control.SetName( "Leaf" ); - - auto pixelBuffer = Devel::PixelBuffer::New( 1, 1, Pixel::RGB888 ); - unsigned char* pixels = pixelBuffer.GetBuffer(); - pixels[0] = 0xff; - pixels[1] = 0x00; - pixels[2] = 0x00; - auto texture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGB888, 1, 1 ); - auto pixelData = Devel::PixelBuffer::Convert( pixelBuffer ); - texture.Upload( pixelData ); - std::string url = TextureManager::AddTexture( texture ); - - Property::Map map; - map[ Visual::Property::TYPE ] = Visual::IMAGE; - map[ ImageVisual::Property::URL ] = url; - map[ ImageVisual::Property::DESIRED_WIDTH ] = (float) width; - map[ ImageVisual::Property::DESIRED_HEIGHT ] = (float) height; - control.SetProperty( Control::Property::BACKGROUND, map ); - return control; -} - int UtcDaliLayouting_HboxLayout01(void) { ToolkitTestApplication application; @@ -106,11 +81,21 @@ int UtcDaliLayouting_HboxLayout01(void) DALI_TEST_EQUALS( controls[2].GetProperty( Actor::Property::SIZE ), Vector3( 80.0f, 40.0f, 0.0f ), 0.0001f, TEST_LOCATION ); DALI_TEST_EQUALS( controls[3].GetProperty( Actor::Property::SIZE ), Vector3( 100.0f, 40.0f, 0.0f ), 0.0001f, TEST_LOCATION ); - END_TEST; -} + // Change a layout + auto newHBoxLayout = HboxLayout::New(); + newHBoxLayout.SetCellPadding( LayoutSize( 10, 0 ) ); + DevelControl::SetLayout( hbox, newHBoxLayout ); + application.SendNotification(); + application.Render(); + DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::POSITION ), Vector3( 0.0f, 380.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( controls[1].GetProperty( Actor::Property::POSITION ), Vector3( 50.0f, 380.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( controls[2].GetProperty( Actor::Property::POSITION ), Vector3( 120.0f, 380.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( controls[3].GetProperty( Actor::Property::POSITION ), Vector3( 210.0f, 380.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + END_TEST; +} int UtcDaliLayouting_HboxLayout02(void) { @@ -229,10 +214,10 @@ int UtcDaliLayouting_HboxLayout03(void) hbox1.SetName( "HBox1"); hbox2.SetName( "HBox2"); - hbox1.SetProperty( Toolkit::LayoutBase::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); - hbox1.SetProperty( Toolkit::LayoutBase::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); - hbox2.SetProperty( Toolkit::LayoutBase::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); - hbox2.SetProperty( Toolkit::LayoutBase::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); + hbox1.SetProperty( Toolkit::LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); + hbox1.SetProperty( Toolkit::LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); + hbox2.SetProperty( Toolkit::LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); + hbox2.SetProperty( Toolkit::LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); std::vector< Control > controls; controls.push_back( CreateLeafControl( 20, 40 ) ); @@ -317,9 +302,6 @@ int UtcDaliLayouting_HboxLayout03(void) END_TEST; } - - - int UtcDaliLayouting_HboxLayout04(void) { ToolkitTestApplication application; @@ -337,10 +319,10 @@ int UtcDaliLayouting_HboxLayout04(void) hbox1.SetName( "HBox1"); // Default spec is to wrap content hbox2.SetName( "HBox2"); - hbox1.SetProperty( Toolkit::LayoutBase::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); - hbox1.SetProperty( Toolkit::LayoutBase::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); - hbox2.SetProperty( Toolkit::LayoutBase::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); - hbox2.SetProperty( Toolkit::LayoutBase::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); + hbox1.SetProperty( Toolkit::LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); + hbox1.SetProperty( Toolkit::LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); + hbox2.SetProperty( Toolkit::LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); + hbox2.SetProperty( Toolkit::LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); std::vector< Control > controls; controls.push_back( CreateLeafControl( 80, 40 ) ); @@ -367,7 +349,7 @@ int UtcDaliLayouting_HboxLayout04(void) ++counter; } - controls[6].SetProperty( Toolkit::LayoutBase::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); + controls[6].SetProperty( Toolkit::LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); auto hbox3 = Control::New(); auto hboxLayout3 = HboxLayout::New(); DevelControl::SetLayout( hbox3, hboxLayout3 ); @@ -420,6 +402,347 @@ int UtcDaliLayouting_HboxLayout04(void) END_TEST; } +int UtcDaliLayouting_HboxLayout05(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliLayouting_HboxLayout05 - Set children size explicitly via width & height specification"); + + Stage stage = Stage::GetCurrent(); + auto hbox = Control::New(); + auto hboxLayout = HboxLayout::New(); + hboxLayout.SetCellPadding( LayoutSize( 10, 0 ) ); + DevelControl::SetLayout( hbox, hboxLayout ); + hbox.SetName( "HBox"); + + std::vector< Control > controls; + controls.push_back( CreateLeafControl( 40, 40 ) ); + controls.push_back( CreateLeafControl( 60, 40 ) ); + controls.push_back( CreateLeafControl( 80, 40 ) ); + controls.push_back( CreateLeafControl( 100, 40 ) ); + + for( auto&& iter : controls ) + { + hbox.Add( iter ); + iter.SetProperty( Toolkit::LayoutItem::ChildProperty::WIDTH_SPECIFICATION, 100 ); + iter.SetProperty( Toolkit::LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, 50 ); + } + + hbox.SetParentOrigin( ParentOrigin::CENTER ); + hbox.SetAnchorPoint( AnchorPoint::CENTER ); + stage.Add( hbox ); + + // Ensure layouting happens + application.SendNotification(); + application.Render(); + + // hbox centers elements vertically, it fills test harness stage, which is 480x800. + // hbox left justifies elements + DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::POSITION ), Vector3( 0.0f, 375.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( controls[1].GetProperty( Actor::Property::POSITION ), Vector3( 110.0f, 375.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( controls[2].GetProperty( Actor::Property::POSITION ), Vector3( 220.0f, 375.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( controls[3].GetProperty( Actor::Property::POSITION ), Vector3( 330.0f, 375.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::SIZE ), Vector3( 100.0f, 50.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( controls[1].GetProperty( Actor::Property::SIZE ), Vector3( 100.0f, 50.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( controls[2].GetProperty( Actor::Property::SIZE ), Vector3( 100.0f, 50.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( controls[3].GetProperty( Actor::Property::SIZE ), Vector3( 100.0f, 50.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + END_TEST; +} + +// Padding tests + +int UtcDaliLayouting_HboxLayout_Padding01(void) +{ + ToolkitTestApplication application; + tet_infoline("UtcDaliLayouting_HboxLayout_Padding01 - Adding Padding to a single child"); + + Stage stage = Stage::GetCurrent(); + auto hbox = Control::New(); + auto hboxLayout = HboxLayout::New(); + DevelControl::SetLayout( hbox, hboxLayout ); + hbox.SetName( "HBox"); + + std::vector< Control > controls; + controls.push_back( CreateLeafControl( 40, 40 ) ); + controls.push_back( CreateLeafControl( 60, 40 ) ); + controls.push_back( CreateLeafControl( 80, 40 ) ); + controls.push_back( CreateLeafControl( 100, 40 ) ); + + const Extents CONTROL_PADDING = Extents(5, 10, 20, 2 ); + tet_printf( "\nAdding Padding to control at index %u \n", 1 ); + controls[1].SetProperty(Toolkit::Control::Property::PADDING, CONTROL_PADDING ); + + for( auto&& iter : controls ) + { + hbox.Add( iter ); + } + hbox.SetParentOrigin( ParentOrigin::CENTER ); + hbox.SetAnchorPoint( AnchorPoint::CENTER ); + stage.Add( hbox ); + + // Ensure layouting happens + application.SendNotification(); + application.Render(); + + // hbox centers elements vertically, it fills test harness stage, which is 480x800. + // hbox left justifies elements + tet_infoline("Test Child Actor Position"); + float xPositionOfControlBeingTested = 0.0f; + DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::POSITION ), Vector3( xPositionOfControlBeingTested, + 380.0f, + 0.0f ), 0.0001f, TEST_LOCATION ); + xPositionOfControlBeingTested += 40.0f; + + DALI_TEST_EQUALS( controls[1].GetProperty( Actor::Property::POSITION ), Vector3( xPositionOfControlBeingTested, + 380.0f - ( ( CONTROL_PADDING.top + CONTROL_PADDING.bottom) * 0.5f ), 0.0f ), + 0.0001f, TEST_LOCATION ); + + xPositionOfControlBeingTested += 60.0f + CONTROL_PADDING.start + CONTROL_PADDING.end; + DALI_TEST_EQUALS( controls[2].GetProperty( Actor::Property::POSITION ), Vector3( xPositionOfControlBeingTested, 380.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + xPositionOfControlBeingTested += 80.0f; + DALI_TEST_EQUALS( controls[3].GetProperty( Actor::Property::POSITION ), Vector3( xPositionOfControlBeingTested,380.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + tet_infoline("Test Child Actor Size"); + DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::SIZE ), Vector3( 40.0f, 40.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + DALI_TEST_EQUALS( controls[1].GetProperty( Actor::Property::SIZE ), Vector3( 60.0f + CONTROL_PADDING.start + CONTROL_PADDING.end, + 40.0f + CONTROL_PADDING.top + CONTROL_PADDING.bottom , 0.0f ), + 0.0001f, TEST_LOCATION ); + + DALI_TEST_EQUALS( controls[2].GetProperty( Actor::Property::SIZE ), Vector3( 80.0f, 40.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( controls[3].GetProperty( Actor::Property::SIZE ), Vector3( 100.0f, 40.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliLayouting_HboxLayout_Padding02(void) +{ + ToolkitTestApplication application; + tet_infoline("UtcDaliLayouting_HboxLayout_Padding02 - Adding Padding to a all children"); + + Stage stage = Stage::GetCurrent(); + auto hbox = Control::New(); + auto hboxLayout = HboxLayout::New(); + DevelControl::SetLayout( hbox, hboxLayout ); + hbox.SetName( "HBox"); + + std::vector< Control > controls; + controls.push_back( CreateLeafControl( 40, 40 ) ); + controls.push_back( CreateLeafControl( 60, 40 ) ); + controls.push_back( CreateLeafControl( 80, 40 ) ); + controls.push_back( CreateLeafControl( 100, 40 ) ); + + const Extents CONTROL_PADDING = Extents(5, 10, 20, 2 ); + + for( auto&& iter : controls ) + { + iter.SetProperty(Toolkit::Control::Property::PADDING, CONTROL_PADDING ); + hbox.Add( iter ); + } + hbox.SetParentOrigin( ParentOrigin::CENTER ); + hbox.SetAnchorPoint( AnchorPoint::CENTER ); + stage.Add( hbox ); + + // Ensure layouting happens + application.SendNotification(); + application.Render(); + + // hbox centers elements vertically, it fills test harness stage, which is 480x800. + // hbox left justifies elements + tet_infoline("Test Child Actor Position"); + float xPositionOfControlBeingTested = 0.0f; + float yPositionOfControlBeingTested = ( 800.0f * 0.5) - ( 0.5 * ( 40.0f + CONTROL_PADDING.top + CONTROL_PADDING.bottom ) ); + + DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::POSITION ), Vector3( xPositionOfControlBeingTested, + yPositionOfControlBeingTested, + 0.0f ), 0.0001f, TEST_LOCATION ); + xPositionOfControlBeingTested += 40.0f + CONTROL_PADDING.start + CONTROL_PADDING.end; + + DALI_TEST_EQUALS( controls[1].GetProperty( Actor::Property::POSITION ), Vector3( xPositionOfControlBeingTested, + yPositionOfControlBeingTested, + 0.0f ), + 0.0001f, TEST_LOCATION ); + + xPositionOfControlBeingTested += 60.0f + CONTROL_PADDING.start + CONTROL_PADDING.end; + DALI_TEST_EQUALS( controls[2].GetProperty( Actor::Property::POSITION ), Vector3( xPositionOfControlBeingTested, + yPositionOfControlBeingTested, + 0.0f ), 0.0001f, TEST_LOCATION ); + + xPositionOfControlBeingTested += 80.0f + CONTROL_PADDING.start + CONTROL_PADDING.end; + DALI_TEST_EQUALS( controls[3].GetProperty( Actor::Property::POSITION ), Vector3( xPositionOfControlBeingTested, + yPositionOfControlBeingTested, + 0.0f ), 0.0001f, TEST_LOCATION ); + + tet_infoline("Test Child Actor Size"); + DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::SIZE ), Vector3( 40.0f + CONTROL_PADDING.start + CONTROL_PADDING.end, + 40.0f + CONTROL_PADDING.top + CONTROL_PADDING.bottom, + 0.0f ), 0.0001f, TEST_LOCATION ); + + DALI_TEST_EQUALS( controls[1].GetProperty( Actor::Property::SIZE ), Vector3( 60.0f + CONTROL_PADDING.start + CONTROL_PADDING.end, + 40.0f + CONTROL_PADDING.top + CONTROL_PADDING.bottom, + 0.0f ), 0.0001f, TEST_LOCATION ); + + DALI_TEST_EQUALS( controls[2].GetProperty( Actor::Property::SIZE ), Vector3( 80.0f + CONTROL_PADDING.start + CONTROL_PADDING.end , + 40.0f + CONTROL_PADDING.top + CONTROL_PADDING.bottom, + 0.0f ), 0.0001f, TEST_LOCATION ); + + DALI_TEST_EQUALS( controls[3].GetProperty( Actor::Property::SIZE ), Vector3( 100.0f + CONTROL_PADDING.start + CONTROL_PADDING.end, + 40.0f + CONTROL_PADDING.top + CONTROL_PADDING.bottom, + 0.0f ), 0.0001f, TEST_LOCATION ); + + END_TEST; +} + + +int UtcDaliLayouting_HboxLayout_Padding03(void) +{ + ToolkitTestApplication application; + tet_infoline("UtcDaliLayouting_HboxLayout_Padding03 - Adding Changing padding on a single child"); + + Stage stage = Stage::GetCurrent(); + auto hbox = Control::New(); + auto hboxLayout = HboxLayout::New(); + DevelControl::SetLayout( hbox, hboxLayout ); + hbox.SetName( "HBox"); + + std::vector< Control > controls; + controls.push_back( CreateLeafControl( 40, 40 ) ); + controls.push_back( CreateLeafControl( 40, 40 ) ); + controls.push_back( CreateLeafControl( 40, 40 ) ); + + const Extents CONTROL_PADDING = Extents(5, 10, 20, 2 ); + tet_printf( "\nAdding Padding to control at index 1 \n" ); + controls[1].SetProperty(Toolkit::Control::Property::PADDING, CONTROL_PADDING ); + + for( auto&& iter : controls ) + { + hbox.Add( iter ); + } + hbox.SetParentOrigin( ParentOrigin::CENTER ); + hbox.SetAnchorPoint( AnchorPoint::CENTER ); + stage.Add( hbox ); + + // Ensure layouting happens + application.SendNotification(); + application.Render(); + + // hbox centers elements vertically, it fills test harness stage, which is 480x800. + // hbox left justifies elements + tet_infoline("Test Child Actor Position"); + float xPositionOfControlBeingTested = 0.0f; + DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::POSITION ), Vector3( xPositionOfControlBeingTested, + 380.0f, + 0.0f ), 0.0001f, TEST_LOCATION ); + xPositionOfControlBeingTested += 40.0f; + + DALI_TEST_EQUALS( controls[ 1 ].GetProperty( Actor::Property::POSITION ), Vector3( xPositionOfControlBeingTested, + 380.0f - ( ( CONTROL_PADDING.top + CONTROL_PADDING.bottom) * 0.5f ), 0.0f ), + 0.0001f, TEST_LOCATION ); + + xPositionOfControlBeingTested += 40.0f + CONTROL_PADDING.start + CONTROL_PADDING.end; + DALI_TEST_EQUALS( controls[2].GetProperty( Actor::Property::POSITION ), Vector3( xPositionOfControlBeingTested, 380.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + const Extents NEW_CONTROL_PADDING = Extents(10, 10, 20, 2 ); + tet_printf( "\nChanging Padding to control at index 1 \n" ); + controls[1].SetProperty(Toolkit::Control::Property::PADDING, NEW_CONTROL_PADDING ); + + // Ensure layouting happens + application.SendNotification(); + application.Render(); + + xPositionOfControlBeingTested = 0.0f; // reset + + tet_infoline("Test Child Actor Position"); + DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::POSITION ), Vector3( xPositionOfControlBeingTested, + 380.0f, + 0.0f ), 0.0001f, TEST_LOCATION ); + xPositionOfControlBeingTested += 40.0f; + + DALI_TEST_EQUALS( controls[1].GetProperty( Actor::Property::POSITION ), Vector3( xPositionOfControlBeingTested, + 380.0f - ( ( NEW_CONTROL_PADDING.top + NEW_CONTROL_PADDING.bottom) * 0.5f ), 0.0f ), + 0.0001f, TEST_LOCATION ); + + xPositionOfControlBeingTested += 40.0f + NEW_CONTROL_PADDING.start + NEW_CONTROL_PADDING.end; + tet_printf( "\nIf x position %u then change has not been processed \n", 40 + 40 + CONTROL_PADDING.start + CONTROL_PADDING.end ); + DALI_TEST_EQUALS( controls[2].GetProperty( Actor::Property::POSITION ), Vector3( xPositionOfControlBeingTested, 380.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + tet_infoline("Test Child Actor Size"); + DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::SIZE ) , Vector3( 40.0f, 40.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + DALI_TEST_EQUALS( controls[1].GetProperty( Actor::Property::SIZE ) , Vector3( 40.0f + NEW_CONTROL_PADDING.start + NEW_CONTROL_PADDING.end, + 40.0f + NEW_CONTROL_PADDING.top + NEW_CONTROL_PADDING.bottom , 0.0f ), + 0.0001f, TEST_LOCATION ); + + DALI_TEST_EQUALS( controls[2].GetProperty( Actor::Property::SIZE ) , Vector3( 40.0f, 40.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + END_TEST; +} + +// Margin Tests + +int UtcDaliLayouting_HboxLayout_Margin01(void) +{ + ToolkitTestApplication application; + tet_infoline("UtcDaliLayouting_HboxLayout_Margin01 - Adding a margin to a single child"); + + Stage stage = Stage::GetCurrent(); + auto hbox = Control::New(); + auto hboxLayout = HboxLayout::New(); + DevelControl::SetLayout( hbox, hboxLayout ); + hbox.SetName( "HBox"); + + std::vector< Control > controls; + controls.push_back( CreateLeafControl( 40, 40 ) ); + controls.push_back( CreateLeafControl( 60, 40 ) ); + controls.push_back( CreateLeafControl( 80, 40 ) ); + controls.push_back( CreateLeafControl( 100, 40 ) ); + + const Extents CONTROL_MARGIN = Extents(5, 10, 20, 0 ); + tet_printf( "\nAdding Margin to control at index 1 \n" ); + controls[1].SetProperty(Toolkit::Control::Property::MARGIN, CONTROL_MARGIN ); + + for( auto&& iter : controls ) + { + hbox.Add( iter ); + } + hbox.SetParentOrigin( ParentOrigin::CENTER ); + hbox.SetAnchorPoint( AnchorPoint::CENTER ); + stage.Add( hbox ); + + // Ensure layouting happens + application.SendNotification(); + application.Render(); + + // hbox centers elements vertically, it fills test harness stage, which is 480x800. + // hbox left justifies elements + tet_infoline("Test Child Actor Position"); + auto xPositionOfControlBeingTested = 0.0f; + DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::POSITION ), Vector3( xPositionOfControlBeingTested, + 380.0f, + 0.0f ), 0.0001f, TEST_LOCATION ); + xPositionOfControlBeingTested += 40.0f + CONTROL_MARGIN.start; + + DALI_TEST_EQUALS( controls[1].GetProperty( Actor::Property::POSITION ), Vector3( xPositionOfControlBeingTested, + 380.0f + CONTROL_MARGIN.top, 0.0f ), + 0.0001f, TEST_LOCATION ); + + xPositionOfControlBeingTested += 60.0f + CONTROL_MARGIN.end; + DALI_TEST_EQUALS( controls[2].GetProperty( Actor::Property::POSITION ), Vector3( xPositionOfControlBeingTested, 380.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + xPositionOfControlBeingTested += 80.0f; + DALI_TEST_EQUALS( controls[3].GetProperty( Actor::Property::POSITION ), Vector3( xPositionOfControlBeingTested,380.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + tet_infoline("Test Child Actor Size is the same after Margin added"); + DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::SIZE ), Vector3( 40.0f, 40.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( controls[1].GetProperty( Actor::Property::SIZE ), Vector3( 60.0f, 40.0f , 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( controls[2].GetProperty( Actor::Property::SIZE ), Vector3( 80.0f, 40.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( controls[3].GetProperty( Actor::Property::SIZE ), Vector3( 100.0f, 40.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + END_TEST; +} + int UtcDaliLayouting_VboxLayout01(void) { @@ -446,10 +769,10 @@ int UtcDaliLayouting_VboxLayout01(void) vbox.SetAnchorPoint( AnchorPoint::CENTER ); stage.Add( vbox ); - controls[2].SetProperty( Toolkit::LayoutBase::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); + controls[2].SetProperty( Toolkit::LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); // Check it. - DALI_TEST_EQUALS( controls[2].GetProperty( Toolkit::LayoutBase::ChildProperty::WIDTH_SPECIFICATION ), Property::Value( ChildLayoutData::MATCH_PARENT ), TEST_LOCATION ); + DALI_TEST_EQUALS( controls[2].GetProperty( Toolkit::LayoutItem::ChildProperty::WIDTH_SPECIFICATION ), Property::Value( ChildLayoutData::MATCH_PARENT ), TEST_LOCATION ); // Ensure layouting happens application.SendNotification(); @@ -492,8 +815,8 @@ int UtcDaliLayouting_VboxLayout02(void) vbox.SetName( "Vbox"); hbox.Add( vbox ); - vbox.SetProperty( Toolkit::LayoutBase::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); - vbox.SetProperty( Toolkit::LayoutBase::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); + vbox.SetProperty( Toolkit::LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); + vbox.SetProperty( Toolkit::LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); std::vector< Control > controls; controls.push_back( CreateLeafControl( 40, 40 ) ); @@ -508,10 +831,10 @@ int UtcDaliLayouting_VboxLayout02(void) vbox.SetParentOrigin( ParentOrigin::CENTER ); vbox.SetAnchorPoint( AnchorPoint::CENTER ); - controls[2].SetProperty( Toolkit::LayoutBase::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); + controls[2].SetProperty( Toolkit::LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); // Check it. - DALI_TEST_EQUALS( controls[2].GetProperty( Toolkit::LayoutBase::ChildProperty::WIDTH_SPECIFICATION ), Property::Value( ChildLayoutData::MATCH_PARENT ), TEST_LOCATION ); + DALI_TEST_EQUALS( controls[2].GetProperty( Toolkit::LayoutItem::ChildProperty::WIDTH_SPECIFICATION ), Property::Value( ChildLayoutData::MATCH_PARENT ), TEST_LOCATION ); // Ensure layouting happens application.SendNotification(); @@ -566,8 +889,8 @@ int UtcDaliLayouting_VboxLayout03(void) vbox.SetName( "Vbox"); hbox.Add( vbox ); - vbox.SetProperty( Toolkit::LayoutBase::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); - vbox.SetProperty( Toolkit::LayoutBase::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); + vbox.SetProperty( Toolkit::LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); + vbox.SetProperty( Toolkit::LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); std::vector< Control > controls; controls.push_back( CreateLeafControl( 40, 40 ) ); @@ -582,10 +905,10 @@ int UtcDaliLayouting_VboxLayout03(void) vbox.SetParentOrigin( ParentOrigin::CENTER ); vbox.SetAnchorPoint( AnchorPoint::CENTER ); - controls[2].SetProperty( Toolkit::LayoutBase::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); + controls[2].SetProperty( Toolkit::LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); // Check it. - DALI_TEST_EQUALS( controls[2].GetProperty( Toolkit::LayoutBase::ChildProperty::WIDTH_SPECIFICATION ), Property::Value( ChildLayoutData::MATCH_PARENT ), TEST_LOCATION ); + DALI_TEST_EQUALS( controls[2].GetProperty( Toolkit::LayoutItem::ChildProperty::WIDTH_SPECIFICATION ), Property::Value( ChildLayoutData::MATCH_PARENT ), TEST_LOCATION ); // Ensure layouting happens application.SendNotification();