Stop setting crazy Z value when SetSize(width,height) is used
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-Actor.cpp
index 295965e..d8cc27d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2015 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.
@@ -18,6 +18,7 @@
 #include "assert.h"
 #include <dali/public-api/dali-core.h>
 #include <string>
+#include <cfloat>   // For FLT_MAX
 #include <dali/integration-api/events/touch-event-integ.h>
 #include <dali/integration-api/events/hover-event-integ.h>
 #include <dali-test-suite-utils.h>
@@ -41,7 +42,6 @@ void utc_dali_actor_cleanup(void)
 namespace
 {
 bool gTouchCallBackCalled=false;
-bool gTouchCallBack2Called=false;
 bool gHoverCallBackCalled=false;
 
 /**
@@ -56,7 +56,6 @@ int SimulateTouchForSetOverlayHitTest(TestApplication& app)
   app.Render(1);
 
   gTouchCallBackCalled = false;
-  gTouchCallBack2Called = false;
 
   // simulate a touch event
   Dali::TouchPoint point( 0, TouchPoint::Down, 25.0f, 25.0f );
@@ -112,13 +111,6 @@ static bool TestCallback(Actor actor, const TouchEvent& event)
   END_TEST;
 }
 
-static bool TestCallback2(Actor actor, const TouchEvent& event)
-{
-  gTouchCallBack2Called = true;
-  return false;
-  END_TEST;
-}
-
 static bool TestCallback3(Actor actor, const HoverEvent& event)
 {
   gHoverCallBackCalled = true;
@@ -163,7 +155,16 @@ struct PositionComponentConstraint
   }
 };
 
+// OnRelayout
+
+static bool gOnRelayoutCallBackCalled = 0;
+static std::vector< std::string > gActorNamesRelayout;
 
+void OnRelayoutCallback( Actor actor )
+{
+  ++gOnRelayoutCallBackCalled;
+  gActorNamesRelayout.push_back( actor.GetName() );
+}
 
 } // anonymous namespace
 
@@ -180,7 +181,7 @@ int UtcDaliActorNew(void)
 }
 
 //& purpose: Testing Dali::Actor::DownCast()
-int UtcDaliActorDownCast(void)
+int UtcDaliActorDownCastP(void)
 {
   TestApplication application;
   tet_infoline("Testing Dali::Actor::DownCast()");
@@ -193,7 +194,7 @@ int UtcDaliActorDownCast(void)
 }
 
 //& purpose: Testing Dali::Actor::DownCast()
-int UtcDaliActorDownCast2(void)
+int UtcDaliActorDownCastN(void)
 {
   TestApplication application;
   tet_infoline("Testing Dali::Actor::DownCast()");
@@ -297,7 +298,7 @@ int UtcDaliActorGetLayer(void)
   END_TEST;
 }
 
-int UtcDaliActorAdd(void)
+int UtcDaliActorAddP(void)
 {
   tet_infoline("Testing Actor::Add");
   TestApplication application;
@@ -331,6 +332,19 @@ int UtcDaliActorAdd(void)
   parent2.Add( child );
   DALI_TEST_EQUALS( parent2.GetChildCount(), 1u, TEST_LOCATION );
 
+  END_TEST;
+}
+
+int UtcDaliActorAddN(void)
+{
+  tet_infoline("Testing Actor::Add");
+  TestApplication application;
+
+  Actor child = Actor::New();
+
+  Actor parent2 = Actor::New();
+  parent2.Add( child );
+
   // try illegal Add
   try
   {
@@ -388,37 +402,11 @@ int UtcDaliActorAdd(void)
     tet_printf("Assertion test failed - wrong Exception\n" );
     tet_result(TET_FAIL);
   }
-  END_TEST;
-}
-
-int UtcDaliActorInsert(void)
-{
-  tet_infoline("Testing Actor::Insert");
-  TestApplication application;
-
-  Actor parent = Actor::New();
-  Stage::GetCurrent().Add( parent );
-  Actor first = Actor::New();
-  Actor second = Actor::New();
-  Actor third = Actor::New();
-
-  parent.Insert(1, first); // test insert beyond range
-  DALI_TEST_EQUALS( parent.GetChildCount(), 1u, TEST_LOCATION );
-  parent.Insert(0, second);
-  DALI_TEST_EQUALS( parent.GetChildCount(), 2u, TEST_LOCATION );
-  parent.Insert(1, third);
-
-  DALI_TEST_EQUALS( parent.GetChildCount(), 3u, TEST_LOCATION );
-
-  DALI_TEST_CHECK(parent.GetChildAt(0) == second);
-  DALI_TEST_CHECK(parent.GetChildAt(1) == third);
-  DALI_TEST_CHECK(parent.GetChildAt(2) == first);
 
   END_TEST;
 }
 
-
-int UtcDaliActorRemove01(void)
+int UtcDaliActorRemoveN(void)
 {
   tet_infoline("Testing Actor::Remove");
   TestApplication application;
@@ -439,24 +427,10 @@ int UtcDaliActorRemove01(void)
 
   // add child back
   parent.Add(child);
-  // try illegal Remove
-  try
-  {
-    parent.Remove( parent );
-    tet_printf("Assertion test failed - no Exception\n" );
-    tet_result(TET_FAIL);
-  }
-  catch(Dali::DaliException& e)
-  {
-    DALI_TEST_PRINT_ASSERT( e );
-    DALI_TEST_ASSERT(e, "this != &child", TEST_LOCATION);
-    DALI_TEST_EQUALS( parent.GetChildCount(), 1u, TEST_LOCATION );
-  }
-  catch(...)
-  {
-    tet_printf("Assertion test failed - wrong Exception\n" );
-    tet_result(TET_FAIL);
-  }
+  DALI_TEST_EQUALS( parent.GetChildCount(), 1u, TEST_LOCATION );
+  // try Remove self, its a no-op
+  parent.Remove( parent );
+  DALI_TEST_EQUALS( parent.GetChildCount(), 1u, TEST_LOCATION );
 
   // try Remove empty
   try
@@ -480,7 +454,7 @@ int UtcDaliActorRemove01(void)
   END_TEST;
 }
 
-int UtcDaliActorRemove02(void)
+int UtcDaliActorRemoveP(void)
 {
   TestApplication application;
 
@@ -689,7 +663,7 @@ int UtcDaliActorSetSize01(void)
   TestApplication application;
 
   Actor actor = Actor::New();
-  Vector3 vector(100.0f, 100.0f, 100.0f);
+  Vector3 vector(100.0f, 100.0f, 0.0f);
 
   DALI_TEST_CHECK(vector != actor.GetCurrentSize());
 
@@ -729,7 +703,7 @@ int UtcDaliActorSetSize03(void)
   TestApplication application;
 
   Actor actor = Actor::New();
-  Vector3 vector(100.0f, 100.0f, 100.0f);
+  Vector3 vector(100.0f, 100.0f, 0.0f);
 
   DALI_TEST_CHECK(vector != actor.GetCurrentSize());
 
@@ -1147,7 +1121,7 @@ int UtcDaliActorSetOrientation01(void)
 {
   TestApplication application;
 
-  Quaternion rotation(0.785f, Vector3(1.0f, 1.0f, 0.0f));
+  Quaternion rotation( Radian(0.785f), Vector3(1.0f, 1.0f, 0.0f));
   Actor actor = Actor::New();
 
   actor.SetOrientation(rotation);
@@ -1166,10 +1140,10 @@ int UtcDaliActorSetOrientation02(void)
 
   Actor actor = Actor::New();
 
-  float angle = 0.785f;
+  Radian angle( 0.785f );
   Vector3 axis(1.0f, 1.0f, 0.0f);
 
-  actor.SetOrientation(Radian( angle ), axis);
+  actor.SetOrientation( angle, axis);
   Quaternion rotation( angle, axis );
   // flush the queue and render once
   application.SendNotification();
@@ -1181,13 +1155,13 @@ int UtcDaliActorSetOrientation02(void)
   DALI_TEST_EQUALS(rotation, actor.GetCurrentOrientation(), 0.001, TEST_LOCATION);
 
   actor.SetOrientation( Degree( 0 ), Vector3( 1.0f, 0.0f, 0.0f ) );
-  Quaternion result( 0, Vector3( 1.0f, 0.0f, 0.0f ) );
+  Quaternion result( Radian( 0 ), Vector3( 1.0f, 0.0f, 0.0f ) );
   // flush the queue and render once
   application.SendNotification();
   application.Render();
   DALI_TEST_EQUALS( result, actor.GetCurrentOrientation(), 0.001, TEST_LOCATION);
 
-  actor.SetOrientation(Radian( angle ), axis);
+  actor.SetOrientation( angle, axis);
   // flush the queue and render once
   application.SendNotification();
   application.Render();
@@ -1204,20 +1178,20 @@ int UtcDaliActorRotateBy01(void)
 
   Actor actor = Actor::New();
 
-  float angle = M_PI * 0.25f;
-  actor.RotateBy(Radian( angle ), Vector3::ZAXIS);
+  Radian angle( M_PI * 0.25f );
+  actor.RotateBy(( angle ), Vector3::ZAXIS);
   // flush the queue and render once
   application.SendNotification();
   application.Render();
-  DALI_TEST_EQUALS(Quaternion(M_PI*0.25f, Vector3::ZAXIS), actor.GetCurrentOrientation(), 0.001, TEST_LOCATION);
+  DALI_TEST_EQUALS(Quaternion( angle, Vector3::ZAXIS), actor.GetCurrentOrientation(), 0.001, TEST_LOCATION);
 
   Stage::GetCurrent().Add( actor );
 
-  actor.RotateBy(Radian( angle ), Vector3::ZAXIS);
+  actor.RotateBy( angle, Vector3::ZAXIS);
   // flush the queue and render once
   application.SendNotification();
   application.Render();
-  DALI_TEST_EQUALS(Quaternion(M_PI*0.5f, Vector3::ZAXIS), actor.GetCurrentOrientation(), 0.001, TEST_LOCATION);
+  DALI_TEST_EQUALS(Quaternion(angle * 2.0f, Vector3::ZAXIS), actor.GetCurrentOrientation(), 0.001, TEST_LOCATION);
 
   Stage::GetCurrent().Remove( actor );
   END_TEST;
@@ -1230,7 +1204,8 @@ int UtcDaliActorRotateBy02(void)
 
   Actor actor = Actor::New();
 
-  Quaternion rotation(M_PI*0.25f, Vector3::ZAXIS);
+  Radian angle( M_PI * 0.25f );
+  Quaternion rotation(angle, Vector3::ZAXIS);
   actor.RotateBy(rotation);
   // flush the queue and render once
   application.SendNotification();
@@ -1241,7 +1216,7 @@ int UtcDaliActorRotateBy02(void)
   // flush the queue and render once
   application.SendNotification();
   application.Render();
-  DALI_TEST_EQUALS(Quaternion(M_PI*0.5f, Vector3::ZAXIS), actor.GetCurrentOrientation(), 0.001, TEST_LOCATION);
+  DALI_TEST_EQUALS(Quaternion(angle * 2.0f, Vector3::ZAXIS), actor.GetCurrentOrientation(), 0.001, TEST_LOCATION);
   END_TEST;
 }
 
@@ -1250,7 +1225,7 @@ int UtcDaliActorGetCurrentOrientation(void)
   TestApplication application;
   Actor actor = Actor::New();
 
-  Quaternion rotation(0.785f, Vector3(1.0f, 1.0f, 0.0f));
+  Quaternion rotation(Radian(0.785f), Vector3(1.0f, 1.0f, 0.0f));
   actor.SetOrientation(rotation);
   // flush the queue and render once
   application.SendNotification();
@@ -1275,8 +1250,8 @@ int UtcDaliActorGetCurrentWorldOrientation(void)
   parent.Add( child );
 
   // The actors should not have a world rotation yet
-  DALI_TEST_EQUALS( parent.GetCurrentWorldOrientation(), Quaternion(0.0f, Vector3::YAXIS), 0.001, TEST_LOCATION );
-  DALI_TEST_EQUALS( child.GetCurrentWorldOrientation(), Quaternion(0.0f, Vector3::YAXIS), 0.001, TEST_LOCATION );
+  DALI_TEST_EQUALS( parent.GetCurrentWorldOrientation(), Quaternion(Radian(0.0f), Vector3::YAXIS), 0.001, TEST_LOCATION );
+  DALI_TEST_EQUALS( child.GetCurrentWorldOrientation(), Quaternion(Radian(0.0f), Vector3::YAXIS), 0.001, TEST_LOCATION );
 
   application.SendNotification();
   application.Render(0);
@@ -2208,11 +2183,11 @@ int UtcDaliActorSetDrawMode(void)
 
   DALI_TEST_CHECK( DrawMode::NORMAL == a.GetDrawMode() ); // Ensure overlay is off by default
 
-  a.SetDrawMode( DrawMode::OVERLAY );
+  a.SetDrawMode( DrawMode::OVERLAY_2D );
   app.SendNotification();
   app.Render(1);
 
-  DALI_TEST_CHECK( DrawMode::OVERLAY == a.GetDrawMode() ); // Check Actor is overlay
+  DALI_TEST_CHECK( DrawMode::OVERLAY_2D == a.GetDrawMode() ); // Check Actor is overlay
 
   a.SetDrawMode( DrawMode::STENCIL );
   app.SendNotification();
@@ -2276,7 +2251,7 @@ int UtcDaliActorSetDrawModeOverlayRender(void)
   // b (9)
   // c (10)
   // a (8)
-  a.SetDrawMode( DrawMode::OVERLAY );
+  a.SetDrawMode( DrawMode::OVERLAY_2D );
   app.GetGlAbstraction().ClearBoundTextures();
 
   app.SendNotification();
@@ -2293,89 +2268,6 @@ int UtcDaliActorSetDrawModeOverlayRender(void)
   END_TEST;
 }
 
-
-int UtcDaliActorSetDrawModeOverlayHitTest(void)
-{
-  TestApplication app;
-  tet_infoline(" UtcDaliActorSetDrawModeOverlayHitTest");
-
-  BufferImage imageA = BufferImage::New(16, 16);
-  BufferImage imageB = BufferImage::New(16, 16);
-  ImageActor a = ImageActor::New( imageA );
-  ImageActor b = ImageActor::New( imageB );
-
-  // Render a,b as regular non-overlays. so order will be:
-  Stage::GetCurrent().Add(a);
-  Stage::GetCurrent().Add(b);
-
-  a.SetSize( 100.0f, 100.0f );
-  b.SetSize( 100.0f, 100.0f );
-
-  // position b overlapping a. (regular non-overlays)
-  // hit test at point 'x'
-  // --------
-  // |      |
-  // | a    |
-  // |   --------
-  // |   |x     |
-  // |   |      |
-  // ----|      |
-  //     |   b  |
-  //     |      |
-  //     --------
-  // note: b is on top, because it's Z position is higher.
-  a.SetPosition(Vector3(0.0f, 0.0f, 0.0f));
-  b.SetPosition(Vector3(50.0f, 50.0f, 1.0f));
-
-  // connect to their touch signals
-  a.TouchedSignal().Connect(TestCallback);
-  b.TouchedSignal().Connect(TestCallback2);
-
-  a.SetDrawMode( DrawMode::NORMAL );
-  b.SetDrawMode( DrawMode::NORMAL );
-  SimulateTouchForSetOverlayHitTest(app);
-
-  DALI_TEST_CHECK( gTouchCallBackCalled == false );
-  DALI_TEST_CHECK( gTouchCallBack2Called == true );
-  // Make Actor a an overlay.
-  // --------
-  // |      |
-  // | a    |
-  // |      |----
-  // |    x |   |
-  // |      |   |
-  // --------   |
-  //     |   b  |
-  //     |      |
-  //     --------
-  // note: a is on top, because it is an overlay.
-  a.SetDrawMode( DrawMode::OVERLAY );
-  b.SetDrawMode( DrawMode::NORMAL );
-  SimulateTouchForSetOverlayHitTest(app);
-
-  DALI_TEST_CHECK( gTouchCallBackCalled == true );
-  DALI_TEST_CHECK( gTouchCallBack2Called == false );
-  // Make both Actors as overlays
-  // --------
-  // |      |
-  // | a    |
-  // |   --------
-  // |   |x     |
-  // |   |      |
-  // ----|      |
-  //     |   b  |
-  //     |      |
-  //     --------
-  // note: b is on top, because it is the 2nd child in the hierarchy.
-  a.SetDrawMode( DrawMode::OVERLAY );
-  b.SetDrawMode( DrawMode::OVERLAY );
-  SimulateTouchForSetOverlayHitTest(app);
-
-  DALI_TEST_CHECK( gTouchCallBackCalled == false );
-  DALI_TEST_CHECK( gTouchCallBack2Called == true );
-  END_TEST;
-}
-
 int UtcDaliActorGetCurrentWorldMatrix(void)
 {
   TestApplication app;
@@ -2549,20 +2441,12 @@ int UtcDaliActorSetGetOverlay(void)
   tet_infoline(" UtcDaliActorSetGetOverlay");
 
   Actor parent = Actor::New();
-  parent.SetDrawMode(DrawMode::OVERLAY );
-  DALI_TEST_CHECK( parent.GetDrawMode() == DrawMode::OVERLAY );
+  parent.SetDrawMode(DrawMode::OVERLAY_2D );
+  DALI_TEST_CHECK( parent.GetDrawMode() == DrawMode::OVERLAY_2D );
   END_TEST;
 }
 
 
-// Current Dynamics functions are crashing, so testing these sections are futile
-
-int UtcDaliActorDynamics(void)
-{
-  DALI_TEST_CHECK( true );
-  END_TEST;
-}
-
 int UtcDaliActorCreateDestroy(void)
 {
   Actor* actor = new Actor;
@@ -2626,7 +2510,6 @@ const PropertyStringIndex PROPERTY_TABLE[] =
   { "position-inheritance",     Actor::Property::POSITION_INHERITANCE,     Property::STRING      },
   { "draw-mode",                Actor::Property::DRAW_MODE,                Property::STRING      },
   { "size-mode-factor",         Actor::Property::SIZE_MODE_FACTOR,         Property::VECTOR3     },
-  { "relayout-enabled",         Actor::Property::RELAYOUT_ENABLED,         Property::BOOLEAN     },
   { "width-resize-policy",      Actor::Property::WIDTH_RESIZE_POLICY,      Property::STRING      },
   { "height-resize-policy",     Actor::Property::HEIGHT_RESIZE_POLICY,     Property::STRING      },
   { "size-scale-policy",        Actor::Property::SIZE_SCALE_POLICY,        Property::STRING      },
@@ -2655,28 +2538,6 @@ int UtcDaliActorProperties(void)
   END_TEST;
 }
 
-int UtcDaliRelayoutProperties_RelayoutEnabled(void)
-{
-  TestApplication app;
-
-  Actor actor = Actor::New();
-
-  // Defaults
-  DALI_TEST_EQUALS( actor.GetProperty( Actor::Property::RELAYOUT_ENABLED ).Get< bool >(), false, TEST_LOCATION );
-
-  // Set relayout disabled
-  actor.SetProperty( Actor::Property::RELAYOUT_ENABLED, false );
-
-  DALI_TEST_EQUALS( actor.GetProperty( Actor::Property::RELAYOUT_ENABLED ).Get< bool >(), false, TEST_LOCATION );
-
-  // Set relayout enabled
-  actor.SetProperty( Actor::Property::RELAYOUT_ENABLED, true );
-
-  DALI_TEST_EQUALS( actor.GetProperty( Actor::Property::RELAYOUT_ENABLED ).Get< bool >(), true, TEST_LOCATION );
-
-  END_TEST;
-}
-
 int UtcDaliRelayoutProperties_ResizePolicies(void)
 {
   TestApplication app;
@@ -2684,14 +2545,14 @@ int UtcDaliRelayoutProperties_ResizePolicies(void)
   Actor actor = Actor::New();
 
   // Defaults
-  DALI_TEST_EQUALS( actor.GetProperty( Actor::Property::WIDTH_RESIZE_POLICY ).Get< std::string >(), "FIXED", TEST_LOCATION );
-  DALI_TEST_EQUALS( actor.GetProperty( Actor::Property::HEIGHT_RESIZE_POLICY ).Get< std::string >(), "FIXED", TEST_LOCATION );
+  DALI_TEST_EQUALS( actor.GetProperty( Actor::Property::WIDTH_RESIZE_POLICY ).Get< std::string >(), "USE_NATURAL_SIZE", TEST_LOCATION );
+  DALI_TEST_EQUALS( actor.GetProperty( Actor::Property::HEIGHT_RESIZE_POLICY ).Get< std::string >(), "USE_NATURAL_SIZE", TEST_LOCATION );
 
   // Set resize policy for all dimensions
-  actor.SetResizePolicy( USE_NATURAL_SIZE, ALL_DIMENSIONS );
-  for( unsigned int i = 0; i < DIMENSION_COUNT; ++i)
+  actor.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
+  for( unsigned int i = 0; i < Dimension::DIMENSION_COUNT; ++i)
   {
-    DALI_TEST_EQUALS( actor.GetResizePolicy( static_cast< Dimension >( 1 << i ) ), USE_NATURAL_SIZE, TEST_LOCATION );
+    DALI_TEST_EQUALS( actor.GetResizePolicy( static_cast< Dimension::Type >( 1 << i ) ), ResizePolicy::USE_NATURAL_SIZE, TEST_LOCATION );
   }
 
   // Set individual dimensions
@@ -2715,6 +2576,11 @@ int UtcDaliRelayoutProperties_SizeScalePolicy(void)
 
   // Defaults
   DALI_TEST_EQUALS( actor.GetProperty( Actor::Property::SIZE_SCALE_POLICY ).Get< std::string >(), "USE_SIZE_SET", TEST_LOCATION );
+  DALI_TEST_EQUALS( actor.GetSizeScalePolicy(), SizeScalePolicy::USE_SIZE_SET, TEST_LOCATION );
+
+  SizeScalePolicy::Type policy = SizeScalePolicy::FILL_WITH_ASPECT_RATIO;
+  actor.SetSizeScalePolicy( policy );
+  DALI_TEST_EQUALS( actor.GetSizeScalePolicy(), policy, TEST_LOCATION );
 
   // Set
   const char* const policy1 = "FIT_WITH_ASPECT_RATIO";
@@ -2729,6 +2595,29 @@ int UtcDaliRelayoutProperties_SizeScalePolicy(void)
   END_TEST;
 }
 
+int UtcDaliRelayoutProperties_SizeModeFactor(void)
+{
+  TestApplication app;
+
+  Actor actor = Actor::New();
+
+  // Defaults
+  DALI_TEST_EQUALS( actor.GetProperty( Actor::Property::SIZE_MODE_FACTOR ).Get< Vector3 >(), Vector3( 1.0f, 1.0f, 1.0f ), TEST_LOCATION );
+  DALI_TEST_EQUALS( actor.GetSizeModeFactor(), Vector3( 1.0f, 1.0f, 1.0f ), TEST_LOCATION );
+
+  Vector3 sizeMode( 1.0f, 2.0f, 3.0f );
+  actor.SetSizeModeFactor( sizeMode );
+  DALI_TEST_EQUALS( actor.GetSizeModeFactor(), sizeMode, TEST_LOCATION );
+
+  // Set
+  Vector3 sizeMode1( 2.0f, 3.0f, 4.0f );
+
+  actor.SetProperty( Actor::Property::SIZE_MODE_FACTOR, sizeMode1 );
+  DALI_TEST_EQUALS( actor.GetProperty( Actor::Property::SIZE_MODE_FACTOR ).Get< Vector3 >(), sizeMode1, TEST_LOCATION );
+
+  END_TEST;
+}
+
 int UtcDaliRelayoutProperties_DimensionDependency(void)
 {
   TestApplication app;
@@ -2794,3 +2683,228 @@ int UtcDaliRelayoutProperties_MinimumMaximumSize(void)
 
   END_TEST;
 }
+
+int UtcDaliActorGetHeightForWidth(void)
+{
+  TestApplication app;
+
+  Actor actor = Actor::New();
+
+  DALI_TEST_EQUALS( actor.GetHeightForWidth( 1.0f ), 1.0f, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliActorGetWidthForHeight(void)
+{
+  TestApplication app;
+
+  Actor actor = Actor::New();
+
+  DALI_TEST_EQUALS( actor.GetWidthForHeight( 1.0f ), 1.0f, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliActorGetRelayoutSize(void)
+{
+  TestApplication app;
+
+  Actor actor = Actor::New();
+
+  // Add actor to stage
+  Stage::GetCurrent().Add( actor );
+
+  DALI_TEST_EQUALS( actor.GetRelayoutSize( Dimension::WIDTH ), 0.0f, TEST_LOCATION );
+
+  actor.SetResizePolicy( ResizePolicy::FIXED, Dimension::WIDTH );
+  actor.SetSize( Vector2( 1.0f, 0.0f ) );
+
+  // Flush the queue and render once
+  app.SendNotification();
+  app.Render();
+
+  DALI_TEST_EQUALS( actor.GetRelayoutSize( Dimension::WIDTH ), 1.0f, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliActorSetPadding(void)
+{
+  TestApplication app;
+
+  Actor actor = Actor::New();
+
+  Padding padding;
+  actor.GetPadding( padding );
+
+  DALI_TEST_EQUALS( padding.left, 0.0f, TEST_LOCATION );
+  DALI_TEST_EQUALS( padding.right, 0.0f, TEST_LOCATION );
+  DALI_TEST_EQUALS( padding.bottom, 0.0f, TEST_LOCATION );
+  DALI_TEST_EQUALS( padding.top, 0.0f, TEST_LOCATION );
+
+  Padding padding2( 1.0f, 2.0f, 3.0f, 4.0f );
+  actor.SetPadding( padding2 );
+
+  actor.GetPadding( padding );
+
+  DALI_TEST_EQUALS( padding.left, padding2.left, TEST_LOCATION );
+  DALI_TEST_EQUALS( padding.right, padding2.right, TEST_LOCATION );
+  DALI_TEST_EQUALS( padding.bottom, padding2.bottom, TEST_LOCATION );
+  DALI_TEST_EQUALS( padding.top, padding2.top, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliActorSetMinimumSize(void)
+{
+  TestApplication app;
+
+  Actor actor = Actor::New();
+
+  Vector2 size = actor.GetMinimumSize();
+
+  DALI_TEST_EQUALS( size.width, 0.0f, TEST_LOCATION );
+  DALI_TEST_EQUALS( size.height, 0.0f, TEST_LOCATION );
+
+  Vector2 size2( 1.0f, 2.0f );
+  actor.SetMinimumSize( size2 );
+
+  size = actor.GetMinimumSize();
+
+  DALI_TEST_EQUALS( size.width, size2.width, TEST_LOCATION );
+  DALI_TEST_EQUALS( size.height, size2.height, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliActorSetMaximumSize(void)
+{
+  TestApplication app;
+
+  Actor actor = Actor::New();
+
+  Vector2 size = actor.GetMaximumSize();
+
+  DALI_TEST_EQUALS( size.width, FLT_MAX, TEST_LOCATION );
+  DALI_TEST_EQUALS( size.height, FLT_MAX, TEST_LOCATION );
+
+  Vector2 size2( 1.0f, 2.0f );
+  actor.SetMaximumSize( size2 );
+
+  size = actor.GetMaximumSize();
+
+  DALI_TEST_EQUALS( size.width, size2.width, TEST_LOCATION );
+  DALI_TEST_EQUALS( size.height, size2.height, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliActorOnRelayoutSignal(void)
+{
+  tet_infoline("Testing Dali::Actor::OnRelayoutSignal()");
+
+  TestApplication application;
+
+  // Clean test data
+  gOnRelayoutCallBackCalled = 0;
+  gActorNamesRelayout.clear();
+
+  Actor actor = Actor::New();
+  actor.SetName( "actor" );
+  actor.OnRelayoutSignal().Connect( OnRelayoutCallback );
+
+  // Sanity check
+  DALI_TEST_CHECK( gOnRelayoutCallBackCalled == 0 );
+
+  // Add actor to stage
+  Stage::GetCurrent().Add( actor );
+
+  actor.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS );
+  actor.SetSize( Vector2( 1.0f, 2.0 ) );
+
+  // Flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  // OnRelayout emitted
+  DALI_TEST_EQUALS(  gOnRelayoutCallBackCalled, 1, TEST_LOCATION );
+  DALI_TEST_EQUALS( "actor", gActorNamesRelayout[ 0 ], TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliActorGetHierachyDepth(void)
+{
+  TestApplication application;
+  tet_infoline("Testing Dali::Actor::GetHierarchyDepth()");
+
+
+  /* Build tree of actors:
+   *
+   *                      Depth
+   *
+   *       A (parent)       1
+   *      / \
+   *     B   C              2`
+   *    / \   \
+   *   D   E   F            3
+   *
+   * GetHierarchyDepth should return 1 for A, 2 for B and C, and 3 for D, E and F.
+   */
+  Stage stage( Stage::GetCurrent() );
+
+  Actor actorA = Actor::New();
+  Actor actorB = Actor::New();
+  Actor actorC = Actor::New();
+  Actor actorD = Actor::New();
+  Actor actorE = Actor::New();
+  Actor actorF = Actor::New();
+
+  //Test that root actor has depth equal 0
+  DALI_TEST_EQUALS( 0, stage.GetRootLayer().GetHierarchyDepth(), TEST_LOCATION );
+
+  //Test actors return depth -1 when not connected to the tree
+  DALI_TEST_EQUALS( -1, actorA.GetHierarchyDepth(), TEST_LOCATION );
+  DALI_TEST_EQUALS( -1, actorB.GetHierarchyDepth(), TEST_LOCATION );
+  DALI_TEST_EQUALS( -1, actorC.GetHierarchyDepth(), TEST_LOCATION );
+  DALI_TEST_EQUALS( -1, actorD.GetHierarchyDepth(), TEST_LOCATION );
+  DALI_TEST_EQUALS( -1, actorE.GetHierarchyDepth(), TEST_LOCATION );
+  DALI_TEST_EQUALS( -1, actorF.GetHierarchyDepth(), TEST_LOCATION );
+
+  //Create the hierarchy
+  stage.Add( actorA );
+  actorA.Add( actorB );
+  actorA.Add( actorC );
+  actorB.Add( actorD );
+  actorB.Add( actorE );
+  actorC.Add( actorF );
+
+  //Test actors return correct depth
+  DALI_TEST_EQUALS( 1, actorA.GetHierarchyDepth(), TEST_LOCATION );
+  DALI_TEST_EQUALS( 2, actorB.GetHierarchyDepth(), TEST_LOCATION );
+  DALI_TEST_EQUALS( 2, actorC.GetHierarchyDepth(), TEST_LOCATION );
+  DALI_TEST_EQUALS( 3, actorD.GetHierarchyDepth(), TEST_LOCATION );
+  DALI_TEST_EQUALS( 3, actorE.GetHierarchyDepth(), TEST_LOCATION );
+  DALI_TEST_EQUALS( 3, actorF.GetHierarchyDepth(), TEST_LOCATION );
+
+  //Removing actorB from the hierarchy. actorB, actorD and actorE should now have depth equal -1
+  actorA.Remove( actorB );
+
+  DALI_TEST_EQUALS( -1, actorB.GetHierarchyDepth(), TEST_LOCATION );
+  DALI_TEST_EQUALS( -1, actorD.GetHierarchyDepth(), TEST_LOCATION );
+  DALI_TEST_EQUALS( -1, actorE.GetHierarchyDepth(), TEST_LOCATION );
+
+  //Removing actorA from the stage. All actors should have depth equal -1
+  stage.Remove( actorA );
+
+  DALI_TEST_EQUALS( -1, actorA.GetHierarchyDepth(), TEST_LOCATION );
+  DALI_TEST_EQUALS( -1, actorB.GetHierarchyDepth(), TEST_LOCATION );
+  DALI_TEST_EQUALS( -1, actorC.GetHierarchyDepth(), TEST_LOCATION );
+  DALI_TEST_EQUALS( -1, actorD.GetHierarchyDepth(), TEST_LOCATION );
+  DALI_TEST_EQUALS( -1, actorE.GetHierarchyDepth(), TEST_LOCATION );
+  DALI_TEST_EQUALS( -1, actorF.GetHierarchyDepth(), TEST_LOCATION );
+
+  END_TEST;
+}
+