Merge "Controls are LayoutGroups instead of LayoutItems" into devel/master
authorAdeel Kazmi <adeel.kazmi@samsung.com>
Fri, 24 Aug 2018 11:18:59 +0000 (11:18 +0000)
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>
Fri, 24 Aug 2018 11:19:00 +0000 (11:19 +0000)
1  2 
automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp

@@@ -2304,3 -2047,235 +2323,235 @@@ int UtcDaliLayouting_SetLayoutOrder02(v
  
    END_TEST;
  }
 -}
+ int UtcDaliLayouting_LayoutGroup01(void)
+ {
+   ToolkitTestApplication application;
+   tet_infoline("UtcDaliLayouting_LayoutGroup01 - Test adding a control to a layout then adding a TextLabel to that control");
+   Control rootControl;
+   SetupRootLayoutControl( rootControl );
+   // Create a parent layout
+   auto hbox = Control::New();
+   auto hboxLayout = LinearLayout::New();
+   hbox.SetName( "HBox");
+   rootControl.Add( hbox );
+   DevelControl::SetLayout( hbox, hboxLayout );
+   hbox.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, 600 );
+   hbox.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION,  ChildLayoutData::WRAP_CONTENT );
+   hbox.SetAnchorPoint( AnchorPoint::TOP_LEFT );  // LinearLayout will eventually do this internally.
+   tet_infoline("Add a control without SetLayout being called");
+   auto control = Control::New();
+   control.SetName("Control1");
+   hbox.Add( control );
+   control.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::MATCH_PARENT );
+   control.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION,  ChildLayoutData::WRAP_CONTENT );
+   tet_infoline("Add a Textlabel to the control");
+   auto textLabel = TextLabel::New("Test text");
+   textLabel.SetName("TextLabel");
+   control.Add( textLabel );
+   // Ensure layouting happens
+   application.SendNotification();
+   application.Render();
+   tet_infoline("Test text is it's natural size");
+   DALI_TEST_EQUALS( textLabel.GetProperty<Vector3>( Actor::Property::SIZE ), Vector3( 230.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION );
+   tet_infoline("Test control is width of it's parent and height of it's child");
+   DALI_TEST_EQUALS( control.GetProperty<Vector3>( Actor::Property::SIZE ), Vector3( 600.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION );
+   END_TEST;
+ }
+ int UtcDaliLayouting_LayoutGroup02(void)
+ {
+   ToolkitTestApplication application;
+   tet_infoline("UtcDaliLayouting_LayoutGroup02 - Test control is the size of it's largest child");
+   Control rootControl;
+   SetupRootLayoutControl( rootControl );
+   // Create a parent layout
+   auto hbox = Control::New();
+   auto hboxLayout = LinearLayout::New();
+   hbox.SetName( "HBox");
+   rootControl.Add( hbox );
+   DevelControl::SetLayout( hbox, hboxLayout );
+   hbox.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, 600 );
+   hbox.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION,  ChildLayoutData::WRAP_CONTENT );
+   hbox.SetAnchorPoint( AnchorPoint::TOP_LEFT );  // LinearLayout will eventually do this internally.
+   tet_infoline("Add a control without SetLayout being called");
+   auto control = Control::New();
+   control.SetName("Control1");
+   hbox.Add( control );
+   control.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::WRAP_CONTENT );
+   control.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION,  ChildLayoutData::WRAP_CONTENT );
+   tet_infoline("Add a Textlabel to the control");
+   auto textLabel = TextLabel::New("Test text");
+   textLabel.SetName("TextLabel");
+   control.Add( textLabel );
+   tet_infoline("Add another  Textlabel to the control");
+   auto largeTextLabel = TextLabel::New("Test large text");
+   largeTextLabel.SetName("TextLabel-Large");
+   control.Add( largeTextLabel );
+   // Ensure layouting happens
+   application.SendNotification();
+   application.Render();
+   tet_infoline("Test text is it's natural size");
+   DALI_TEST_EQUALS( textLabel.GetProperty<Vector3>( Actor::Property::SIZE ), Vector3( 230.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION );
+   tet_infoline("Test text is centered in the control, the control is the size of the largest child");
+   DALI_TEST_EQUALS( textLabel.GetProperty<Vector3>( Actor::Property::POSITION ), Vector3( 0.0f, 0.0f, 0.0f ), 0.0001f, TEST_LOCATION );
+   tet_infoline("Test large text is it's natural size");
+   DALI_TEST_EQUALS( largeTextLabel.GetProperty<Vector3>( Actor::Property::SIZE ), Vector3( 382.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION );
+   tet_infoline("Test text is aligned to start as is the size of the control");
+   DALI_TEST_EQUALS( largeTextLabel.GetProperty<Vector3>( Actor::Property::POSITION ), Vector3( 0.0f, 0.0f, 0.0f ), 0.0001f, TEST_LOCATION );
+   tet_infoline("Test control is width of it's parent and height of it's largest child");
+   DALI_TEST_EQUALS( control.GetProperty<Vector3>( Actor::Property::SIZE ), Vector3( 382.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION );
+   END_TEST;
+ }
+ int UtcDaliLayouting_LayoutGroup03(void)
+ {
+   ToolkitTestApplication application;
+   tet_infoline("UtcDaliLayouting_LayoutGroup03 - Test control witha LayoutGroup as a leaf");
+   Control rootControl;
+   SetupRootLayoutControl( rootControl );
+   // Create a parent layout
+   auto hbox = Control::New();
+   auto hboxLayout = LinearLayout::New();
+   hbox.SetName( "HBox");
+   rootControl.Add( hbox );
+   DevelControl::SetLayout( hbox, hboxLayout );
+   hbox.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, 600 );
+   hbox.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION,  ChildLayoutData::WRAP_CONTENT );
+   hbox.SetAnchorPoint( AnchorPoint::TOP_LEFT );  // LinearLayout will eventually do this internally.
+   tet_infoline("Add a control without SetLayout being called");
+   auto control = Control::New();
+   control.SetName("Control1");
+   hbox.Add( control );
+   control.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::MATCH_PARENT );
+   control.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION,  100 );
+   // Ensure layouting happens
+   application.SendNotification();
+   application.Render();
+   tet_infoline("Test control is width of it's parent and exact given height");
+   DALI_TEST_EQUALS( control.GetProperty<Vector3>( Actor::Property::SIZE ), Vector3( 600.0f, 100.0f, 0.0f ), 0.0001f, TEST_LOCATION );
+   DALI_TEST_EQUALS( control.GetProperty<Vector3>( Actor::Property::POSITION ), Vector3( 0.0f, 0.0f, 0.0f ), 0.0001f, TEST_LOCATION );
+   END_TEST;
+ }
+ int UtcDaliLayouting_LayoutGroupWithPadding01(void)
+ {
+   ToolkitTestApplication application;
+   tet_infoline("UtcDaliLayouting_LayoutGroupWithPadding01 - Test adding a control to a layout that has padding");
+   Control rootControl;
+   SetupRootLayoutControl( rootControl );
+   // Create a parent layout
+   auto hbox = Control::New();
+   auto hboxLayout = LinearLayout::New();
+   hbox.SetName( "HBox");
+   rootControl.Add( hbox );
+   DevelControl::SetLayout( hbox, hboxLayout );
+   hbox.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, 600 );
+   hbox.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION,  ChildLayoutData::WRAP_CONTENT );
+   hbox.SetAnchorPoint( AnchorPoint::TOP_LEFT );  // LinearLayout will eventually do this internally.
+   tet_infoline("Add a control without SetLayout being called");
+   auto control = Control::New();
+   control.SetName("Control1");
+   hbox.Add( control );
+   control.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::WRAP_CONTENT );
+   control.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION,  ChildLayoutData::WRAP_CONTENT );
+   const Extents CONTROL_PADDING = Extents(5, 10, 20, 2 );
+   tet_printf( "Adding Padding to control");
+   control.SetProperty( Toolkit::Control::Property::PADDING, CONTROL_PADDING );
+   tet_infoline("Add a Textlabel to the control");
+   auto textLabel = TextLabel::New("Test text");
+   textLabel.SetName("TextLabel");
+   control.Add( textLabel );
+   // Ensure layouting happens
+   application.SendNotification();
+   application.Render();
+   tet_infoline("Test text is it's natural size");
+   DALI_TEST_EQUALS( textLabel.GetProperty<Vector3>( Actor::Property::SIZE ), Vector3( 230.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION );
+   tet_infoline("Test control is size of it's child and control it's own padding");
+   DALI_TEST_EQUALS( control.GetProperty<Vector3>( Actor::Property::SIZE ), Vector3( 245.0f, 86.0f, 0.0f ), 0.0001f, TEST_LOCATION );
+   END_TEST;
+ }
+ int UtcDaliLayouting_LayoutGroupWithChildMargin01(void)
+ {
+   ToolkitTestApplication application;
+   tet_infoline("UtcDaliLayouting_LayoutGroupWithChildMargin01 - Test adding a control with padding to a layout that has padding");
+   Control rootControl;
+   SetupRootLayoutControl( rootControl );
+   // Create a parent layout
+   auto hbox = Control::New();
+   auto hboxLayout = LinearLayout::New();
+   hbox.SetName( "HBox");
+   rootControl.Add( hbox );
+   DevelControl::SetLayout( hbox, hboxLayout );
+   hbox.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, 600 );
+   hbox.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION,  ChildLayoutData::WRAP_CONTENT );
+   hbox.SetAnchorPoint( AnchorPoint::TOP_LEFT );  // LinearLayout will eventually do this internally.
+   tet_infoline("Add a control without SetLayout being called");
+   auto control = Control::New();
+   control.SetName("Control1");
+   hbox.Add( control );
+   control.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::WRAP_CONTENT );
+   control.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION,  ChildLayoutData::WRAP_CONTENT );
+   const Extents CONTROL_PADDING = Extents(5, 10, 20, 2 );
+   tet_printf( "Adding Padding to control");
+   control.SetProperty( Toolkit::Control::Property::PADDING, CONTROL_PADDING );
+   tet_infoline("Add a Textlabel to the control");
+   auto textLabel = TextLabel::New("Test text");
+   const Extents CHILD_MARGIN = Extents( 10, 0, 5, 0 );
+   textLabel.SetProperty( Toolkit::Control::Property::MARGIN, CHILD_MARGIN );
+   textLabel.SetName("TextLabel");
+   control.Add( textLabel );
+   // Ensure layouting happens
+   application.SendNotification();
+   application.Render();
+   tet_infoline("Test text is it's natural size");
+   DALI_TEST_EQUALS( textLabel.GetProperty<Vector3>( Actor::Property::SIZE ), Vector3( 230.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION );
+   tet_infoline("Test control is width of it's parent and height of it's child");
+   DALI_TEST_EQUALS( control.GetProperty<Vector3>( Actor::Property::SIZE ), Vector3( 255.0f, 91.0f, 0.0f ), 0.0001f, TEST_LOCATION );
+   END_TEST;
++}