Refactored more code into Actor::Relayouter
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / dali-test-suite-utils / test-custom-actor.h
index 97dffcd..db0c78f 100644 (file)
@@ -2,7 +2,7 @@
 #define TEST_CUSTOM_ACTOR_H
 
 /*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  *
  */
 
-#include <dali/public-api/dali-core.h>
 #include <dali/devel-api/object/property-helper-devel.h>
 #include <dali/integration-api/scene.h>
+#include <dali/public-api/dali-core.h>
 
-extern std::vector< std::string > MasterCallStack;
-extern bool gOnRelayout;
+extern std::vector<std::string> MasterCallStack;
+extern bool                     gOnRelayout;
 
 namespace Test
 {
@@ -41,7 +41,7 @@ public:
   enum PropertyRange
   {
     PROPERTY_START_INDEX = Dali::PROPERTY_REGISTRATION_START_INDEX,
-    PROPERTY_END_INDEX =   PROPERTY_START_INDEX + 1000
+    PROPERTY_END_INDEX   = PROPERTY_START_INDEX + 1000
   };
 
   struct Property
@@ -56,68 +56,67 @@ public:
   TestCustomActor();
   static TestCustomActor New();
   static TestCustomActor NewNegoSize();
-  static TestCustomActor NewVariant1( Actor childToAdd );
+  static TestCustomActor NewVariant1(Actor childToAdd);
   static TestCustomActor NewVariant2();
-  static TestCustomActor NewVariant3( Actor childToAdd );
+  static TestCustomActor NewVariant3(Actor childToAdd);
   static TestCustomActor NewVariant4();
-  static TestCustomActor NewVariant5( Dali::Integration::Scene scene );
-  static TestCustomActor NewVariant6( Dali::Integration::Scene scene );
-  static TestCustomActor NewVariant7( const char* name );
-  static TestCustomActor NewVariant8( Actor rival );
-  static TestCustomActor DownCast( Dali::BaseHandle handle );
+  static TestCustomActor NewVariant5(Dali::Integration::Scene scene);
+  static TestCustomActor NewVariant6(Dali::Integration::Scene scene);
+  static TestCustomActor NewVariant7(const char* name);
+  static TestCustomActor NewVariant8(Actor rival);
+  static TestCustomActor DownCast(Dali::BaseHandle handle);
 
   virtual ~TestCustomActor();
   Impl::TestCustomActor& GetImpl();
 
-  TestCustomActor( TestCustomActor&& rhs ) = default;
-  TestCustomActor& operator=( TestCustomActor&& rhs ) = default;
-
-  std::vector< std::string >& GetMethodsCalled();
-  void ResetCallStack();
-  void SetDaliProperty(std::string s);
-  Dali::Vector3 GetSize();
-  Dali::Vector3 GetTargetSize();
-  virtual Dali::Vector3 GetNaturalSize();
-  virtual float GetHeightForWidth( float width );
-  virtual float GetWidthForHeight( float height );
-  virtual void OnRelayout( const Dali::Vector2& size, Dali::RelayoutContainer& container );
-  virtual void OnLayoutNegotiated( float size, Dali::Dimension::Type dimension );
-  virtual void OnCalculateRelayoutSize( Dali::Dimension::Type dimension );
-  void TestRelayoutRequest();
-  float TestGetHeightForWidthBase( float width );
-  float TestGetWidthForHeightBase( float height );
-  float TestCalculateChildSizeBase( const Dali::Actor& child, Dali::Dimension::Type dimension );
-  bool TestRelayoutDependentOnChildrenBase( Dali::Dimension::Type dimension );
-  uint32_t GetDepth();
+  TestCustomActor(TestCustomActor&& rhs) = default;
+  TestCustomActor& operator=(TestCustomActor&& rhs) = default;
+
+  std::vector<std::string>& GetMethodsCalled();
+  void                      ResetCallStack();
+  void                      SetDaliProperty(std::string s);
+  Dali::Vector3             GetSize();
+  Dali::Vector3             GetTargetSize();
+  virtual Dali::Vector3     GetNaturalSize();
+  virtual float             GetHeightForWidth(float width);
+  virtual float             GetWidthForHeight(float height);
+  virtual void              OnRelayout(const Dali::Vector2& size, Dali::RelayoutContainer& container);
+  virtual void              OnLayoutNegotiated(float size, Dali::Dimension::Type dimension);
+  virtual void              OnCalculateRelayoutSize(Dali::Dimension::Type dimension);
+  void                      TestRelayoutRequest();
+  float                     TestGetHeightForWidthBase(float width);
+  float                     TestGetWidthForHeightBase(float height);
+  float                     TestCalculateChildSizeBase(const Dali::Actor& child, Dali::Dimension::Type dimension);
+  bool                      TestRelayoutDependentOnChildrenBase(Dali::Dimension::Type dimension);
+  uint32_t                  GetDepth();
+  void                      SetTransparent(bool transparent);
+  bool                      IsTransparent();
 
 private:
-  TestCustomActor( Impl::TestCustomActor& impl );
+  TestCustomActor(Impl::TestCustomActor& impl);
   explicit TestCustomActor(Dali::Internal::CustomActor* internal);
 };
 
-
 namespace DevelTestCustomActor
 {
 namespace Property
 {
 enum Type
 {
-  TEST_PROPERTY1 = Test::TestCustomActor::Property::TEST_PROPERTY1,
-  TEST_PROPERTY2 = Test::TestCustomActor::Property::TEST_PROPERTY2,
-  DEVEL_TEST_PROPERTY3 = TEST_PROPERTY2+1,
-  DEVEL_TEST_PROPERTY4 = TEST_PROPERTY2+2,
-  DEVEL_TEST_PROPERTY5 = TEST_PROPERTY2+3,
-  DEVEL_TEST_PROPERTY6 = TEST_PROPERTY2+4
+  TEST_PROPERTY1       = Test::TestCustomActor::Property::TEST_PROPERTY1,
+  TEST_PROPERTY2       = Test::TestCustomActor::Property::TEST_PROPERTY2,
+  DEVEL_TEST_PROPERTY3 = TEST_PROPERTY2 + 1,
+  DEVEL_TEST_PROPERTY4 = TEST_PROPERTY2 + 2,
+  DEVEL_TEST_PROPERTY5 = TEST_PROPERTY2 + 3,
+  DEVEL_TEST_PROPERTY6 = TEST_PROPERTY2 + 4
 };
 
 } // Namespace Property
 } // Namespace DevelTestCustomActor
 
-
 // TypeRegistry needs custom actor Implementations to have the same name (namespaces are ignored so we use one here)
 namespace Impl
 {
-
 struct TestCustomActor : public Dali::CustomActorImpl
 {
 public:
@@ -127,45 +126,59 @@ public:
   TestCustomActor();
   TestCustomActor(bool nego);
   virtual ~TestCustomActor();
-  void Initialize( const char* name = NULL );
-  virtual void OnInitialize( const char* name );
-  void ResetCallStack();
-  void AddToCallStacks( const char* method );
-  void OnSceneConnection( int depth ) override;
-  void OnSceneDisconnection() override;
-  void OnChildAdd(Dali::Actor& child) override;
-  void OnChildRemove(Dali::Actor& child) override;
-  void OnPropertySet( Dali::Property::Index index, const Dali::Property::Value& propertyValue ) override;
-  void OnSizeSet(const Dali::Vector3& targetSize) override;
-  void OnSizeAnimation(Dali::Animation& animation, const Dali::Vector3& targetSize) override;
-  virtual void OnKeyInputFocusGained();
-  virtual void OnKeyInputFocusLost();
+  void          Initialize(const char* name = NULL);
+  virtual void  OnInitialize(const char* name);
+  void          ResetCallStack();
+  void          AddToCallStacks(const char* method);
+  void          OnSceneConnection(int depth) override;
+  void          OnSceneDisconnection() override;
+  void          OnChildAdd(Dali::Actor& child) override;
+  void          OnChildRemove(Dali::Actor& child) override;
+  void          OnPropertySet(Dali::Property::Index index, const Dali::Property::Value& propertyValue) override;
+  void          OnSizeSet(const Dali::Vector3& targetSize) override;
+  void          OnSizeAnimation(Dali::Animation& animation, const Dali::Vector3& targetSize) override;
+  virtual void  OnKeyInputFocusGained();
+  virtual void  OnKeyInputFocusLost();
   Dali::Vector3 GetNaturalSize() override;
-  float GetHeightForWidth( float width ) override;
-  float GetWidthForHeight( float height ) override;
-  void OnRelayout( const Dali::Vector2& size, Dali::RelayoutContainer& container ) override;
-  void OnSetResizePolicy( Dali::ResizePolicy::Type policy, Dali::Dimension::Type dimension ) override;
-  void OnCalculateRelayoutSize( Dali::Dimension::Type dimension ) override;
-  float CalculateChildSize( const Dali::Actor& child, Dali::Dimension::Type dimension ) override;
-  void OnLayoutNegotiated( float size, Dali::Dimension::Type dimension ) override;
-  bool RelayoutDependentOnChildren( Dali::Dimension::Type dimension = Dali::Dimension::ALL_DIMENSIONS ) override;
-  static void SetProperty( Dali::BaseObject* object, Dali::Property::Index index, const Dali::Property::Value& value );
-  static Dali::Property::Value GetProperty( Dali::BaseObject* object, Dali::Property::Index index );
-
-  void SetDaliProperty(std::string s);
-  void TestRelayoutRequest();
-  float TestGetHeightForWidthBase( float width );
-  float TestGetWidthForHeightBase( float height );
-  float TestCalculateChildSizeBase( const Dali::Actor& child, Dali::Dimension::Type dimension );
-  bool TestRelayoutDependentOnChildrenBase( Dali::Dimension::Type dimension );
+  void          SetNaturalSize(const Dali::Vector3& size);
+  void          SetHeightForWidthFactor(float factor)
+  {
+    mH4Wfactor = factor;
+  }
+  void SetWidthForHeightFactor(float factor)
+  {
+    mW4Hfactor = factor;
+  }
+  float                        GetHeightForWidth(float width) override;
+  float                        GetWidthForHeight(float height) override;
+  void                         OnRelayout(const Dali::Vector2& size, Dali::RelayoutContainer& container) override;
+  void                         OnSetResizePolicy(Dali::ResizePolicy::Type policy, Dali::Dimension::Type dimension) override;
+  void                         OnCalculateRelayoutSize(Dali::Dimension::Type dimension) override;
+  float                        CalculateChildSize(const Dali::Actor& child, Dali::Dimension::Type dimension) override;
+  void                         OnLayoutNegotiated(float size, Dali::Dimension::Type dimension) override;
+  bool                         RelayoutDependentOnChildren(Dali::Dimension::Type dimension = Dali::Dimension::ALL_DIMENSIONS) override;
+  void                         SetTransparent(bool transparent);
+  bool                         IsTransparent() const;
+  static void                  SetProperty(Dali::BaseObject* object, Dali::Property::Index index, const Dali::Property::Value& value);
+  static Dali::Property::Value GetProperty(Dali::BaseObject* object, Dali::Property::Index index);
+
+  void  SetDaliProperty(std::string s);
+  void  TestRelayoutRequest();
+  float TestGetHeightForWidthBase(float width);
+  float TestGetWidthForHeightBase(float height);
+  float TestCalculateChildSizeBase(const Dali::Actor& child, Dali::Dimension::Type dimension);
+  bool  TestRelayoutDependentOnChildrenBase(Dali::Dimension::Type dimension);
 
 public:
-  Dali::Property::Index mDaliProperty;
-  std::vector< std::string > mMethodsCalled;
-  Dali::Vector3         mSizeSet;
-  Dali::Vector3         mTargetSize;
-  bool                  mNego;
-  uint32_t          mDepth;
+  Dali::Property::Index    mDaliProperty;
+  std::vector<std::string> mMethodsCalled;
+  Dali::Vector3            mNaturalSize;
+  Dali::Vector3            mSizeSet;
+  Dali::Vector3            mTargetSize;
+  float                    mW4Hfactor;
+  float                    mH4Wfactor;
+  bool                     mNego;
+  uint32_t                 mDepth;
 
   float         prop1;
   Dali::Vector4 prop2;
@@ -175,21 +188,20 @@ public:
   float         develProp6;
 };
 
-inline TestCustomActor& GetImpl( Test::TestCustomActor& handle )
+inline TestCustomActor& GetImpl(Test::TestCustomActor& handle)
 {
-  DALI_ASSERT_ALWAYS( handle );
+  DALI_ASSERT_ALWAYS(handle);
   Dali::RefObject& object = handle.GetImplementation();
-  return static_cast<TestCustomActor&>( object );
+  return static_cast<TestCustomActor&>(object);
 }
 
-inline const TestCustomActor& GetImpl( const Test::TestCustomActor& handle )
+inline const TestCustomActor& GetImpl(const Test::TestCustomActor& handle)
 {
-  DALI_ASSERT_ALWAYS( handle );
+  DALI_ASSERT_ALWAYS(handle);
   const Dali::RefObject& object = handle.GetImplementation();
-  return static_cast<const TestCustomActor&>( object );
+  return static_cast<const TestCustomActor&>(object);
 }
 
-
 /**
  * Variant which adds a new child during OnSceneConnection
  */
@@ -198,19 +210,19 @@ struct TestCustomActorVariant1 : public TestCustomActor
   /**
    * Constructor
    */
-  TestCustomActorVariant1( Dali::Actor childToAdd )
-  : mChildToAdd( childToAdd )
+  TestCustomActorVariant1(Dali::Actor childToAdd)
+  : mChildToAdd(childToAdd)
   {
   }
 
   // From CustomActorImpl
-  void OnSceneConnection( int depth ) override
+  void OnSceneConnection(int depth) override
   {
     // Chain up first
-    TestCustomActor::OnSceneConnection( depth );
+    TestCustomActor::OnSceneConnection(depth);
 
     // Add the child
-    Self().Add( mChildToAdd );
+    Self().Add(mChildToAdd);
   }
 
   Dali::Actor mChildToAdd;
@@ -229,15 +241,15 @@ struct TestCustomActorVariant2 : public TestCustomActor
   }
 
   // From CustomActorImpl
-  virtual void OnSceneConnection( int depth )
+  virtual void OnSceneConnection(int depth)
   {
     // Chain up first
-    TestCustomActor::OnSceneConnection( depth );
+    TestCustomActor::OnSceneConnection(depth);
 
     // Remove all the children
-    for( uint32_t i=0, num=Self().GetChildCount(); i<num; ++i )
+    for(uint32_t i = 0, num = Self().GetChildCount(); i < num; ++i)
     {
-      Self().Remove( Self().GetChildAt(0) );
+      Self().Remove(Self().GetChildAt(0));
     }
   }
 };
@@ -250,8 +262,8 @@ struct TestCustomActorVariant3 : public TestCustomActor
   /**
    * Constructor
    */
-  TestCustomActorVariant3( Dali::Actor childToAdd )
-  : mChildToAdd( childToAdd )
+  TestCustomActorVariant3(Dali::Actor childToAdd)
+  : mChildToAdd(childToAdd)
   {
   }
 
@@ -262,7 +274,7 @@ struct TestCustomActorVariant3 : public TestCustomActor
     TestCustomActor::OnSceneDisconnection();
 
     // Add the child
-    Self().Add( mChildToAdd );
+    Self().Add(mChildToAdd);
   }
 
   Dali::Actor mChildToAdd;
@@ -287,9 +299,9 @@ struct TestCustomActorVariant4 : public TestCustomActor
     TestCustomActor::OnSceneDisconnection();
 
     // Remove all the children
-    for( uint32_t i=0, num=Self().GetChildCount(); i<num; ++i )
+    for(uint32_t i = 0, num = Self().GetChildCount(); i < num; ++i)
     {
-      Self().Remove( Self().GetChildAt(0) );
+      Self().Remove(Self().GetChildAt(0));
     }
   }
 };
@@ -308,16 +320,16 @@ struct TestCustomActorVariant5 : public TestCustomActor
   }
 
   // From CustomActorImpl
-  virtual void OnSceneConnection( int depth )
+  virtual void OnSceneConnection(int depth)
   {
     // Chain up first
-    TestCustomActor::OnSceneConnection( depth );
+    TestCustomActor::OnSceneConnection(depth);
 
     // Take parent off-stage
     Dali::Actor parent = Self().GetParent();
-    if ( parent )
+    if(parent)
     {
-      mScene.Remove( parent );
+      mScene.Remove(parent);
     }
   }
 
@@ -346,9 +358,9 @@ struct TestCustomActorVariant6 : public TestCustomActor
 
     // Put parent on-stage
     Dali::Actor parent = Self().GetParent();
-    if ( parent )
+    if(parent)
     {
-      mScene.Add( parent );
+      mScene.Add(parent);
     }
   }
 
@@ -368,14 +380,14 @@ struct TestCustomActorVariant7 : public TestCustomActor
   {
   }
 
-  virtual void OnInitialize( const char* name )
+  virtual void OnInitialize(const char* name)
   {
     // We need to do this early, before the OnChildAdd is recorded
-    Self().SetProperty( Dali::Actor::Property::NAME, name );
+    Self().SetProperty(Dali::Actor::Property::NAME, name);
 
     mContainer = Dali::Actor::New();
-    mContainer.SetProperty( Dali::Actor::Property::NAME, "Container" );
-    Self().Add( mContainer );
+    mContainer.SetProperty(Dali::Actor::Property::NAME, "Container");
+    Self().Add(mContainer);
   }
 
   // From CustomActorImpl
@@ -385,9 +397,9 @@ struct TestCustomActorVariant7 : public TestCustomActor
     TestCustomActor::OnChildAdd(child);
 
     // Reparent child
-    if ( child != mContainer )
+    if(child != mContainer)
     {
-      mContainer.Add( child );
+      mContainer.Add(child);
     }
   }
 
@@ -402,8 +414,8 @@ struct TestCustomActorVariant8 : public TestCustomActor
   /**
    * Constructor
    */
-  TestCustomActorVariant8( Dali::Actor rival )
-  : mRivalContainer( rival )
+  TestCustomActorVariant8(Dali::Actor rival)
+  : mRivalContainer(rival)
   {
   }
 
@@ -413,7 +425,7 @@ struct TestCustomActorVariant8 : public TestCustomActor
     // Chain up first
     TestCustomActor::OnChildRemove(child);
 
-    mRivalContainer.Remove( child ); // attempt to block reparenting to rival (should be a NOOP)
+    mRivalContainer.Remove(child); // attempt to block reparenting to rival (should be a NOOP)
   }
 
   Dali::Actor mRivalContainer;
@@ -423,12 +435,11 @@ struct TestCustomActorVariant8 : public TestCustomActor
 class SimpleTestCustomActor : public Dali::CustomActorImpl
 {
 public:
-
   /**
    * Constructor
    */
   SimpleTestCustomActor()
-  : CustomActorImpl( ActorFlags( DISABLE_SIZE_NEGOTIATION ) )
+  : CustomActorImpl(ActorFlags(DISABLE_SIZE_NEGOTIATION))
   {
   }
 
@@ -440,7 +451,7 @@ public:
   }
 
   // From CustomActorImpl
-  void OnSceneConnection( int depth ) override
+  void OnSceneConnection(int depth) override
   {
   }
   void OnSceneDisconnection() override
@@ -466,41 +477,41 @@ public:
   }
   Dali::Vector3 GetNaturalSize() override
   {
-    return Dali::Vector3( 0.0f, 0.0f, 0.0f );
+    return Dali::Vector3(0.0f, 0.0f, 0.0f);
   }
 
-  float GetHeightForWidth( float width ) override
+  float GetHeightForWidth(float width) override
   {
     return 0.0f;
   }
 
-  float GetWidthForHeight( float height ) override
+  float GetWidthForHeight(float height) override
   {
     return 0.0f;
   }
 
-  void OnRelayout( const Dali::Vector2& size, Dali::RelayoutContainer& container ) override
+  void OnRelayout(const Dali::Vector2& size, Dali::RelayoutContainer& container) override
   {
   }
 
-  void OnSetResizePolicy( Dali::ResizePolicy::Type policy, Dali::Dimension::Type dimension ) override
+  void OnSetResizePolicy(Dali::ResizePolicy::Type policy, Dali::Dimension::Type dimension) override
   {
   }
 
-  void OnCalculateRelayoutSize( Dali::Dimension::Type dimension ) override
+  void OnCalculateRelayoutSize(Dali::Dimension::Type dimension) override
   {
   }
 
-  float CalculateChildSize( const Dali::Actor& child, Dali::Dimension::Type dimension ) override
+  float CalculateChildSize(const Dali::Actor& child, Dali::Dimension::Type dimension) override
   {
     return 0.0f;
   }
 
-  void OnLayoutNegotiated( float size, Dali::Dimension::Type dimension ) override
+  void OnLayoutNegotiated(float size, Dali::Dimension::Type dimension) override
   {
   }
 
-  bool RelayoutDependentOnChildren( Dali::Dimension::Type dimension = Dali::Dimension::ALL_DIMENSIONS ) override
+  bool RelayoutDependentOnChildren(Dali::Dimension::Type dimension = Dali::Dimension::ALL_DIMENSIONS) override
   {
     return false;
   }