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;fp=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-Layouting.cpp;h=cd82d5e3a6812084cff2d3cb192e55b7ee57394a;hp=17fc90f3e3dc43a572f8b746dbec7ad1c030f77a;hb=59314022f6789147a47a8b098433e211b6185625;hpb=a9a328dcfc54d425f08f78e16623671eb3110fed diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp index 17fc90f..cd82d5e 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp @@ -24,6 +24,8 @@ #include #include #include +#include +#include #include <../custom-layout.h> @@ -1607,7 +1609,6 @@ int UtcDaliLayouting_HboxLayout_TargetSize(void) END_TEST; } - int UtcDaliLayouting_RemoveLayout01(void) { ToolkitTestApplication application; @@ -1661,3 +1662,179 @@ int UtcDaliLayouting_RemoveLayout01(void) END_TEST; } + +int UtcDaliLayouting_LayoutChildren01(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliLayouting_LayoutChildren01"); + + Stage stage = Stage::GetCurrent(); + + auto rootControl = Control::New(); + auto absoluteLayout = AbsoluteLayout::New(); + DevelControl::SetLayout( rootControl, absoluteLayout ); + stage.Add( rootControl ); + + auto hbox = Control::New(); + auto hboxLayout = LinearLayout::New(); + DevelControl::SetLayout( hbox, hboxLayout ); + rootControl.Add( hbox ); + + DALI_TEST_EQUALS( absoluteLayout.GetChildCount(), 1, TEST_LOCATION ); + + tet_infoline("Test removal by setting empty layout to child container" ); + DevelControl::SetLayout( hbox, LayoutItem{} ); + + DALI_TEST_EQUALS( absoluteLayout.GetChildCount(), 0, TEST_LOCATION ); + + auto& hboxImpl = GetImplementation( hboxLayout ); + Handle empty; + DALI_TEST_EQUALS( hboxLayout.GetOwner(), empty, TEST_LOCATION ); + DALI_TEST_EQUALS( (void*)hboxImpl.GetParent(), (void*)nullptr, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliLayouting_LayoutChildren02(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliLayouting_LayoutChildren02"); + + Stage stage = Stage::GetCurrent(); + + auto rootControl = Control::New(); + auto absoluteLayout = AbsoluteLayout::New(); + DevelControl::SetLayout( rootControl, absoluteLayout ); + stage.Add( rootControl ); + + auto hbox = Control::New(); + auto hboxLayout = LinearLayout::New(); + DevelControl::SetLayout( hbox, hboxLayout ); + rootControl.Add( hbox ); + + DALI_TEST_EQUALS( absoluteLayout.GetChildCount(), 1, TEST_LOCATION ); + + tet_infoline("Test removal by removing child actor from parent container" ); + hbox.Unparent(); + + DALI_TEST_EQUALS( absoluteLayout.GetChildCount(), 0, TEST_LOCATION ); + + auto& hboxImpl = GetImplementation( hboxLayout ); + tet_infoline("Test child actor still has hbox layout " ); + DALI_TEST_EQUALS( (bool)hboxLayout.GetOwner(), true, TEST_LOCATION ); + + tet_infoline("Test hbox layout has no parent " ); + DALI_TEST_EQUALS( (void*)hboxImpl.GetParent(), (void*)nullptr, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliLayouting_LayoutChildren03(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliLayouting_LayoutChildren02"); + + Stage stage = Stage::GetCurrent(); + + auto rootControl = Control::New(); + auto absoluteLayout = AbsoluteLayout::New(); + DevelControl::SetLayout( rootControl, absoluteLayout ); + stage.Add( rootControl ); + + auto hbox = Control::New(); + auto hboxLayout = LinearLayout::New(); + DevelControl::SetLayout( hbox, hboxLayout ); + rootControl.Add( hbox ); + + DALI_TEST_EQUALS( absoluteLayout.GetChildCount(), 1, TEST_LOCATION ); + + tet_infoline("Test removal by removing child layout from parent layout" ); + absoluteLayout.Remove( hboxLayout ); + + DALI_TEST_EQUALS( absoluteLayout.GetChildCount(), 0, TEST_LOCATION ); + + auto& hboxImpl = GetImplementation( hboxLayout ); + + tet_infoline("Check child actor has orphaned layout (Moving child keeps old layout)"); + DALI_TEST_EQUALS( hboxLayout.GetOwner(), hbox, TEST_LOCATION ); + DALI_TEST_EQUALS( DevelControl::GetLayout(hbox), hboxLayout, TEST_LOCATION ); + + tet_infoline("Check orphaned layout has no parent"); + DALI_TEST_EQUALS( (void*)hboxImpl.GetParent(), (void*)nullptr, TEST_LOCATION ); + + END_TEST; +} + + +int UtcDaliLayouting_LayoutChildren04(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliLayouting_LayoutChildren03"); + + Stage stage = Stage::GetCurrent(); + + auto rootControl = Control::New(); + auto absoluteLayout = AbsoluteLayout::New(); + DevelControl::SetLayout( rootControl, absoluteLayout ); + stage.Add( rootControl ); + + auto hbox = Control::New(); + tet_infoline("Test unparenting by adding child with no layout to parent (should auto-generate LayoutItem) "); + auto hboxLayout = LinearLayout::New(); + rootControl.Add( hbox ); + + DALI_TEST_EQUALS( absoluteLayout.GetChildCount(), 1, TEST_LOCATION ); + + tet_infoline("Then setting a layout on the child container"); + DevelControl::SetLayout( hbox, hboxLayout ); + + DALI_TEST_EQUALS( absoluteLayout.GetChildCount(), 1, TEST_LOCATION ); + + auto& hboxImpl = GetImplementation( hboxLayout ); + auto& absImpl = GetImplementation( absoluteLayout ); + DALI_TEST_EQUALS( hboxLayout.GetOwner(), Handle(hbox), TEST_LOCATION ); + DALI_TEST_EQUALS( hboxImpl.GetParent(), (Dali::Toolkit::Internal::LayoutParent*)&absImpl, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliLayouting_SetLayoutOrder(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliLayouting_SetLayoutOrder - Call SetLayout after adding the control to the root layout"); + + Stage stage = Stage::GetCurrent(); + + auto rootControl = Control::New(); + auto absoluteLayout = AbsoluteLayout::New(); + DevelControl::SetLayout( rootControl, absoluteLayout ); + rootControl.SetName( "AbsoluteLayout" ); + stage.Add( rootControl ); + + tet_infoline(" UtcDaliLayouting_SetLayoutOrder - Creating control"); + auto hbox = Control::New(); + auto hboxLayout = LinearLayout::New(); + hbox.SetName( "HBox"); + + tet_infoline(" UtcDaliLayouting_SetLayoutOrder - Add control to root layout"); + rootControl.Add( hbox ); + + tet_infoline(" UtcDaliLayouting_SetLayoutOrder - Set layout to control AFTER control added to root"); + DevelControl::SetLayout( hbox, hboxLayout ); + + // Add a Child control + std::vector< Control > controls; + controls.push_back( CreateLeafControl( 100, 100 ) ); // Single control + for( auto&& iter : controls ) + { + hbox.Add( iter ); + } + + // Ensure layouting happens + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::SIZE ), Vector3( 100.0f, 100.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + END_TEST; +}