Merge "Removed dead code from Actor & fixed minor bugs in GestureDetector" into devel...
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-Actor.cpp
index 38dddff..2386eeb 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,7 +18,9 @@
 #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>
 
 //& set: DaliActor
@@ -39,9 +41,8 @@ void utc_dali_actor_cleanup(void)
 
 namespace
 {
-
 bool gTouchCallBackCalled=false;
-bool gTouchCallBack2Called=false;
+bool gHoverCallBackCalled=false;
 
 /**
  * Simulates a Down Touch at 25.0, 25.0.
@@ -55,10 +56,11 @@ 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 );
+  Dali::Integration::Point point;
+  point.SetState( PointState::DOWN );
+  point.SetScreenPosition( Vector2( 25.0f, 25.0f ) );
   Dali::Integration::TouchEvent event;
   event.AddPoint( point );
   app.ProcessEvent( event );
@@ -75,10 +77,9 @@ static bool gTestConstraintCalled;
 
 struct TestConstraint
 {
-  Vector4 operator()(const Vector4&    color)
+  void operator()( Vector4& color, const PropertyInputContainer& /* inputs */ )
   {
     gTestConstraintCalled = true;
-    return Vector4(color.x, color.y, color.z, 0.1f);
   }
 };
 
@@ -96,34 +97,15 @@ struct TestConstraintRef
   {
   }
 
-  T operator()(const T&    current)
+  void operator()( T& current, const PropertyInputContainer& /* inputs */ )
   {
     mResultRef = mValue;
-    return current;
   }
 
   unsigned int& mResultRef;
   unsigned int mValue;
 };
 
-bool wasConstraintCallbackCalled1 = false;
-void TestConstraintCallback1( ActiveConstraint& constraint )
-{
-  wasConstraintCallbackCalled1 = true;
-}
-
-bool wasConstraintCallbackCalled2 = false;
-void TestConstraintCallback2( ActiveConstraint& constraint )
-{
-  wasConstraintCallbackCalled2 = true;
-}
-
-bool wasConstraintCallbackCalled3 = false;
-void TestConstraintCallback3( ActiveConstraint& constraint )
-{
-  wasConstraintCallbackCalled3 = true;
-}
-
 static bool TestCallback(Actor actor, const TouchEvent& event)
 {
   gTouchCallBackCalled = true;
@@ -131,9 +113,9 @@ static bool TestCallback(Actor actor, const TouchEvent& event)
   END_TEST;
 }
 
-static bool TestCallback2(Actor actor, const TouchEvent& event)
+static bool TestCallback3(Actor actor, const HoverEvent& event)
 {
-  gTouchCallBack2Called = true;
+  gHoverCallBackCalled = true;
   return false;
   END_TEST;
 }
@@ -166,18 +148,37 @@ struct PositionComponentConstraint
 {
   PositionComponentConstraint(){}
 
-  Vector3 operator()(const Vector3& current, const PropertyInput& property)
+  void operator()( Vector3& pos, const PropertyInputContainer& inputs )
   {
-    const Matrix& m = property.GetMatrix();
-    Vector3 pos;
+    const Matrix& m = inputs[0]->GetMatrix();
     Vector3 scale;
     Quaternion rot;
     m.GetTransformComponents(pos, rot, scale);
-    return pos;
   }
 };
 
+struct OrientationComponentConstraint
+{
+  OrientationComponentConstraint(){}
+
+  void operator()( Quaternion& orientation, const PropertyInputContainer& inputs )
+  {
+    const Quaternion& parentOrientation = inputs[0]->GetQuaternion();
+    Vector3 pos, scale;
+    Quaternion rot;
+    orientation = parentOrientation;
+  }
+};
+// OnRelayout
+
+static bool gOnRelayoutCallBackCalled = false;
+static std::vector< std::string > gActorNamesRelayout;
 
+void OnRelayoutCallback( Actor actor )
+{
+  gOnRelayoutCallBackCalled = true;
+  gActorNamesRelayout.push_back( actor.GetName() );
+}
 
 } // anonymous namespace
 
@@ -194,7 +195,7 @@ int UtcDaliActorNew(void)
 }
 
 //& purpose: Testing Dali::Actor::DownCast()
-int UtcDaliActorDownCast(void)
+int UtcDaliActorDownCastP(void)
 {
   TestApplication application;
   tet_infoline("Testing Dali::Actor::DownCast()");
@@ -207,7 +208,7 @@ int UtcDaliActorDownCast(void)
 }
 
 //& purpose: Testing Dali::Actor::DownCast()
-int UtcDaliActorDownCast2(void)
+int UtcDaliActorDownCastN(void)
 {
   TestApplication application;
   tet_infoline("Testing Dali::Actor::DownCast()");
@@ -311,7 +312,7 @@ int UtcDaliActorGetLayer(void)
   END_TEST;
 }
 
-int UtcDaliActorAdd(void)
+int UtcDaliActorAddP(void)
 {
   tet_infoline("Testing Actor::Add");
   TestApplication application;
@@ -345,6 +346,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
   {
@@ -354,7 +368,7 @@ int UtcDaliActorAdd(void)
   }
   catch(Dali::DaliException& e)
   {
-    tet_printf("Assertion %s test at %s\n", e.mCondition.c_str(), e.mLocation.c_str());
+    DALI_TEST_PRINT_ASSERT( e );
     DALI_TEST_ASSERT(e, "this != &child", TEST_LOCATION);
     DALI_TEST_EQUALS( parent2.GetChildCount(), 1u, TEST_LOCATION );
   }
@@ -373,7 +387,7 @@ int UtcDaliActorAdd(void)
   }
   catch(Dali::DaliException& e)
   {
-    tet_printf("Assertion %s test at %s\n", e.mCondition.c_str(), e.mLocation.c_str());
+    DALI_TEST_PRINT_ASSERT( e );
     DALI_TEST_ASSERT(e, "!child.IsRoot()", TEST_LOCATION);
     DALI_TEST_EQUALS( parent2.GetChildCount(), 1u, TEST_LOCATION );
   }
@@ -393,7 +407,7 @@ int UtcDaliActorAdd(void)
   }
   catch(Dali::DaliException& e)
   {
-    tet_printf("Assertion %s test at %s\n", e.mCondition.c_str(), e.mLocation.c_str());
+    DALI_TEST_PRINT_ASSERT( e );
     DALI_TEST_ASSERT(e, "actor", TEST_LOCATION);
     DALI_TEST_EQUALS( parent2.GetChildCount(), 1u, TEST_LOCATION );
   }
@@ -402,37 +416,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) == first);
-  DALI_TEST_CHECK(parent.GetChildAt(1) == second);
-  DALI_TEST_CHECK(parent.GetChildAt(2) == third);
 
   END_TEST;
 }
 
-
-int UtcDaliActorRemove01(void)
+int UtcDaliActorRemoveN(void)
 {
   tet_infoline("Testing Actor::Remove");
   TestApplication application;
@@ -453,24 +441,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)
-  {
-    tet_printf("Assertion %s test at %s\n", e.mCondition.c_str(), e.mLocation.c_str());
-    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
@@ -482,7 +456,7 @@ int UtcDaliActorRemove01(void)
   }
   catch(Dali::DaliException& e)
   {
-    tet_printf("Assertion %s test at %s\n", e.mCondition.c_str(), e.mLocation.c_str());
+    DALI_TEST_PRINT_ASSERT( e );
     DALI_TEST_ASSERT(e, "actor", TEST_LOCATION);
     DALI_TEST_EQUALS( parent.GetChildCount(), 1u, TEST_LOCATION );
   }
@@ -494,7 +468,7 @@ int UtcDaliActorRemove01(void)
   END_TEST;
 }
 
-int UtcDaliActorRemove02(void)
+int UtcDaliActorRemoveP(void)
 {
   TestApplication application;
 
@@ -629,6 +603,42 @@ int UtcDaliActorSetParentOrigin(void)
   END_TEST;
 }
 
+int UtcDaliActorSetParentOriginIndividual(void)
+{
+  TestApplication application;
+
+  Actor actor = Actor::New();
+
+  Vector3 vector(0.7f, 0.8f, 0.9f);
+  DALI_TEST_CHECK(vector != actor.GetCurrentParentOrigin());
+
+  actor.SetProperty( Actor::Property::PARENT_ORIGIN_X, vector.x );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( vector.x, actor.GetCurrentParentOrigin().x, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::PARENT_ORIGIN_Y, vector.y );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( vector.y, actor.GetCurrentParentOrigin().y, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::PARENT_ORIGIN_Z, vector.z );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( vector.z, actor.GetCurrentParentOrigin().z, TEST_LOCATION );
+
+  END_TEST;
+}
+
 int UtcDaliActorGetCurrentParentOrigin(void)
 {
   TestApplication application;
@@ -678,6 +688,42 @@ int UtcDaliActorSetAnchorPoint(void)
   END_TEST;
 }
 
+int UtcDaliActorSetAnchorPointIndividual(void)
+{
+  TestApplication application;
+
+  Actor actor = Actor::New();
+
+  Vector3 vector(0.7f, 0.8f, 0.9f);
+  DALI_TEST_CHECK(vector != actor.GetCurrentAnchorPoint());
+
+  actor.SetProperty( Actor::Property::ANCHOR_POINT_X, vector.x );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( vector.x, actor.GetCurrentAnchorPoint().x, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::ANCHOR_POINT_Y, vector.y );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( vector.y, actor.GetCurrentAnchorPoint().y, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::ANCHOR_POINT_Z, vector.z );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( vector.z, actor.GetCurrentAnchorPoint().z, TEST_LOCATION );
+
+  END_TEST;
+}
+
 int UtcDaliActorGetCurrentAnchorPoint(void)
 {
   TestApplication application;
@@ -703,7 +749,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());
 
@@ -743,7 +789,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());
 
@@ -787,6 +833,43 @@ int UtcDaliActorSetSize04(void)
   END_TEST;
 }
 
+int UtcDaliActorSetSizeIndividual(void)
+{
+  TestApplication application;
+
+  Actor actor = Actor::New();
+
+  Vector3 vector(0.7f, 0.8f, 0.9f);
+  DALI_TEST_CHECK(vector != actor.GetCurrentSize());
+
+  actor.SetProperty( Actor::Property::SIZE_WIDTH, vector.width );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( vector.width, actor.GetCurrentSize().width, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::SIZE_HEIGHT, vector.height );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( vector.height, actor.GetCurrentSize().height, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::SIZE_DEPTH, vector.depth );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( vector.depth, actor.GetCurrentSize().depth, TEST_LOCATION );
+
+  END_TEST;
+}
+
+
 int UtcDaliActorGetCurrentSize(void)
 {
   TestApplication application;
@@ -818,6 +901,48 @@ int UtcDaliActorGetNaturalSize(void)
   END_TEST;
 }
 
+int UtcDaliActorGetCurrentSizeImmediate(void)
+{
+  TestApplication application;
+
+  Actor actor = Actor::New();
+  Vector3 vector(100.0f, 100.0f, 20.0f);
+
+  DALI_TEST_CHECK(vector != actor.GetTargetSize());
+  DALI_TEST_CHECK(vector != actor.GetCurrentSize());
+
+  actor.SetSize(vector);
+
+  DALI_TEST_CHECK(vector == actor.GetTargetSize());
+  DALI_TEST_CHECK(vector != actor.GetCurrentSize());
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_CHECK(vector == actor.GetTargetSize());
+  DALI_TEST_CHECK(vector == actor.GetCurrentSize());
+
+  // Animation
+  // Build the animation
+  const float durationSeconds = 2.0f;
+  Animation animation = Animation::New( durationSeconds );
+  const Vector3 targetValue( 10.0f, 20.0f, 30.0f );
+  animation.AnimateTo( Property( actor, Actor::Property::SIZE ), targetValue );
+
+  DALI_TEST_CHECK( actor.GetTargetSize() == targetValue );
+
+  // Start the animation
+  animation.Play();
+
+  application.SendNotification();
+  application.Render( static_cast<unsigned int>( durationSeconds * 1000.0f ) );
+
+  DALI_TEST_CHECK( actor.GetTargetSize() == targetValue );
+
+  END_TEST;
+}
+
 // SetPosition(float x, float y)
 int UtcDaliActorSetPosition01(void)
 {
@@ -853,7 +978,7 @@ int UtcDaliActorSetPosition01(void)
   application.Render();
   DALI_TEST_EQUALS( Vector3( 1.0f, 1.1f, 1.2f ), actor.GetCurrentPosition(), TEST_LOCATION );
 
-  actor.MoveBy( Vector3( 0.1f, 0.1f, 0.1f ) );
+  actor.TranslateBy( Vector3( 0.1f, 0.1f, 0.1f ) );
   // flush the queue and render once
   application.SendNotification();
   application.Render();
@@ -971,7 +1096,43 @@ int UtcDaliActorSetZ(void)
   END_TEST;
 }
 
-int UtcDaliActorMoveBy(void)
+int UtcDaliActorSetPositionProperties(void)
+{
+  TestApplication application;
+
+  Actor actor = Actor::New();
+
+  Vector3 vector(0.7f, 0.8f, 0.9f);
+  DALI_TEST_CHECK(vector != actor.GetCurrentPosition());
+
+  actor.SetProperty( Actor::Property::POSITION_X, vector.x );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( vector.x, actor.GetCurrentPosition().x, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::POSITION_Y, vector.y );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( vector.y, actor.GetCurrentPosition().y, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::POSITION_Z, vector.z );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( vector.z, actor.GetCurrentPosition().z, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliActorTranslateBy(void)
 {
   TestApplication application;
 
@@ -988,7 +1149,7 @@ int UtcDaliActorMoveBy(void)
 
   DALI_TEST_CHECK(vector == actor.GetCurrentPosition());
 
-  actor.MoveBy(vector);
+  actor.TranslateBy(vector);
 
   // flush the queue and render once
   application.SendNotification();
@@ -1071,7 +1232,7 @@ int UtcDaliActorInheritPosition(void)
   DALI_TEST_EQUALS( parent.GetCurrentWorldPosition(), Vector3::ZERO, TEST_LOCATION );
   DALI_TEST_EQUALS( child.GetCurrentWorldPosition(), Vector3::ZERO, TEST_LOCATION );
 
-  // first test default, which is INHERIT_PARENT_POSITION
+  // first test default, which is to inherit position
   DALI_TEST_EQUALS( child.GetPositionInheritanceMode(), Dali::INHERIT_PARENT_POSITION, TEST_LOCATION );
   application.SendNotification();
   application.Render(0); // should only really call Update as Render is not required to update scene
@@ -1080,27 +1241,10 @@ int UtcDaliActorInheritPosition(void)
   DALI_TEST_EQUALS( parent.GetCurrentWorldPosition(), parentPosition, TEST_LOCATION );
   DALI_TEST_EQUALS( child.GetCurrentWorldPosition(), parentPosition + childPosition, TEST_LOCATION );
 
-  // Change inheritance mode to use parent
-  child.SetPositionInheritanceMode( Dali::USE_PARENT_POSITION );
-  DALI_TEST_EQUALS( child.GetPositionInheritanceMode(), Dali::USE_PARENT_POSITION, TEST_LOCATION );
-  application.SendNotification();
-  application.Render(0); // should only really call Update as Render is not required to update scene
-  DALI_TEST_EQUALS( parent.GetCurrentPosition(), parentPosition, TEST_LOCATION );
-  DALI_TEST_EQUALS( child.GetCurrentPosition(), childPosition, TEST_LOCATION );
-  DALI_TEST_EQUALS( parent.GetCurrentWorldPosition(), parentPosition, TEST_LOCATION );
-  DALI_TEST_EQUALS( child.GetCurrentWorldPosition(), parentPosition, TEST_LOCATION );
 
-  // Change inheritance mode to use parent + offset
-  child.SetPositionInheritanceMode( Dali::USE_PARENT_POSITION_PLUS_LOCAL_POSITION );
+  //Change child position
   Vector3 childOffset( -1.0f, 1.0f, 0.0f );
   child.SetPosition( childOffset );
-  DALI_TEST_EQUALS( child.GetPositionInheritanceMode(), Dali::USE_PARENT_POSITION_PLUS_LOCAL_POSITION, TEST_LOCATION );
-  application.SendNotification();
-  application.Render(0); // should only really call Update as Render is not required to update scene
-  DALI_TEST_EQUALS( parent.GetCurrentPosition(), parentPosition, TEST_LOCATION );
-  DALI_TEST_EQUALS( child.GetCurrentPosition(), childOffset, TEST_LOCATION );
-  DALI_TEST_EQUALS( parent.GetCurrentWorldPosition(), parentPosition, TEST_LOCATION );
-  DALI_TEST_EQUALS( child.GetCurrentWorldPosition(), parentPosition + childOffset, TEST_LOCATION );
 
   // Change inheritance mode to not inherit
   child.SetPositionInheritanceMode( Dali::DONT_INHERIT_POSITION );
@@ -1114,61 +1258,137 @@ int UtcDaliActorInheritPosition(void)
   END_TEST;
 }
 
-// SetRotation(float angleRadians, Vector3 axis)
-int UtcDaliActorSetRotation01(void)
+int UtcDaliActorSetInheritPosition(void)
 {
+  tet_infoline("Testing Actor::SetInheritPosition");
   TestApplication application;
 
-  Quaternion rotation(0.785f, Vector3(1.0f, 1.0f, 0.0f));
-  Actor actor = Actor::New();
+  Actor parent = Actor::New();
+  Vector3 parentPosition( 1.0f, 2.0f, 3.0f );
+  parent.SetPosition( parentPosition );
+  parent.SetParentOrigin( ParentOrigin::CENTER );
+  parent.SetAnchorPoint( AnchorPoint::CENTER );
+  Stage::GetCurrent().Add( parent );
 
-  actor.SetRotation(rotation);
+  Actor child = Actor::New();
+  child.SetParentOrigin( ParentOrigin::CENTER );
+  child.SetAnchorPoint( AnchorPoint::CENTER );
+  Vector3 childPosition( 10.0f, 11.0f, 12.0f );
+  child.SetPosition( childPosition );
+  parent.Add( child );
 
-  // flush the queue and render once
+  // The actors should not have a world position yet
+  DALI_TEST_EQUALS( parent.GetCurrentWorldPosition(), Vector3::ZERO, TEST_LOCATION );
+  DALI_TEST_EQUALS( child.GetCurrentWorldPosition(), Vector3::ZERO, TEST_LOCATION );
+
+  // first test default, which is to inherit position
+  DALI_TEST_EQUALS( child.IsPositionInherited(), true, TEST_LOCATION );
   application.SendNotification();
-  application.Render();
+  application.Render(0); // should only really call Update as Render is not required to update scene
+  DALI_TEST_EQUALS( parent.GetCurrentPosition(), parentPosition, TEST_LOCATION );
+  DALI_TEST_EQUALS( child.GetCurrentPosition(), childPosition, TEST_LOCATION );
+  DALI_TEST_EQUALS( parent.GetCurrentWorldPosition(), parentPosition, TEST_LOCATION );
+  DALI_TEST_EQUALS( child.GetCurrentWorldPosition(), parentPosition + childPosition, TEST_LOCATION );
 
-  DALI_TEST_EQUALS(rotation, actor.GetCurrentRotation(), 0.001, TEST_LOCATION);
-  END_TEST;
-}
+  //Change child position
+  Vector3 childOffset( -1.0f, 1.0f, 0.0f );
+  child.SetPosition( childOffset );
 
-int UtcDaliActorSetRotation02(void)
-{
-  TestApplication application;
+  // Use local position as world postion
+  child.SetInheritPosition( false );
+  DALI_TEST_EQUALS( child.IsPositionInherited(), false, TEST_LOCATION );
+  application.SendNotification();
+  application.Render(0); // should only really call Update as Render is not required to update scene
+  DALI_TEST_EQUALS( parent.GetCurrentPosition(), parentPosition, TEST_LOCATION );
+  DALI_TEST_EQUALS( child.GetCurrentPosition(), childOffset, TEST_LOCATION );
+  DALI_TEST_EQUALS( parent.GetCurrentWorldPosition(), parentPosition, TEST_LOCATION );
+  DALI_TEST_EQUALS( child.GetCurrentWorldPosition(), childOffset, TEST_LOCATION );
+
+  //Change back to inherit position from parent
+  child.SetInheritPosition( true );
+  DALI_TEST_EQUALS( child.IsPositionInherited(), true, TEST_LOCATION );
+  application.SendNotification();
+  application.Render(0); // should only really call Update as Render is not required to update scene
+  DALI_TEST_EQUALS( parent.GetCurrentPosition(), parentPosition, TEST_LOCATION );
+  DALI_TEST_EQUALS( child.GetCurrentPosition(), childOffset, TEST_LOCATION );
+  DALI_TEST_EQUALS( parent.GetCurrentWorldPosition(), parentPosition, TEST_LOCATION );
+  DALI_TEST_EQUALS( child.GetCurrentWorldPosition(), parentPosition + childOffset, TEST_LOCATION );
+  END_TEST;
+}
+
+// SetOrientation(float angleRadians, Vector3 axis)
+int UtcDaliActorSetOrientation01(void)
+{
+  TestApplication application;
+
+  Quaternion rotation( Radian(0.785f), Vector3(1.0f, 1.0f, 0.0f));
+  Actor actor = Actor::New();
+
+  actor.SetOrientation(rotation);
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS(rotation, actor.GetCurrentOrientation(), 0.001, TEST_LOCATION);
+  END_TEST;
+}
+
+int UtcDaliActorSetOrientation02(void)
+{
+  TestApplication application;
 
   Actor actor = Actor::New();
 
-  float angle = 0.785f;
+  Radian angle( 0.785f );
   Vector3 axis(1.0f, 1.0f, 0.0f);
 
-  actor.SetRotation(Radian( angle ), axis);
+  actor.SetOrientation( angle, axis);
   Quaternion rotation( angle, axis );
   // flush the queue and render once
   application.SendNotification();
   application.Render();
-  DALI_TEST_EQUALS(rotation, actor.GetCurrentRotation(), 0.001, TEST_LOCATION);
+  DALI_TEST_EQUALS(rotation, actor.GetCurrentOrientation(), 0.001, TEST_LOCATION);
 
   Stage::GetCurrent().Add( actor );
   actor.RotateBy( Degree( 360 ), axis);
-  DALI_TEST_EQUALS(rotation, actor.GetCurrentRotation(), 0.001, TEST_LOCATION);
+  DALI_TEST_EQUALS(rotation, actor.GetCurrentOrientation(), 0.001, TEST_LOCATION);
 
-  actor.SetRotation( Degree( 0 ), Vector3( 1.0f, 0.0f, 0.0f ) );
-  Quaternion result( 0, Vector3( 1.0f, 0.0f, 0.0f ) );
+  actor.SetOrientation( Degree( 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.GetCurrentRotation(), 0.001, TEST_LOCATION);
+  DALI_TEST_EQUALS( result, actor.GetCurrentOrientation(), 0.001, TEST_LOCATION);
 
-  actor.SetRotation(Radian( angle ), axis);
+  actor.SetOrientation( angle, axis);
   // flush the queue and render once
   application.SendNotification();
   application.Render();
-  DALI_TEST_EQUALS(rotation, actor.GetCurrentRotation(), 0.001, TEST_LOCATION);
+  DALI_TEST_EQUALS(rotation, actor.GetCurrentOrientation(), 0.001, TEST_LOCATION);
 
   Stage::GetCurrent().Remove( actor );
   END_TEST;
 }
 
+// SetOrientation(float angleRadians, Vector3 axis)
+int UtcDaliActorSetOrientationProperty(void)
+{
+  TestApplication application;
+
+  Quaternion rotation( Radian(0.785f), Vector3(1.0f, 1.0f, 0.0f));
+  Actor actor = Actor::New();
+
+  actor.SetProperty( Actor::Property::ORIENTATION, rotation );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS(rotation, actor.GetCurrentOrientation(), 0.001, TEST_LOCATION);
+  END_TEST;
+}
+
 // RotateBy(float angleRadians, Vector3 axis)
 int UtcDaliActorRotateBy01(void)
 {
@@ -1176,20 +1396,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.GetCurrentRotation(), 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.GetCurrentRotation(), 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;
@@ -1202,36 +1422,37 @@ 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();
   application.Render();
-  DALI_TEST_EQUALS(rotation, actor.GetCurrentRotation(), 0.001, TEST_LOCATION);
+  DALI_TEST_EQUALS(rotation, actor.GetCurrentOrientation(), 0.001, TEST_LOCATION);
 
   actor.RotateBy(rotation);
   // flush the queue and render once
   application.SendNotification();
   application.Render();
-  DALI_TEST_EQUALS(Quaternion(M_PI*0.5f, Vector3::ZAXIS), actor.GetCurrentRotation(), 0.001, TEST_LOCATION);
+  DALI_TEST_EQUALS(Quaternion(angle * 2.0f, Vector3::ZAXIS), actor.GetCurrentOrientation(), 0.001, TEST_LOCATION);
   END_TEST;
 }
 
-int UtcDaliActorGetCurrentRotation(void)
+int UtcDaliActorGetCurrentOrientation(void)
 {
   TestApplication application;
   Actor actor = Actor::New();
 
-  Quaternion rotation(0.785f, Vector3(1.0f, 1.0f, 0.0f));
-  actor.SetRotation(rotation);
+  Quaternion rotation(Radian(0.785f), Vector3(1.0f, 1.0f, 0.0f));
+  actor.SetOrientation(rotation);
   // flush the queue and render once
   application.SendNotification();
   application.Render();
-  DALI_TEST_EQUALS(rotation, actor.GetCurrentRotation(), 0.001, TEST_LOCATION);
+  DALI_TEST_EQUALS(rotation, actor.GetCurrentOrientation(), 0.001, TEST_LOCATION);
   END_TEST;
 }
 
-int UtcDaliActorGetCurrentWorldRotation(void)
+int UtcDaliActorGetCurrentWorldOrientation(void)
 {
   tet_infoline("Testing Actor::GetCurrentWorldRotation");
   TestApplication application;
@@ -1239,36 +1460,36 @@ int UtcDaliActorGetCurrentWorldRotation(void)
   Actor parent = Actor::New();
   Radian rotationAngle( Degree(90.0f) );
   Quaternion rotation( rotationAngle, Vector3::YAXIS );
-  parent.SetRotation( rotation );
+  parent.SetOrientation( rotation );
   Stage::GetCurrent().Add( parent );
 
   Actor child = Actor::New();
-  child.SetRotation( rotation );
+  child.SetOrientation( rotation );
   parent.Add( child );
 
   // The actors should not have a world rotation yet
-  DALI_TEST_EQUALS( parent.GetCurrentWorldRotation(), Quaternion(0.0f, Vector3::YAXIS), 0.001, TEST_LOCATION );
-  DALI_TEST_EQUALS( child.GetCurrentWorldRotation(), 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);
 
-  DALI_TEST_EQUALS( parent.GetCurrentRotation(), rotation, 0.001, TEST_LOCATION );
-  DALI_TEST_EQUALS( child.GetCurrentRotation(), rotation, 0.001, TEST_LOCATION );
+  DALI_TEST_EQUALS( parent.GetCurrentOrientation(), rotation, 0.001, TEST_LOCATION );
+  DALI_TEST_EQUALS( child.GetCurrentOrientation(), rotation, 0.001, TEST_LOCATION );
 
   // The actors should have a world rotation now
-  DALI_TEST_EQUALS( parent.GetCurrentWorldRotation(), Quaternion( rotationAngle, Vector3::YAXIS ), 0.001, TEST_LOCATION );
-  DALI_TEST_EQUALS( child.GetCurrentWorldRotation(), Quaternion( rotationAngle * 2.0f, Vector3::YAXIS ), 0.001, TEST_LOCATION );
+  DALI_TEST_EQUALS( parent.GetCurrentWorldOrientation(), Quaternion( rotationAngle, Vector3::YAXIS ), 0.001, TEST_LOCATION );
+  DALI_TEST_EQUALS( child.GetCurrentWorldOrientation(), Quaternion( rotationAngle * 2.0f, Vector3::YAXIS ), 0.001, TEST_LOCATION );
 
   // turn off child rotation inheritance
-  child.SetInheritRotation( false );
-  DALI_TEST_EQUALS( child.IsRotationInherited(), false, TEST_LOCATION );
+  child.SetInheritOrientation( false );
+  DALI_TEST_EQUALS( child.IsOrientationInherited(), false, TEST_LOCATION );
   application.SendNotification();
   application.Render(0);
 
   // The actors should have a world rotation now
-  DALI_TEST_EQUALS( parent.GetCurrentWorldRotation(), Quaternion( rotationAngle, Vector3::YAXIS ), 0.001, TEST_LOCATION );
-  DALI_TEST_EQUALS( child.GetCurrentWorldRotation(), rotation, 0.001, TEST_LOCATION );
+  DALI_TEST_EQUALS( parent.GetCurrentWorldOrientation(), Quaternion( rotationAngle, Vector3::YAXIS ), 0.001, TEST_LOCATION );
+  DALI_TEST_EQUALS( child.GetCurrentWorldOrientation(), rotation, 0.001, TEST_LOCATION );
   END_TEST;
 }
 
@@ -1350,6 +1571,42 @@ int UtcDaliActorSetScale03(void)
   END_TEST;
 }
 
+int UtcDaliActorSetScaleIndividual(void)
+{
+  TestApplication application;
+
+  Actor actor = Actor::New();
+
+  Vector3 vector(0.7f, 0.8f, 0.9f);
+  DALI_TEST_CHECK(vector != actor.GetCurrentScale());
+
+  actor.SetProperty( Actor::Property::SCALE_X, vector.x );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( vector.x, actor.GetCurrentScale().x, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::SCALE_Y, vector.y );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( vector.y, actor.GetCurrentScale().y, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::SCALE_Z, vector.z );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( vector.z, actor.GetCurrentScale().z, TEST_LOCATION );
+
+  END_TEST;
+}
+
 int UtcDaliActorScaleBy(void)
 {
   TestApplication application;
@@ -1510,7 +1767,7 @@ int UtcDaliActorSetOpacity(void)
   DALI_TEST_EQUALS(actor.GetCurrentOpacity(), 0.4f, TEST_LOCATION );
 
   // change opacity, actor is on stage to change is not immediate
-  actor.OpacityBy( 0.1f );
+  actor.SetOpacity( actor.GetCurrentOpacity() + 0.1f );
   // flush the queue and render once
   application.SendNotification();
   application.Render();
@@ -1528,7 +1785,7 @@ int UtcDaliActorSetOpacity(void)
   DALI_TEST_EQUALS(actor.GetCurrentOpacity(), 0.9f, TEST_LOCATION );
 
   // change opacity, actor is on stage to change is not immediate
-  actor.OpacityBy( -0.9f );
+  actor.SetOpacity( actor.GetCurrentOpacity() - 0.9f );
   // flush the queue and render once
   application.SendNotification();
   application.Render();
@@ -1588,7 +1845,7 @@ int UtcDaliActorSetColor(void)
   application.Render();
   DALI_TEST_CHECK(color == actor.GetCurrentColor());
 
-  actor.ColorBy( Vector4( -0.4f, -0.5f, -0.6f, -0.4f ) );
+  actor.SetColor( actor.GetCurrentColor() + Vector4( -0.4f, -0.5f, -0.6f, -0.4f ) );
   // flush the queue and render once
   application.SendNotification();
   application.Render();
@@ -1601,7 +1858,7 @@ int UtcDaliActorSetColor(void)
   application.Render();
   DALI_TEST_EQUALS( color, actor.GetCurrentColor(),  TEST_LOCATION );
 
-  actor.ColorBy( Vector4( 1.1f, 1.1f, 1.1f, 1.1f ) );
+  actor.SetColor( actor.GetCurrentColor() + Vector4( 1.1f, 1.1f, 1.1f, 1.1f ) );
   // flush the queue and render once
   application.SendNotification();
   application.Render();
@@ -1614,6 +1871,51 @@ int UtcDaliActorSetColor(void)
   END_TEST;
 }
 
+int UtcDaliActorSetColorIndividual(void)
+{
+  TestApplication application;
+
+  Actor actor = Actor::New();
+
+  Vector4 vector(0.7f, 0.8f, 0.9f, 0.6f);
+  DALI_TEST_CHECK(vector != actor.GetCurrentColor());
+
+  actor.SetProperty( Actor::Property::COLOR_RED, vector.r );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( vector.r, actor.GetCurrentColor().r, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::COLOR_GREEN, vector.g );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( vector.g, actor.GetCurrentColor().g, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::COLOR_BLUE, vector.b );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( vector.b, actor.GetCurrentColor().b, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::COLOR_ALPHA, vector.a );
+
+  // flush the queue and render once
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( vector.a, actor.GetCurrentColor().a, TEST_LOCATION );
+
+  END_TEST;
+}
+
+
 int UtcDaliActorGetCurrentColor(void)
 {
   TestApplication application;
@@ -1725,6 +2027,9 @@ int UtcDaliActorScreenToLocal(void)
   float localX;
   float localY;
 
+  application.SendNotification();
+  application.Render();
+
   DALI_TEST_CHECK( actor.ScreenToLocal(localX, localY, 50.0f, 50.0f) );
 
   DALI_TEST_EQUALS(localX, 40.0f, 0.01f, TEST_LOCATION);
@@ -1780,219 +2085,6 @@ int UtcDaliActorIsKeyboardFocusable(void)
   END_TEST;
 }
 
-
-int UtcDaliActorApplyConstraint(void)
-{
-  TestApplication application;
-
-  gTestConstraintCalled = false;
-
-  Actor actor = Actor::New();
-
-  Constraint constraint = Constraint::New<Vector4>( Actor::COLOR, TestConstraint() );
-  actor.ApplyConstraint(constraint);
-
-  DALI_TEST_CHECK( gTestConstraintCalled == false );
-  // add to stage
-  Stage::GetCurrent().Add( actor );
-
-  // flush the queue and render once
-  application.SendNotification();
-  application.Render();
-
-  DALI_TEST_CHECK( gTestConstraintCalled == true );
-  END_TEST;
-}
-
-
-int UtcDaliActorApplyConstraintAppliedCallback(void)
-{
-  TestApplication application;
-
-  // Build a reusable constraint
-
-  Actor parent = Actor::New();
-  Vector3 parentSize( 100.0f, 100.0f, 100.0f );
-  parent.SetSize( parentSize );
-  Stage::GetCurrent().Add( parent );
-
-  Constraint constraint = Constraint::New<Vector3>( Actor::SIZE,
-                                                    Source( parent, Actor::SIZE ),
-                                                    EqualToConstraint() );
-
-  // Create some child actors
-
-  Actor child1 = Actor::New();
-  parent.Add( child1 );
-
-  Actor child2 = Actor::New();
-  parent.Add( child2 );
-
-  Actor child3 = Actor::New();
-  parent.Add( child3 );
-
-  // Apply constraint with different timings - everything should be finished after 10 seconds
-
-  wasConstraintCallbackCalled1 = false;
-  wasConstraintCallbackCalled2 = false;
-  wasConstraintCallbackCalled3 = false;
-
-  constraint.SetApplyTime( 5.0f );
-  ActiveConstraint activeConstraint1 = child1.ApplyConstraint( constraint );
-  activeConstraint1.AppliedSignal().Connect( TestConstraintCallback1 );
-
-  constraint.SetApplyTime( 10.0f );
-  ActiveConstraint activeConstraint2 = child2.ApplyConstraint( constraint );
-  activeConstraint2.AppliedSignal().Connect( TestConstraintCallback2 );
-
-  constraint.SetApplyTime( TimePeriod( 2.0f/*delay*/, 5.0f/*duration*/ ) );
-  ActiveConstraint activeConstraint3 = child3.ApplyConstraint( constraint );
-  activeConstraint3.AppliedSignal().Connect( TestConstraintCallback3 );
-
-  DALI_TEST_EQUALS( child1.GetCurrentSize(), Vector3::ZERO, TEST_LOCATION );
-  DALI_TEST_EQUALS( child2.GetCurrentSize(), Vector3::ZERO, TEST_LOCATION );
-  DALI_TEST_EQUALS( child3.GetCurrentSize(), Vector3::ZERO, TEST_LOCATION );
-
-  application.SendNotification();
-
-  application.Render(static_cast<unsigned int>(1000.0f)); // 1 elapsed second
-  DALI_TEST_EQUALS( child1.GetCurrentSize(), parentSize*0.20f, TEST_LOCATION ); // 1 /  5 * 100 = 20%
-  DALI_TEST_EQUALS( child2.GetCurrentSize(), parentSize*0.10f, TEST_LOCATION ); // 1 / 10 * 100 = 10%
-  DALI_TEST_EQUALS( child3.GetCurrentSize(), parentSize*0.00f, TEST_LOCATION ); // 0%
-
-  // Check signals have not fired
-  application.SendNotification();
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled1, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled2, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled3, false, TEST_LOCATION );
-
-  application.Render(static_cast<unsigned int>(1000.0f)); // 2 elapsed seconds
-  DALI_TEST_EQUALS( child1.GetCurrentSize(), parentSize*0.40f, TEST_LOCATION ); // 2 /  5 * 100 = 40%
-  DALI_TEST_EQUALS( child2.GetCurrentSize(), parentSize*0.20f, TEST_LOCATION ); // 2 / 10 * 100 = 20%
-  DALI_TEST_EQUALS( child3.GetCurrentSize(), parentSize*0.00f, TEST_LOCATION ); // 0%
-
-  // Check signals have not fired
-  application.SendNotification();
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled1, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled2, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled3, false, TEST_LOCATION );
-
-  application.Render(static_cast<unsigned int>(1000.0f)); // 3 elapsed seconds
-  DALI_TEST_EQUALS( child1.GetCurrentSize(), parentSize*0.60f, TEST_LOCATION ); // 3 /  5 * 100 = 60%
-  DALI_TEST_EQUALS( child2.GetCurrentSize(), parentSize*0.30f, TEST_LOCATION ); // 3 / 10 * 100 = 30%
-  DALI_TEST_EQUALS( child3.GetCurrentSize(), parentSize*0.20f, TEST_LOCATION ); // (3 - 2) / 5 * 100 = 20%
-
-  // Check signals have not fired
-  application.SendNotification();
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled1, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled2, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled3, false, TEST_LOCATION );
-
-  application.Render(static_cast<unsigned int>(1000.0f)); // 4 elapsed seconds
-  DALI_TEST_EQUALS( child1.GetCurrentSize(), parentSize*0.80f, TEST_LOCATION ); // 4 /  5 * 100 = 80%
-  DALI_TEST_EQUALS( child2.GetCurrentSize(), parentSize*0.40f, TEST_LOCATION ); // 4 / 10 * 100 = 40%
-  DALI_TEST_EQUALS( child3.GetCurrentSize(), parentSize*0.40f, TEST_LOCATION ); // (4 - 2) / 5 * 100 = 40%
-
-  // Check signals have not fired
-  application.SendNotification();
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled1, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled2, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled3, false, TEST_LOCATION );
-
-  application.Render(static_cast<unsigned int>(1000.0f)); // 5 elapsed seconds
-  DALI_TEST_EQUALS( child1.GetCurrentSize(), parentSize,       TEST_LOCATION ); // 5 /  5 * 100 = 100%
-  DALI_TEST_EQUALS( child2.GetCurrentSize(), parentSize*0.50f, TEST_LOCATION ); // 5 / 10 * 100 = 50%
-  DALI_TEST_EQUALS( child3.GetCurrentSize(), parentSize*0.60f, TEST_LOCATION ); // (5 - 2) / 5 * 100 = 60%
-
-  // Check signals have not fired
-  application.SendNotification();
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled1, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled2, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled3, false, TEST_LOCATION );
-
-  application.Render(static_cast<unsigned int>(1000.0f)); // 6 elapsed seconds
-  DALI_TEST_EQUALS( child1.GetCurrentSize(), parentSize,       TEST_LOCATION ); // Past 100% (signal 1 should fire)
-  DALI_TEST_EQUALS( child2.GetCurrentSize(), parentSize*0.60f, TEST_LOCATION ); // 6 / 10 * 100 = 60%
-  DALI_TEST_EQUALS( child3.GetCurrentSize(), parentSize*0.80f, TEST_LOCATION ); // (6 - 2) / 5 * 100 = 80%
-
-  // 1st signal should have fired
-  application.SendNotification();
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled1, true, TEST_LOCATION );
-  wasConstraintCallbackCalled1 = false;
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled2, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled3, false, TEST_LOCATION );
-
-  application.Render(static_cast<unsigned int>(1000.0f)); // 7 elapsed seconds
-  DALI_TEST_EQUALS( child1.GetCurrentSize(), parentSize,       TEST_LOCATION ); // Past 100%
-  DALI_TEST_EQUALS( child2.GetCurrentSize(), parentSize*0.70f, TEST_LOCATION ); // 7 / 10 * 100 = 70%
-  DALI_TEST_EQUALS( child3.GetCurrentSize(), parentSize,       TEST_LOCATION ); // (7 - 2) / 5 * 100 = 100%
-
-  // Check signals have not fired
-  application.SendNotification();
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled1, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled2, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled3, false, TEST_LOCATION );
-
-  application.Render(static_cast<unsigned int>(1000.0f)); // 8 elapsed seconds
-  DALI_TEST_EQUALS( child1.GetCurrentSize(), parentSize,       TEST_LOCATION ); // Past 100%
-  DALI_TEST_EQUALS( child2.GetCurrentSize(), parentSize*0.80f, TEST_LOCATION ); // 8 / 10 * 100 = 80%
-  DALI_TEST_EQUALS( child3.GetCurrentSize(), parentSize,       TEST_LOCATION ); // Past 100% (signal 3 should fire)
-
-  // 3rd signal should have fired
-  application.SendNotification();
-
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled1, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled2, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled3, true, TEST_LOCATION );
-  wasConstraintCallbackCalled3 = false;
-
-  application.Render(static_cast<unsigned int>(1000.0f)); // 9 elapsed seconds
-  DALI_TEST_EQUALS( child1.GetCurrentSize(), parentSize,       TEST_LOCATION ); // Past 100%
-  DALI_TEST_EQUALS( child2.GetCurrentSize(), parentSize*0.90f, TEST_LOCATION ); // 9 / 10 * 100 = 90%
-  DALI_TEST_EQUALS( child3.GetCurrentSize(), parentSize,       TEST_LOCATION ); // Past 100%
-
-  // Check signals have not fired
-  application.SendNotification();
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled1, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled2, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled3, false, TEST_LOCATION );
-
-  application.Render(static_cast<unsigned int>(1000.0f + 1.0f)); // over 10 elapsed seconds
-  DALI_TEST_EQUALS( child1.GetCurrentSize(), parentSize,       TEST_LOCATION ); // Past 100%
-  DALI_TEST_EQUALS( child2.GetCurrentSize(), parentSize,       TEST_LOCATION ); // Past 100% (signal 2 should fire)
-  DALI_TEST_EQUALS( child3.GetCurrentSize(), parentSize,       TEST_LOCATION ); // Past 100%
-
-  // 2nd signal should have fired
-  application.SendNotification();
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled1, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled2, true, TEST_LOCATION );
-  wasConstraintCallbackCalled2 = false;
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled3, false, TEST_LOCATION );
-
-  // Check that nothing has changed after a couple of buffer swaps
-
-  application.Render(0);
-  DALI_TEST_EQUALS( child1.GetCurrentSize(), parentSize, TEST_LOCATION );
-  DALI_TEST_EQUALS( child2.GetCurrentSize(), parentSize, TEST_LOCATION );
-  DALI_TEST_EQUALS( child3.GetCurrentSize(), parentSize, TEST_LOCATION );
-
-  application.SendNotification();
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled1, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled2, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled3, false, TEST_LOCATION );
-
-  application.Render(0);
-  DALI_TEST_EQUALS( child1.GetCurrentSize(), parentSize, TEST_LOCATION );
-  DALI_TEST_EQUALS( child2.GetCurrentSize(), parentSize, TEST_LOCATION );
-  DALI_TEST_EQUALS( child3.GetCurrentSize(), parentSize, TEST_LOCATION );
-
-  application.SendNotification();
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled1, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled2, false, TEST_LOCATION );
-  DALI_TEST_EQUALS( wasConstraintCallbackCalled3, false, TEST_LOCATION );
-  END_TEST;
-}
-
 int UtcDaliActorRemoveConstraints(void)
 {
   tet_infoline(" UtcDaliActorRemoveConstraints");
@@ -2002,14 +2094,14 @@ int UtcDaliActorRemoveConstraints(void)
 
   Actor actor = Actor::New();
 
-  Constraint constraint = Constraint::New<Vector4>( Actor::COLOR, TestConstraint() );
-  actor.ApplyConstraint(constraint);
+  Constraint constraint = Constraint::New<Vector4>( actor, Actor::Property::COLOR, TestConstraint() );
+  constraint.Apply();
   actor.RemoveConstraints();
 
   DALI_TEST_CHECK( gTestConstraintCalled == false );
 
   Stage::GetCurrent().Add( actor );
-  actor.ApplyConstraint(constraint);
+  constraint.Apply();
 
   // flush the queue and render once
   application.SendNotification();
@@ -2021,9 +2113,9 @@ int UtcDaliActorRemoveConstraints(void)
   END_TEST;
 }
 
-int UtcDaliActorRemoveConstraint(void)
+int UtcDaliActorRemoveConstraintTag(void)
 {
-  tet_infoline(" UtcDaliActorRemoveConstraint");
+  tet_infoline(" UtcDaliActorRemoveConstraintTag");
   TestApplication application;
 
   Actor actor = Actor::New();
@@ -2031,8 +2123,16 @@ int UtcDaliActorRemoveConstraint(void)
   // 1. Apply Constraint1 and Constraint2, and test...
   unsigned int result1 = 0u;
   unsigned int result2 = 0u;
-  ActiveConstraint activeConstraint1 = actor.ApplyConstraint( Constraint::New<Vector4>( Actor::COLOR, TestConstraintRef<Vector4>(result1, 1) ) );
-  ActiveConstraint activeConstraint2 = actor.ApplyConstraint( Constraint::New<Vector4>( Actor::COLOR, TestConstraintRef<Vector4>(result2, 2) ) );
+
+  unsigned constraint1Tag = 1u;
+  Constraint constraint1 = Constraint::New<Vector4>( actor, Actor::Property::COLOR, TestConstraintRef<Vector4>(result1, 1) );
+  constraint1.SetTag( constraint1Tag );
+  constraint1.Apply();
+
+  unsigned constraint2Tag = 2u;
+  Constraint constraint2 = Constraint::New<Vector4>( actor, Actor::Property::COLOR, TestConstraintRef<Vector4>(result2, 2) );
+  constraint2.SetTag( constraint2Tag );
+  constraint2.Apply();
 
   Stage::GetCurrent().Add( actor );
   // flush the queue and render once
@@ -2045,7 +2145,7 @@ int UtcDaliActorRemoveConstraint(void)
   // 2. Remove Constraint1 and test...
   result1 = 0;
   result2 = 0;
-  actor.RemoveConstraint(activeConstraint1);
+  actor.RemoveConstraints(constraint1Tag);
   // make color property dirty, which will trigger constraints to be reapplied.
   actor.SetColor( Color::WHITE );
   // flush the queue and render once
@@ -2058,7 +2158,7 @@ int UtcDaliActorRemoveConstraint(void)
   // 3. Re-Apply Constraint1 and test...
   result1 = 0;
   result2 = 0;
-  activeConstraint1 = actor.ApplyConstraint( Constraint::New<Vector4>( Actor::COLOR, TestConstraintRef<Vector4>(result1, 1) ) );
+  constraint1.Apply();
   // make color property dirty, which will trigger constraints to be reapplied.
   actor.SetColor( Color::WHITE );
   // flush the queue and render once
@@ -2071,7 +2171,7 @@ int UtcDaliActorRemoveConstraint(void)
   // 2. Remove Constraint2 and test...
   result1 = 0;
   result2 = 0;
-  actor.RemoveConstraint(activeConstraint2);
+  actor.RemoveConstraints(constraint2Tag);
   // make color property dirty, which will trigger constraints to be reapplied.
   actor.SetColor( Color::WHITE );
   // flush the queue and render once
@@ -2084,7 +2184,7 @@ int UtcDaliActorRemoveConstraint(void)
   // 2. Remove Constraint1 as well and test...
   result1 = 0;
   result2 = 0;
-  actor.RemoveConstraint(activeConstraint1);
+  actor.RemoveConstraints(constraint1Tag);
   // make color property dirty, which will trigger constraints to be reapplied.
   actor.SetColor( Color::WHITE );
   // flush the queue and render once
@@ -2096,154 +2196,63 @@ int UtcDaliActorRemoveConstraint(void)
   END_TEST;
 }
 
-int UtcDaliActorRemoveConstraintTag(void)
+int UtcDaliActorTouchedSignal(void)
 {
-  tet_infoline(" UtcDaliActorRemoveConstraintTag");
   TestApplication application;
 
-  Actor actor = Actor::New();
-
-  // 1. Apply Constraint1 and Constraint2, and test...
-  unsigned int result1 = 0u;
-  unsigned int result2 = 0u;
-
-  unsigned constraint1Tag = 1u;
-  Constraint constraint1 = Constraint::New<Vector4>( Actor::COLOR, TestConstraintRef<Vector4>(result1, 1) );
-  constraint1.SetTag( constraint1Tag );
-  actor.ApplyConstraint( constraint1 );
+  gTouchCallBackCalled = false;
 
-  unsigned constraint2Tag = 2u;
-  Constraint constraint2 = Constraint::New<Vector4>( Actor::COLOR, TestConstraintRef<Vector4>(result2, 2) );
-  constraint2.SetTag( constraint2Tag );
-  actor.ApplyConstraint( constraint2 );
+  // get the root layer
+  Actor actor = Stage::GetCurrent().GetRootLayer();
+  DALI_TEST_CHECK( gTouchCallBackCalled == false );
 
-  Stage::GetCurrent().Add( actor );
-  // flush the queue and render once
   application.SendNotification();
   application.Render();
 
-  DALI_TEST_EQUALS( result1, 1u, TEST_LOCATION );
-  DALI_TEST_EQUALS( result2, 2u, TEST_LOCATION );
+  // connect to its touch signal
+  actor.TouchedSignal().Connect( TestCallback );
+
+  // simulate a touch event in the middle of the screen
+  Vector2 touchPoint( Stage::GetCurrent().GetSize() * 0.5 );
+  Dali::Integration::Point point;
+  point.SetDeviceId( 1 );
+  point.SetState( PointState::DOWN );
+  point.SetScreenPosition( Vector2( touchPoint.x, touchPoint.y ) );
+  Dali::Integration::TouchEvent event;
+  event.AddPoint( point );
+  application.ProcessEvent( event );
+
+  DALI_TEST_CHECK( gTouchCallBackCalled == true );
+  END_TEST;
+}
+
+int UtcDaliActorHoveredSignal(void)
+{
+  TestApplication application;
+
+  gHoverCallBackCalled = false;
+
+  // get the root layer
+  Actor actor = Stage::GetCurrent().GetRootLayer();
+  DALI_TEST_CHECK( gHoverCallBackCalled == false );
 
-  // 2. Remove Constraint1 and test...
-  result1 = 0;
-  result2 = 0;
-  actor.RemoveConstraints(constraint1Tag);
-  // make color property dirty, which will trigger constraints to be reapplied.
-  actor.SetColor( Color::WHITE );
-  // flush the queue and render once
   application.SendNotification();
   application.Render();
 
-  DALI_TEST_EQUALS( result1, 0u, TEST_LOCATION );  ///< constraint 1 should not apply now.
-  DALI_TEST_EQUALS( result2, 2u, TEST_LOCATION );
-
-  // 3. Re-Apply Constraint1 and test...
-  result1 = 0;
-  result2 = 0;
-  actor.ApplyConstraint( constraint1 );
-  // make color property dirty, which will trigger constraints to be reapplied.
-  actor.SetColor( Color::WHITE );
-  // flush the queue and render once
-  application.SendNotification();
-  application.Render();
-
-  DALI_TEST_EQUALS( result1, 1u, TEST_LOCATION );
-  DALI_TEST_EQUALS( result2, 2u, TEST_LOCATION );
-
-  // 2. Remove Constraint2 and test...
-  result1 = 0;
-  result2 = 0;
-  actor.RemoveConstraints(constraint2Tag);
-  // make color property dirty, which will trigger constraints to be reapplied.
-  actor.SetColor( Color::WHITE );
-  // flush the queue and render once
-  application.SendNotification();
-  application.Render();
-
-  DALI_TEST_EQUALS( result1, 1u, TEST_LOCATION );
-  DALI_TEST_EQUALS( result2, 0u, TEST_LOCATION ); ///< constraint 2 should not apply now.
+  // connect to its hover signal
+  actor.HoveredSignal().Connect( TestCallback3 );
 
-  // 2. Remove Constraint1 as well and test...
-  result1 = 0;
-  result2 = 0;
-  actor.RemoveConstraints(constraint1Tag);
-  // make color property dirty, which will trigger constraints to be reapplied.
-  actor.SetColor( Color::WHITE );
-  // flush the queue and render once
-  application.SendNotification();
-  application.Render();
-
-  DALI_TEST_EQUALS( result1, 0u, TEST_LOCATION ); ///< constraint 1 should not apply now.
-  DALI_TEST_EQUALS( result2, 0u, TEST_LOCATION ); ///< constraint 2 should not apply now.
-  END_TEST;
-}
-
-int UtcDaliActorTouchedSignal(void)
-{
-  TestApplication application;
-
-  gTouchCallBackCalled = false;
-
-  // get the root layer
-  Actor actor = Stage::GetCurrent().GetRootLayer();
-  DALI_TEST_CHECK( gTouchCallBackCalled == false );
-
-  application.SendNotification();
-  application.Render();
-
-  // connect to its touch signal
-  actor.TouchedSignal().Connect( TestCallback );
-
-  // simulate a touch event in the middle of the screen
+  // simulate a hover event in the middle of the screen
   Vector2 touchPoint( Stage::GetCurrent().GetSize() * 0.5 );
-  Dali::TouchPoint point( 1, TouchPoint::Down, touchPoint.x, touchPoint.y );
-  Dali::Integration::TouchEvent event;
+  Dali::Integration::Point point;
+  point.SetDeviceId( 1 );
+  point.SetState( PointState::MOTION );
+  point.SetScreenPosition( Vector2( touchPoint.x, touchPoint.y ) );
+  Dali::Integration::HoverEvent event;
   event.AddPoint( point );
   application.ProcessEvent( event );
 
-  DALI_TEST_CHECK( gTouchCallBackCalled == true );
-  END_TEST;
-}
-
-
-int UtcDaliActorSetSizeSignal(void)
-{
-  TestApplication application;
-
-  Actor actor = Actor::New();
-  actor.SetSizeSignal().Connect( SetSizeCallback );
-
-  gSetSize.x = gSetSize.y = gSetSize.z = 0.0f;
-  gSetSizeCallBackCalled = false;
-  Vector2 size2d( 1.0f, 2.0f );
-  actor.SetSize( size2d );
-  DALI_TEST_CHECK( gSetSizeCallBackCalled == true );
-  // SetSize with Vector2 sets depth to be the minimum of width & height
-  DALI_TEST_EQUALS( Vector3( 1.0f, 2.0f, 1.0f ), gSetSize,  TEST_LOCATION );
-
-  gSetSize.x = gSetSize.y = gSetSize.z = 0.0f;
-  gSetSizeCallBackCalled = false;
-  actor.SetSize( 22.0f, 11.0f );
-  DALI_TEST_CHECK( gSetSizeCallBackCalled == true );
-  // SetSize with Vector2 sets depth to be the minimum of width & height
-  DALI_TEST_EQUALS( Vector3( 22.0f, 11.0f, 11.0f ), gSetSize,  TEST_LOCATION );
-
-  gSetSize.x = gSetSize.y = gSetSize.z = 0.0f;
-  gSetSizeCallBackCalled = false;
-  Vector3 size( 3.0f, 4.0f, 5.0f );
-  actor.SetSize( size );
-  DALI_TEST_CHECK( gSetSizeCallBackCalled == true );
-  DALI_TEST_EQUALS( size, gSetSize,  TEST_LOCATION );
-
-  // add actor to stage to see that signal still works
-  Stage::GetCurrent().Add( actor );
-
-  gSetSize.x = gSetSize.y = gSetSize.z = 0.0f;
-  gSetSizeCallBackCalled = false;
-  actor.SetSize( -1.0f, -2.0f, -3.0f );
-  DALI_TEST_CHECK( gSetSizeCallBackCalled == true );
-  DALI_TEST_EQUALS( Vector3( -1.0f, -2.0f, -3.0f ), gSetSize,  TEST_LOCATION );
+  DALI_TEST_CHECK( gHoverCallBackCalled == true );
   END_TEST;
 }
 
@@ -2364,35 +2373,6 @@ int UtcDaliActorFindChildByName(void)
   END_TEST;
 }
 
-int UtcDaliActorFindChildByAlias(void)
-{
-  tet_infoline("Testing Dali::Actor::FindChildByAlias()");
-  TestApplication application;
-
-  Actor parent = Actor::New();
-  parent.SetName( "parent" );
-  Actor first  = Actor::New();
-  first .SetName( "first" );
-  Actor second = Actor::New();
-  second.SetName( "second" );
-
-  parent.Add(first);
-  first.Add(second);
-
-  Actor found = parent.FindChildByAlias( "foo" );
-  DALI_TEST_CHECK( !found );
-
-  found = parent.FindChildByAlias( "parent" );
-  DALI_TEST_CHECK( found == parent );
-
-  found = parent.FindChildByAlias( "first" );
-  DALI_TEST_CHECK( found == first );
-
-  found = parent.FindChildByAlias( "second" );
-  DALI_TEST_CHECK( found == second );
-  END_TEST;
-}
-
 int UtcDaliActorFindChildById(void)
 {
   tet_infoline("Testing Dali::Actor::UtcDaliActorFindChildById()");
@@ -2473,7 +2453,9 @@ int UtcDaliActorHitTest(void)
     // connect to its touch signal
     actor.TouchedSignal().Connect(TestCallback);
 
-    Dali::TouchPoint point( 0, TouchPoint::Down, hitTestData[index]->mTouchPoint.x, hitTestData[index]->mTouchPoint.y );
+    Dali::Integration::Point point;
+    point.SetState( PointState::DOWN );
+    point.SetScreenPosition( Vector2( hitTestData[index]->mTouchPoint.x, hitTestData[index]->mTouchPoint.y ) );
     Dali::Integration::TouchEvent event;
     event.AddPoint( point );
 
@@ -2511,11 +2493,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();
@@ -2545,12 +2527,12 @@ int UtcDaliActorSetDrawModeOverlayRender(void)
   ids.push_back( 10 );  // third rendered actor
   app.GetGlAbstraction().SetNextTextureIds( ids );
 
-  BitmapImage imageA = BitmapImage::New(16, 16);
-  BitmapImage imageB = BitmapImage::New(16, 16);
-  BitmapImage imageC = BitmapImage::New(16, 16);
-  ImageActor a = ImageActor::New( imageA );
-  ImageActor b = ImageActor::New( imageB );
-  ImageActor c = ImageActor::New( imageC );
+  BufferImage imageA = BufferImage::New(16, 16);
+  BufferImage imageB = BufferImage::New(16, 16);
+  BufferImage imageC = BufferImage::New(16, 16);
+  Actor a = CreateRenderableActor( imageA );
+  Actor b = CreateRenderableActor( imageB );
+  Actor c = CreateRenderableActor( imageC );
 
   // Render a,b,c as regular non-overlays. so order will be:
   // a (8)
@@ -2579,7 +2561,7 @@ int UtcDaliActorSetDrawModeOverlayRender(void)
   // b (9)
   // c (10)
   // a (8)
-  a.SetDrawMode( DrawMode::OVERLAY );
+  a.SetDrawMode( DrawMode::OVERLAY_2D );
   app.GetGlAbstraction().ClearBoundTextures();
 
   app.SendNotification();
@@ -2596,89 +2578,6 @@ int UtcDaliActorSetDrawModeOverlayRender(void)
   END_TEST;
 }
 
-
-int UtcDaliActorSetDrawModeOverlayHitTest(void)
-{
-  TestApplication app;
-  tet_infoline(" UtcDaliActorSetDrawModeOverlayHitTest");
-
-  BitmapImage imageA = BitmapImage::New(16, 16);
-  BitmapImage imageB = BitmapImage::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(Vector2(100.0f, 100.0f));
-  b.SetSize(Vector2(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;
@@ -2692,7 +2591,7 @@ int UtcDaliActorGetCurrentWorldMatrix(void)
   Quaternion parentRotation(rotationAngle, Vector3::ZAXIS);
   Vector3 parentScale( 1.0f, 2.0f, 3.0f );
   parent.SetPosition( parentPosition );
-  parent.SetRotation( parentRotation );
+  parent.SetOrientation( parentRotation );
   parent.SetScale( parentScale );
   Stage::GetCurrent().Add( parent );
 
@@ -2703,14 +2602,10 @@ int UtcDaliActorGetCurrentWorldMatrix(void)
   Quaternion childRotation( childRotationAngle, Vector3::YAXIS );
   Vector3 childScale( 2.0f, 2.0f, 2.0f );
   child.SetPosition( childPosition );
-  child.SetRotation( childRotation );
+  child.SetOrientation( childRotation );
   child.SetScale( childScale );
   parent.Add( child );
 
-  // The actors should not have a world matrix yet
-  DALI_TEST_EQUALS( parent.GetCurrentWorldMatrix(), Matrix::IDENTITY, 0.001, TEST_LOCATION );
-  DALI_TEST_EQUALS( child.GetCurrentWorldMatrix(), Matrix::IDENTITY, 0.001, TEST_LOCATION );
-
   app.SendNotification();
   app.Render(0);
   app.Render();
@@ -2719,12 +2614,12 @@ int UtcDaliActorGetCurrentWorldMatrix(void)
   Matrix parentMatrix(false);
   parentMatrix.SetTransformComponents(parentScale, parentRotation, parentPosition);
 
-  Vector3 childWorldPosition = parentPosition + parentRotation * parentScale * childPosition;
-  Quaternion childWorldRotation = parentRotation * childRotation;
-  Vector3 childWorldScale = parentScale * childScale;
+  Matrix childMatrix(false);
+  childMatrix.SetTransformComponents( childScale, childRotation, childPosition );
 
+  //Child matrix should be the composition of child and parent
   Matrix childWorldMatrix(false);
-  childWorldMatrix.SetTransformComponents(childWorldScale, childWorldRotation, childWorldPosition);
+  Matrix::Multiply( childWorldMatrix, childMatrix, parentMatrix);
 
   DALI_TEST_EQUALS( parent.GetCurrentWorldMatrix(), parentMatrix, 0.001, TEST_LOCATION );
   DALI_TEST_EQUALS( child.GetCurrentWorldMatrix(), childWorldMatrix, 0.001, TEST_LOCATION );
@@ -2746,21 +2641,18 @@ int UtcDaliActorConstrainedToWorldMatrix(void)
   Quaternion parentRotation(rotationAngle, Vector3::ZAXIS);
   Vector3 parentScale( 1.0f, 2.0f, 3.0f );
   parent.SetPosition( parentPosition );
-  parent.SetRotation( parentRotation );
+  parent.SetOrientation( parentRotation );
   parent.SetScale( parentScale );
   Stage::GetCurrent().Add( parent );
 
   Actor child = Actor::New();
   child.SetParentOrigin(ParentOrigin::CENTER);
-  Constraint posConstraint = Constraint::New<Vector3>( Actor::POSITION, Source( parent, Actor::WORLD_MATRIX), PositionComponentConstraint() );
-  child.ApplyConstraint(posConstraint);
+  Constraint posConstraint = Constraint::New<Vector3>( child, Actor::Property::POSITION, PositionComponentConstraint() );
+  posConstraint.AddSource( Source( parent, Actor::Property::WORLD_MATRIX ) );
+  posConstraint.Apply();
 
   Stage::GetCurrent().Add( child );
 
-  // The actors should not have a world matrix yet
-  DALI_TEST_EQUALS( parent.GetCurrentWorldMatrix(), Matrix::IDENTITY, 0.001, TEST_LOCATION );
-  DALI_TEST_EQUALS( child.GetCurrentWorldMatrix(), Matrix::IDENTITY, 0.001, TEST_LOCATION );
-
   app.SendNotification();
   app.Render(0);
   app.Render();
@@ -2774,6 +2666,40 @@ int UtcDaliActorConstrainedToWorldMatrix(void)
   END_TEST;
 }
 
+int UtcDaliActorConstrainedToOrientation(void)
+{
+  TestApplication app;
+  tet_infoline(" UtcDaliActorConstrainedToOrientation");
+
+  Actor parent = Actor::New();
+  parent.SetParentOrigin(ParentOrigin::CENTER);
+  parent.SetAnchorPoint(AnchorPoint::CENTER);
+  Vector3 parentPosition( 10.0f, 20.0f, 30.0f);
+  Radian rotationAngle(Degree(85.0f));
+  Quaternion parentRotation(rotationAngle, Vector3::ZAXIS);
+  Vector3 parentScale( 1.0f, 2.0f, 3.0f );
+  parent.SetPosition( parentPosition );
+  parent.SetOrientation( parentRotation );
+  parent.SetScale( parentScale );
+  Stage::GetCurrent().Add( parent );
+
+  Actor child = Actor::New();
+  child.SetParentOrigin(ParentOrigin::CENTER);
+  Constraint posConstraint = Constraint::New<Quaternion>( child, Actor::Property::ORIENTATION, OrientationComponentConstraint() );
+  posConstraint.AddSource( Source( parent, Actor::Property::ORIENTATION ) );
+  posConstraint.Apply();
+
+  Stage::GetCurrent().Add( child );
+
+  app.SendNotification();
+  app.Render(0);
+  app.Render();
+  app.SendNotification();
+
+  DALI_TEST_EQUALS( child.GetCurrentOrientation(), parent.GetCurrentOrientation(), 0.001, TEST_LOCATION );
+  END_TEST;
+}
+
 int UtcDaliActorUnparent(void)
 {
   TestApplication app;
@@ -2851,20 +2777,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;
@@ -2884,49 +2802,58 @@ struct PropertyStringIndex
 
 const PropertyStringIndex PROPERTY_TABLE[] =
 {
-  { "parent-origin",            Actor::PARENT_ORIGIN,           Property::VECTOR3     },
-  { "parent-origin-x",          Actor::PARENT_ORIGIN_X,         Property::FLOAT       },
-  { "parent-origin-y",          Actor::PARENT_ORIGIN_Y,         Property::FLOAT       },
-  { "parent-origin-z",          Actor::PARENT_ORIGIN_Z,         Property::FLOAT       },
-  { "anchor-point",             Actor::ANCHOR_POINT,            Property::VECTOR3     },
-  { "anchor-point-x",           Actor::ANCHOR_POINT_X,          Property::FLOAT       },
-  { "anchor-point-y",           Actor::ANCHOR_POINT_Y,          Property::FLOAT       },
-  { "anchor-point-z",           Actor::ANCHOR_POINT_Z,          Property::FLOAT       },
-  { "size",                     Actor::SIZE,                    Property::VECTOR3     },
-  { "size-width",               Actor::SIZE_WIDTH,              Property::FLOAT       },
-  { "size-height",              Actor::SIZE_HEIGHT,             Property::FLOAT       },
-  { "size-depth",               Actor::SIZE_DEPTH,              Property::FLOAT       },
-  { "position",                 Actor::POSITION,                Property::VECTOR3     },
-  { "position-x",               Actor::POSITION_X,              Property::FLOAT       },
-  { "position-y",               Actor::POSITION_Y,              Property::FLOAT       },
-  { "position-z",               Actor::POSITION_Z,              Property::FLOAT       },
-  { "world-position",           Actor::WORLD_POSITION,          Property::VECTOR3     },
-  { "world-position-x",         Actor::WORLD_POSITION_X,        Property::FLOAT       },
-  { "world-position-y",         Actor::WORLD_POSITION_Y,        Property::FLOAT       },
-  { "world-position-z",         Actor::WORLD_POSITION_Z,        Property::FLOAT       },
-  { "rotation",                 Actor::ROTATION,                Property::ROTATION    },
-  { "world-rotation",           Actor::WORLD_ROTATION,          Property::ROTATION    },
-  { "scale",                    Actor::SCALE,                   Property::VECTOR3     },
-  { "scale-x",                  Actor::SCALE_X,                 Property::FLOAT       },
-  { "scale-y",                  Actor::SCALE_Y,                 Property::FLOAT       },
-  { "scale-z",                  Actor::SCALE_Z,                 Property::FLOAT       },
-  { "world-scale",              Actor::WORLD_SCALE,             Property::VECTOR3     },
-  { "visible",                  Actor::VISIBLE,                 Property::BOOLEAN     },
-  { "color",                    Actor::COLOR,                   Property::VECTOR4     },
-  { "color-red",                Actor::COLOR_RED,               Property::FLOAT       },
-  { "color-green",              Actor::COLOR_GREEN,             Property::FLOAT       },
-  { "color-blue",               Actor::COLOR_BLUE,              Property::FLOAT       },
-  { "color-alpha",              Actor::COLOR_ALPHA,             Property::FLOAT       },
-  { "world-color",              Actor::WORLD_COLOR,             Property::VECTOR4     },
-  { "world-matrix",             Actor::WORLD_MATRIX,            Property::MATRIX      },
-  { "name",                     Actor::NAME,                    Property::STRING      },
-  { "sensitive",                Actor::SENSITIVE,               Property::BOOLEAN     },
-  { "leave-required",           Actor::LEAVE_REQUIRED,          Property::BOOLEAN     },
-  { "inherit-rotation",         Actor::INHERIT_ROTATION,        Property::BOOLEAN     },
-  { "inherit-scale",            Actor::INHERIT_SCALE,           Property::BOOLEAN     },
-  { "color-mode",               Actor::COLOR_MODE,              Property::STRING      },
-  { "position-inheritance",     Actor::POSITION_INHERITANCE,    Property::STRING      },
-  { "draw-mode",                Actor::DRAW_MODE,               Property::STRING      },
+  { "parentOrigin",             Actor::Property::PARENT_ORIGIN,            Property::VECTOR3     },
+  { "parentOriginX",            Actor::Property::PARENT_ORIGIN_X,          Property::FLOAT       },
+  { "parentOriginY",            Actor::Property::PARENT_ORIGIN_Y,          Property::FLOAT       },
+  { "parentOriginZ",            Actor::Property::PARENT_ORIGIN_Z,          Property::FLOAT       },
+  { "anchorPoint",              Actor::Property::ANCHOR_POINT,             Property::VECTOR3     },
+  { "anchorPointX",             Actor::Property::ANCHOR_POINT_X,           Property::FLOAT       },
+  { "anchorPointY",             Actor::Property::ANCHOR_POINT_Y,           Property::FLOAT       },
+  { "anchorPointZ",             Actor::Property::ANCHOR_POINT_Z,           Property::FLOAT       },
+  { "size",                     Actor::Property::SIZE,                     Property::VECTOR3     },
+  { "sizeWidth",                Actor::Property::SIZE_WIDTH,               Property::FLOAT       },
+  { "sizeHeight",               Actor::Property::SIZE_HEIGHT,              Property::FLOAT       },
+  { "sizeDepth",                Actor::Property::SIZE_DEPTH,               Property::FLOAT       },
+  { "position",                 Actor::Property::POSITION,                 Property::VECTOR3     },
+  { "positionX",                Actor::Property::POSITION_X,               Property::FLOAT       },
+  { "positionY",                Actor::Property::POSITION_Y,               Property::FLOAT       },
+  { "positionZ",                Actor::Property::POSITION_Z,               Property::FLOAT       },
+  { "worldPosition",            Actor::Property::WORLD_POSITION,           Property::VECTOR3     },
+  { "worldPositionX",           Actor::Property::WORLD_POSITION_X,         Property::FLOAT       },
+  { "worldPositionY",           Actor::Property::WORLD_POSITION_Y,         Property::FLOAT       },
+  { "worldPositionZ",           Actor::Property::WORLD_POSITION_Z,         Property::FLOAT       },
+  { "orientation",              Actor::Property::ORIENTATION,              Property::ROTATION    },
+  { "worldOrientation",         Actor::Property::WORLD_ORIENTATION,        Property::ROTATION    },
+  { "scale",                    Actor::Property::SCALE,                    Property::VECTOR3     },
+  { "scaleX",                   Actor::Property::SCALE_X,                  Property::FLOAT       },
+  { "scaleY",                   Actor::Property::SCALE_Y,                  Property::FLOAT       },
+  { "scaleZ",                   Actor::Property::SCALE_Z,                  Property::FLOAT       },
+  { "worldScale",               Actor::Property::WORLD_SCALE,              Property::VECTOR3     },
+  { "visible",                  Actor::Property::VISIBLE,                  Property::BOOLEAN     },
+  { "color",                    Actor::Property::COLOR,                    Property::VECTOR4     },
+  { "colorRed",                 Actor::Property::COLOR_RED,                Property::FLOAT       },
+  { "colorGreen",               Actor::Property::COLOR_GREEN,              Property::FLOAT       },
+  { "colorBlue",                Actor::Property::COLOR_BLUE,               Property::FLOAT       },
+  { "colorAlpha",               Actor::Property::COLOR_ALPHA,              Property::FLOAT       },
+  { "worldColor",               Actor::Property::WORLD_COLOR,              Property::VECTOR4     },
+  { "worldMatrix",              Actor::Property::WORLD_MATRIX,             Property::MATRIX      },
+  { "name",                     Actor::Property::NAME,                     Property::STRING      },
+  { "sensitive",                Actor::Property::SENSITIVE,                Property::BOOLEAN     },
+  { "leaveRequired",            Actor::Property::LEAVE_REQUIRED,           Property::BOOLEAN     },
+  { "inheritOrientation",       Actor::Property::INHERIT_ORIENTATION,      Property::BOOLEAN     },
+  { "inheritScale",             Actor::Property::INHERIT_SCALE,            Property::BOOLEAN     },
+  { "colorMode",                Actor::Property::COLOR_MODE,               Property::STRING      },
+  { "positionInheritance",      Actor::Property::POSITION_INHERITANCE,     Property::STRING      },
+  { "drawMode",                 Actor::Property::DRAW_MODE,                Property::STRING      },
+  { "sizeModeFactor",           Actor::Property::SIZE_MODE_FACTOR,         Property::VECTOR3     },
+  { "widthResizePolicy",        Actor::Property::WIDTH_RESIZE_POLICY,      Property::STRING      },
+  { "heightResizePolicy",       Actor::Property::HEIGHT_RESIZE_POLICY,     Property::STRING      },
+  { "sizeScalePolicy",          Actor::Property::SIZE_SCALE_POLICY,        Property::STRING      },
+  { "widthForHeight",           Actor::Property::WIDTH_FOR_HEIGHT,         Property::BOOLEAN     },
+  { "heightForWidth",           Actor::Property::HEIGHT_FOR_WIDTH,         Property::BOOLEAN     },
+  { "padding",                  Actor::Property::PADDING,                  Property::VECTOR4     },
+  { "minimumSize",              Actor::Property::MINIMUM_SIZE,             Property::VECTOR2     },
+  { "maximumSize",              Actor::Property::MAXIMUM_SIZE,             Property::VECTOR2     },
 };
 const unsigned int PROPERTY_TABLE_COUNT = sizeof( PROPERTY_TABLE ) / sizeof( PROPERTY_TABLE[0] );
 } // unnamed namespace
@@ -2946,3 +2873,525 @@ int UtcDaliActorProperties(void)
   }
   END_TEST;
 }
+
+int UtcDaliRelayoutProperties_ResizePolicies(void)
+{
+  TestApplication app;
+
+  Actor actor = Actor::New();
+
+  // Defaults
+  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( 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::Type >( 1 << i ) ), ResizePolicy::USE_NATURAL_SIZE, TEST_LOCATION );
+  }
+
+  // Set individual dimensions
+  const char* const widthPolicy = "FILL_TO_PARENT";
+  const char* const heightPolicy = "FIXED";
+
+  actor.SetProperty( Actor::Property::WIDTH_RESIZE_POLICY, widthPolicy );
+  actor.SetProperty( Actor::Property::HEIGHT_RESIZE_POLICY, heightPolicy );
+
+  DALI_TEST_EQUALS( actor.GetProperty( Actor::Property::WIDTH_RESIZE_POLICY ).Get< std::string >(), widthPolicy, TEST_LOCATION );
+  DALI_TEST_EQUALS( actor.GetProperty( Actor::Property::HEIGHT_RESIZE_POLICY ).Get< std::string >(), heightPolicy, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliRelayoutProperties_SizeScalePolicy(void)
+{
+  TestApplication app;
+
+  Actor actor = Actor::New();
+
+  // 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";
+  const char* const policy2 = "FILL_WITH_ASPECT_RATIO";
+
+  actor.SetProperty( Actor::Property::SIZE_SCALE_POLICY, policy1 );
+  DALI_TEST_EQUALS( actor.GetProperty( Actor::Property::SIZE_SCALE_POLICY ).Get< std::string >(), policy1, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::SIZE_SCALE_POLICY, policy2 );
+  DALI_TEST_EQUALS( actor.GetProperty( Actor::Property::SIZE_SCALE_POLICY ).Get< std::string >(), policy2, TEST_LOCATION );
+
+  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;
+
+  Actor actor = Actor::New();
+
+  // Defaults
+  DALI_TEST_EQUALS( actor.GetProperty( Actor::Property::WIDTH_FOR_HEIGHT ).Get< bool >(), false, TEST_LOCATION );
+  DALI_TEST_EQUALS( actor.GetProperty( Actor::Property::HEIGHT_FOR_WIDTH ).Get< bool >(), false, TEST_LOCATION );
+
+  // Set
+  actor.SetProperty( Actor::Property::WIDTH_FOR_HEIGHT, true );
+  DALI_TEST_EQUALS( actor.GetProperty( Actor::Property::WIDTH_FOR_HEIGHT ).Get< bool >(), true, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::HEIGHT_FOR_WIDTH, true );
+  DALI_TEST_EQUALS( actor.GetProperty( Actor::Property::HEIGHT_FOR_WIDTH ).Get< bool >(), true, TEST_LOCATION );
+
+  // Test setting another resize policy
+  actor.SetProperty( Actor::Property::WIDTH_RESIZE_POLICY, "FIXED" );
+  DALI_TEST_EQUALS( actor.GetProperty( Actor::Property::WIDTH_FOR_HEIGHT ).Get< bool >(), false, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliRelayoutProperties_Padding(void)
+{
+  TestApplication app;
+
+  Actor actor = Actor::New();
+
+  // Data
+  Vector4 padding( 1.0f, 2.0f, 3.0f, 4.0f );
+
+  // PADDING
+  actor.SetProperty( Actor::Property::PADDING, padding );
+  Vector4 paddingResult = actor.GetProperty( Actor::Property::PADDING ).Get< Vector4 >();
+
+  DALI_TEST_EQUALS( paddingResult, padding, Math::MACHINE_EPSILON_0, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliRelayoutProperties_MinimumMaximumSize(void)
+{
+  TestApplication app;
+
+  Actor actor = Actor::New();
+
+  // Data
+  Vector2 minSize( 1.0f, 2.0f );
+
+  actor.SetProperty( Actor::Property::MINIMUM_SIZE, minSize );
+  Vector2 resultMin = actor.GetProperty( Actor::Property::MINIMUM_SIZE ).Get< Vector2 >();
+
+  DALI_TEST_EQUALS( resultMin, minSize, Math::MACHINE_EPSILON_0, TEST_LOCATION );
+
+  Vector2 maxSize( 3.0f, 4.0f );
+
+  actor.SetProperty( Actor::Property::MAXIMUM_SIZE, maxSize );
+  Vector2 resultMax = actor.GetProperty( Actor::Property::MAXIMUM_SIZE ).Get< Vector2 >();
+
+  DALI_TEST_EQUALS( resultMax, maxSize, Math::MACHINE_EPSILON_0, TEST_LOCATION );
+
+  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 = false;
+  gActorNamesRelayout.clear();
+
+  Actor actor = Actor::New();
+  actor.SetName( "actor" );
+  actor.OnRelayoutSignal().Connect( OnRelayoutCallback );
+
+  // Sanity check
+  DALI_TEST_CHECK( ! gOnRelayoutCallBackCalled );
+
+  // 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, true, 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;
+}
+
+int UtcDaliActorAnchorPointPropertyAsString(void)
+{
+  TestApplication application;
+
+  Actor actor = Actor::New();
+
+  actor.SetProperty( Actor::Property::ANCHOR_POINT, "TOP_LEFT" );
+  DALI_TEST_EQUALS( actor.GetCurrentAnchorPoint(), ParentOrigin::TOP_LEFT, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::ANCHOR_POINT, "TOP_CENTER" );
+  DALI_TEST_EQUALS( actor.GetCurrentAnchorPoint(), ParentOrigin::TOP_CENTER, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::ANCHOR_POINT, "TOP_RIGHT" );
+  DALI_TEST_EQUALS( actor.GetCurrentAnchorPoint(), ParentOrigin::TOP_RIGHT, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::ANCHOR_POINT, "CENTER_LEFT" );
+  DALI_TEST_EQUALS( actor.GetCurrentAnchorPoint(), ParentOrigin::CENTER_LEFT, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::ANCHOR_POINT, "CENTER" );
+  DALI_TEST_EQUALS( actor.GetCurrentAnchorPoint(), ParentOrigin::CENTER, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::ANCHOR_POINT, "CENTER_RIGHT" );
+  DALI_TEST_EQUALS( actor.GetCurrentAnchorPoint(), ParentOrigin::CENTER_RIGHT, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::ANCHOR_POINT, "BOTTOM_LEFT" );
+  DALI_TEST_EQUALS( actor.GetCurrentAnchorPoint(), ParentOrigin::BOTTOM_LEFT, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::ANCHOR_POINT, "BOTTOM_CENTER" );
+  DALI_TEST_EQUALS( actor.GetCurrentAnchorPoint(), ParentOrigin::BOTTOM_CENTER, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::ANCHOR_POINT, "BOTTOM_RIGHT" );
+  DALI_TEST_EQUALS( actor.GetCurrentAnchorPoint(), ParentOrigin::BOTTOM_RIGHT, TEST_LOCATION );
+
+  // Invalid should not change anything
+  actor.SetProperty( Actor::Property::ANCHOR_POINT, "INVALID_ARG" );
+  DALI_TEST_EQUALS( actor.GetCurrentAnchorPoint(), ParentOrigin::BOTTOM_RIGHT, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliActorParentOriginPropertyAsString(void)
+{
+  TestApplication application;
+
+  Actor actor = Actor::New();
+
+  actor.SetProperty( Actor::Property::PARENT_ORIGIN, "TOP_LEFT" );
+  DALI_TEST_EQUALS( actor.GetCurrentParentOrigin(), ParentOrigin::TOP_LEFT, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::PARENT_ORIGIN, "TOP_CENTER" );
+  DALI_TEST_EQUALS( actor.GetCurrentParentOrigin(), ParentOrigin::TOP_CENTER, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::PARENT_ORIGIN, "TOP_RIGHT" );
+  DALI_TEST_EQUALS( actor.GetCurrentParentOrigin(), ParentOrigin::TOP_RIGHT, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::PARENT_ORIGIN, "CENTER_LEFT" );
+  DALI_TEST_EQUALS( actor.GetCurrentParentOrigin(), ParentOrigin::CENTER_LEFT, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::PARENT_ORIGIN, "CENTER" );
+  DALI_TEST_EQUALS( actor.GetCurrentParentOrigin(), ParentOrigin::CENTER, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::PARENT_ORIGIN, "CENTER_RIGHT" );
+  DALI_TEST_EQUALS( actor.GetCurrentParentOrigin(), ParentOrigin::CENTER_RIGHT, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::PARENT_ORIGIN, "BOTTOM_LEFT" );
+  DALI_TEST_EQUALS( actor.GetCurrentParentOrigin(), ParentOrigin::BOTTOM_LEFT, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::PARENT_ORIGIN, "BOTTOM_CENTER" );
+  DALI_TEST_EQUALS( actor.GetCurrentParentOrigin(), ParentOrigin::BOTTOM_CENTER, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::PARENT_ORIGIN, "BOTTOM_RIGHT" );
+  DALI_TEST_EQUALS( actor.GetCurrentParentOrigin(), ParentOrigin::BOTTOM_RIGHT, TEST_LOCATION );
+
+  // Invalid should not change anything
+  actor.SetProperty( Actor::Property::PARENT_ORIGIN, "INVALID_ARG" );
+  DALI_TEST_EQUALS( actor.GetCurrentParentOrigin(), ParentOrigin::BOTTOM_RIGHT, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliActorColorModePropertyAsString(void)
+{
+  TestApplication application;
+
+  Actor actor = Actor::New();
+
+  actor.SetProperty( Actor::Property::COLOR_MODE, "USE_OWN_COLOR" );
+  DALI_TEST_EQUALS( actor.GetColorMode(), USE_OWN_COLOR, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::COLOR_MODE, "USE_PARENT_COLOR" );
+  DALI_TEST_EQUALS( actor.GetColorMode(), USE_PARENT_COLOR, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::COLOR_MODE, "USE_OWN_MULTIPLY_PARENT_COLOR" );
+  DALI_TEST_EQUALS( actor.GetColorMode(), USE_OWN_MULTIPLY_PARENT_COLOR, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::COLOR_MODE, "USE_OWN_MULTIPLY_PARENT_ALPHA" );
+  DALI_TEST_EQUALS( actor.GetColorMode(), USE_OWN_MULTIPLY_PARENT_ALPHA, TEST_LOCATION );
+
+  // Invalid should not change anything
+  actor.SetProperty( Actor::Property::COLOR_MODE, "INVALID_ARG" );
+  DALI_TEST_EQUALS( actor.GetColorMode(), USE_OWN_MULTIPLY_PARENT_ALPHA, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliActorPositionInheritancePropertyAsString(void)
+{
+  TestApplication application;
+
+  Actor actor = Actor::New();
+
+  actor.SetProperty( Actor::Property::POSITION_INHERITANCE, "INHERIT_PARENT_POSITION" );
+  DALI_TEST_EQUALS( actor.GetPositionInheritanceMode(), INHERIT_PARENT_POSITION, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::POSITION_INHERITANCE, "USE_PARENT_POSITION" );
+  DALI_TEST_EQUALS( actor.GetPositionInheritanceMode(), USE_PARENT_POSITION, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::POSITION_INHERITANCE, "USE_PARENT_POSITION_PLUS_LOCAL_POSITION" );
+  DALI_TEST_EQUALS( actor.GetPositionInheritanceMode(), USE_PARENT_POSITION_PLUS_LOCAL_POSITION, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::POSITION_INHERITANCE, "DONT_INHERIT_POSITION" );
+  DALI_TEST_EQUALS( actor.GetPositionInheritanceMode(), DONT_INHERIT_POSITION, TEST_LOCATION );
+
+  // Invalid should not change anything
+  actor.SetProperty( Actor::Property::POSITION_INHERITANCE, "INVALID_ARG" );
+  DALI_TEST_EQUALS( actor.GetPositionInheritanceMode(), DONT_INHERIT_POSITION, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliActorDrawModePropertyAsString(void)
+{
+  TestApplication application;
+
+  Actor actor = Actor::New();
+
+  actor.SetProperty( Actor::Property::DRAW_MODE, "NORMAL" );
+  DALI_TEST_EQUALS( actor.GetDrawMode(), DrawMode::NORMAL, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::DRAW_MODE, "OVERLAY_2D" );
+  DALI_TEST_EQUALS( actor.GetDrawMode(), DrawMode::OVERLAY_2D, TEST_LOCATION );
+
+  actor.SetProperty( Actor::Property::DRAW_MODE, "STENCIL" );
+  DALI_TEST_EQUALS( actor.GetDrawMode(), DrawMode::STENCIL, TEST_LOCATION );
+
+  // Invalid should not change anything
+  actor.SetProperty( Actor::Property::DRAW_MODE, "INVALID_ARG" );
+  DALI_TEST_EQUALS( actor.GetDrawMode(), DrawMode::STENCIL, TEST_LOCATION );
+
+  END_TEST;
+}