Renaming of enum values for coding standards compliance.
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-PropertyNotification.cpp
index 690e6c4..7e65a8e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 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.
@@ -50,7 +50,8 @@ class TestClass : public ConnectionTracker
 {
 public:
 
-  TestClass()
+  TestClass(Integration::Scene scene )
+  : mScene( scene )
   {
   }
 
@@ -61,7 +62,7 @@ public:
   void Initialize()
   {
     mActor = Actor::New();
-    Stage::GetCurrent().Add( mActor );
+    mScene.Add( mActor );
     mNotification = mActor.AddPropertyNotification( Actor::Property::POSITION_X, GreaterThanCondition(100.0f) );
     mNotification.NotifySignal().Connect( this, &TestClass::OnPropertyNotify );
   }
@@ -78,7 +79,7 @@ public:
 
   void Terminate()
   {
-    Stage::GetCurrent().Remove( mActor );
+    mScene.Remove( mActor );
     mActor.Reset();
     mNotification.Reset();
   }
@@ -91,6 +92,7 @@ public:
 
   Actor mActor;
   PropertyNotification mNotification;
+  Integration::Scene mScene;
 };
 
 
@@ -160,6 +162,74 @@ int UtcDaliPropertyNotificationDownCastNegative(void)
   END_TEST;
 }
 
+int UtcDaliPropertyNotificationMoveConstructor(void)
+{
+  TestApplication application;
+
+  Actor actor = Actor::New();
+
+  PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X, GreaterThanCondition(100.0f));
+  DALI_TEST_CHECK( notification );
+  DALI_TEST_EQUALS( 2, notification.GetBaseObject().ReferenceCount(), TEST_LOCATION );
+
+  PropertyNotification movedNotification = std::move( notification );
+  DALI_TEST_CHECK( movedNotification );
+
+  // Check that object is moved (not copied, so ref count keeps the same)
+  DALI_TEST_EQUALS( 2, movedNotification.GetBaseObject().ReferenceCount(), TEST_LOCATION );
+  DALI_TEST_CHECK( !notification );
+
+  PropertyCondition condition = movedNotification.GetCondition();
+  DALI_TEST_CHECK( condition );
+  DALI_TEST_EQUALS( 2, condition.GetBaseObject().ReferenceCount(), TEST_LOCATION );
+  DALI_TEST_EQUALS( 1, condition.GetArgumentCount(), TEST_LOCATION );
+
+  PropertyCondition movedCondition = std::move( condition );
+  DALI_TEST_CHECK( movedCondition );
+
+  // Check that object is moved (not copied, so ref count keeps the same)
+  DALI_TEST_EQUALS( 2, movedCondition.GetBaseObject().ReferenceCount(), TEST_LOCATION );
+  DALI_TEST_EQUALS( 1, movedCondition.GetArgumentCount(), TEST_LOCATION );
+  DALI_TEST_CHECK( !condition );
+
+  END_TEST;
+}
+
+int UtcDaliPropertyNotificationMoveAssignment(void)
+{
+  TestApplication application;
+
+  Actor actor = Actor::New();
+
+  PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X, GreaterThanCondition(100.0f));
+  DALI_TEST_CHECK( notification );
+  DALI_TEST_EQUALS( 2, notification.GetBaseObject().ReferenceCount(), TEST_LOCATION );
+
+  PropertyNotification movedNotification;
+  movedNotification = std::move( notification );
+  DALI_TEST_CHECK( movedNotification );
+
+  // Check that object is moved (not copied, so ref count keeps the same)
+  DALI_TEST_EQUALS( 2, movedNotification.GetBaseObject().ReferenceCount(), TEST_LOCATION );
+  DALI_TEST_CHECK( !notification );
+
+  PropertyCondition condition = movedNotification.GetCondition();
+  DALI_TEST_CHECK( condition );
+  DALI_TEST_EQUALS( 2, condition.GetBaseObject().ReferenceCount(), TEST_LOCATION );
+  DALI_TEST_EQUALS( 1, condition.GetArgumentCount(), TEST_LOCATION );
+
+  PropertyCondition movedCondition;
+  movedCondition = std::move( condition );
+  DALI_TEST_CHECK( movedCondition );
+
+  // Check that object is moved (not copied, so ref count keeps the same)
+  DALI_TEST_EQUALS( 2, movedCondition.GetBaseObject().ReferenceCount(), TEST_LOCATION );
+  DALI_TEST_EQUALS( 1, movedCondition.GetArgumentCount(), TEST_LOCATION );
+  DALI_TEST_CHECK( !condition );
+
+  END_TEST;
+}
+
 int UtcDaliAddPropertyNotification(void)
 {
   TestApplication application; // Reset all test adapter return codes
@@ -168,7 +238,9 @@ int UtcDaliAddPropertyNotification(void)
   Actor actor = Actor::New();
 
   PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X, GreaterThanCondition(100.0f));
+  PropertyNotification notification2 = actor.AddPropertyNotification(Actor::Property::SIZE, StepCondition( 1.0f, 1.0f ));
   DALI_TEST_CHECK( notification );
+  DALI_TEST_CHECK( notification2 );
   END_TEST;
 }
 
@@ -176,7 +248,7 @@ int UtcDaliAddPropertyNotificationCallback(void)
 {
   TestApplication application; // Reset all test adapter return codes
 
-  TestClass* object = new TestClass;
+  TestClass* object = new TestClass(application.GetScene());
 
   object->Initialize();
   application.Render(RENDER_FRAME_INTERVAL);
@@ -185,7 +257,7 @@ int UtcDaliAddPropertyNotificationCallback(void)
   gCallBackCalled = false;
 
   tet_infoline(" UtcDaliAddPropertyNotificationCallback - Forcing notification condition true, should receive a notification");
-  object->mActor.SetPosition(Vector3(200.0f, 0.0f, 0.0f));
+  object->mActor.SetProperty( Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f));
   application.Render(RENDER_FRAME_INTERVAL);
   application.SendNotification();
   application.Render(RENDER_FRAME_INTERVAL);
@@ -194,7 +266,7 @@ int UtcDaliAddPropertyNotificationCallback(void)
   gCallBackCalled = false;
 
   tet_infoline(" UtcDaliAddPropertyNotificationCallback - Forcing notification condition false, should not receive a notification");
-  object->mActor.SetPosition(Vector3(0.0f, 0.0f, 0.0f));
+  object->mActor.SetProperty( Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f));
   application.Render(RENDER_FRAME_INTERVAL);
   application.SendNotification();
   application.Render(RENDER_FRAME_INTERVAL);
@@ -203,7 +275,7 @@ int UtcDaliAddPropertyNotificationCallback(void)
   gCallBackCalled = false;
 
   tet_infoline(" UtcDaliAddPropertyNotificationCallback - Deleting notification and it's owning object, should not receive a notification");
-  object->mActor.SetPosition(Vector3(200.0f, 0.0f, 0.0f));
+  object->mActor.SetProperty( Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f));
   application.Render(RENDER_FRAME_INTERVAL);
   application.SendNotification();
   object->Terminate();
@@ -219,7 +291,7 @@ int UtcDaliAddPropertyNotificationCallback(void)
 
   object->RemovePropertyNotification();
 
-  object->mActor.SetPosition(Vector3(200.0f, 0.0f, 0.0f));
+  object->mActor.SetProperty( Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f));
   application.Render(RENDER_FRAME_INTERVAL);
   application.SendNotification();
   application.Render(RENDER_FRAME_INTERVAL);
@@ -234,7 +306,7 @@ int UtcDaliAddPropertyNotificationCallback(void)
 
   object->RemovePropertyNotifications();
 
-  object->mActor.SetPosition(Vector3(200.0f, 0.0f, 0.0f));
+  object->mActor.SetProperty( Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f));
   application.Render(RENDER_FRAME_INTERVAL);
   application.SendNotification();
   application.Render(RENDER_FRAME_INTERVAL);
@@ -259,11 +331,41 @@ int UtcDaliAddPropertyNotificationTypeProperty(void)
   }
   catch ( DaliException& e )
   {
-    DALI_TEST_ASSERT( e, "false && \"Property notification added to event side only property", TEST_LOCATION );
+    DALI_TEST_ASSERT( e, "Property notification added to event side only property", TEST_LOCATION );
+  }
+  END_TEST;
+}
+
+int UtcDaliAddPropertyNotificationEventSidePropertyN(void)
+{
+  TestApplication application;
+
+  Actor actor = Actor::New();
+
+  // Currently, Type registry properties cannot be animated
+  try
+  {
+    actor.AddPropertyNotification( PROPERTY_REGISTRATION_MAX_INDEX - 1, GreaterThanCondition( 100.0f ) );
+  }
+  catch ( DaliException& e )
+  {
+    DALI_TEST_ASSERT( e, "Property notification added to event side only property", TEST_LOCATION );
   }
   END_TEST;
 }
 
+int UtcDaliAddPropertyNotificationSize(void)
+{
+  TestApplication application;
+  tet_infoline(" UtcDaliAddPropertyNotificationSize");
+
+  Actor actor = Actor::New();
+
+  PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::SIZE, StepCondition( 1.0f, 1.0f ));
+  DALI_TEST_CHECK( notification );
+  END_TEST;
+}
+
 int UtcDaliPropertyNotificationGetCondition(void)
 {
   TestApplication application;
@@ -344,7 +446,7 @@ int UtcDaliPropertyNotificationGetProperty(void)
                                                                     GreaterThanCondition(100.0f));
   Property::Index targetProperty = notification.GetTargetProperty();
 
-  DALI_TEST_EQUALS( targetProperty, Actor::Property::POSITION_X, TEST_LOCATION );
+  DALI_TEST_EQUALS( targetProperty, (Property::Index)Actor::Property::POSITION_X, TEST_LOCATION );
   END_TEST;
 }
 
@@ -357,10 +459,10 @@ int UtcDaliPropertyNotificationGetNotifyMode(void)
 
   PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X,
                                                                     GreaterThanCondition(100.0f));
-  notification.SetNotifyMode(PropertyNotification::NotifyOnChanged);
+  notification.SetNotifyMode(PropertyNotification::NOTIFY_ON_CHANGED);
   PropertyNotification::NotifyMode notifyMode = notification.GetNotifyMode();
 
-  DALI_TEST_EQUALS( notifyMode, PropertyNotification::NotifyOnChanged, TEST_LOCATION );
+  DALI_TEST_EQUALS( notifyMode, PropertyNotification::NOTIFY_ON_CHANGED, TEST_LOCATION );
   END_TEST;
 }
 
@@ -373,11 +475,11 @@ int UtcDaliPropertyNotificationGetNotifyResultP(void)
 
   PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X,
                                                                     GreaterThanCondition(100.0f));
-  notification.SetNotifyMode(PropertyNotification::NotifyOnChanged);
+  notification.SetNotifyMode(PropertyNotification::NOTIFY_ON_CHANGED);
   gCallBackCalled = false;
   notification.NotifySignal().Connect( &TestCallback );
 
-  actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f));
 
   application.Render(RENDER_FRAME_INTERVAL);
   application.SendNotification();
@@ -397,30 +499,30 @@ int UtcDaliPropertyNotificationGreaterThan(void)
   tet_infoline(" UtcDaliPropertyNotificationGreaterThan");
 
   Actor actor = Actor::New();
-  Stage::GetCurrent().Add(actor);
+  application.GetScene().Add(actor);
 
   PropertyNotification notification = actor.AddPropertyNotification( Actor::Property::POSITION_X, GreaterThanCondition(100.0f) );
   notification.NotifySignal().Connect( &TestCallback );
 
-  actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
 
   // Move right to satisfy condition
   gCallBackCalled = false;
-  actor.SetPosition(Vector3(200.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
 
   // Move left to un-satisfy condition
   gCallBackCalled = false;
-  actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( !gCallBackCalled );
 
   // Move right to satisfy condition again.
   gCallBackCalled = false;
   Wait(application, DEFAULT_WAIT_PERIOD);
-  actor.SetPosition(Vector3(200.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
   END_TEST;
@@ -432,30 +534,30 @@ int UtcDaliPropertyNotificationLessThan(void)
   tet_infoline(" UtcDaliPropertyNotificationLessThan");
 
   Actor actor = Actor::New();
-  Stage::GetCurrent().Add(actor);
+  application.GetScene().Add(actor);
 
   PropertyNotification notification = actor.AddPropertyNotification( Actor::Property::POSITION_X, LessThanCondition(100.0f ) );
   notification.NotifySignal().Connect( &TestCallback );
 
-  actor.SetPosition(Vector3(200.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
 
   // Move left to satisfy condition
   gCallBackCalled = false;
-  actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
 
   // Move right to un-satisfy condition
   gCallBackCalled = false;
-  actor.SetPosition(Vector3(200.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( !gCallBackCalled );
 
   // Move left to satisfy condition again.
   gCallBackCalled = false;
   Wait(application, DEFAULT_WAIT_PERIOD);
-  actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
   END_TEST;
@@ -467,30 +569,30 @@ int UtcDaliPropertyNotificationInside(void)
   tet_infoline(" UtcDaliPropertyNotificationInside");
 
   Actor actor = Actor::New();
-  Stage::GetCurrent().Add(actor);
+  application.GetScene().Add(actor);
 
   PropertyNotification notification = actor.AddPropertyNotification( Actor::Property::POSITION_X, InsideCondition(100.0f, 200.0f) );
   notification.NotifySignal().Connect( &TestCallback );
 
-  actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
 
   // Move inside to satisfy condition
   gCallBackCalled = false;
-  actor.SetPosition(Vector3(150.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(150.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
 
   // Move outside (right) to un-satisfy condition
   gCallBackCalled = false;
-  actor.SetPosition(Vector3(300.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(300.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( !gCallBackCalled );
 
   // Move inside to satisfy condition again.
   gCallBackCalled = false;
   Wait(application, DEFAULT_WAIT_PERIOD);
-  actor.SetPosition(Vector3(150.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(150.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
   END_TEST;
@@ -502,30 +604,30 @@ int UtcDaliPropertyNotificationOutside(void)
   tet_infoline(" UtcDaliPropertyNotificationOutside");
 
   Actor actor = Actor::New();
-  Stage::GetCurrent().Add(actor);
+  application.GetScene().Add(actor);
 
   PropertyNotification notification = actor.AddPropertyNotification( Actor::Property::POSITION_X, OutsideCondition(100.0f, 200.0f) );
   notification.NotifySignal().Connect( &TestCallback );
 
-  actor.SetPosition(Vector3(150.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(150.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
 
   // Move outside (left) to satisfy condition
   gCallBackCalled = false;
-  actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
 
   // Move inside to un-satisfy condition
   gCallBackCalled = false;
-  actor.SetPosition(Vector3(150.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(150.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( !gCallBackCalled );
 
   // Move outside (right) to satisfy condition again.
   gCallBackCalled = false;
   Wait(application, DEFAULT_WAIT_PERIOD);
-  actor.SetPosition(Vector3(300.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(300.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
   END_TEST;
@@ -537,7 +639,7 @@ int UtcDaliPropertyNotificationVectorComponentGreaterThan(void)
   tet_infoline(" UtcDaliPropertyNotificationGreaterThan");
 
   Actor actor = Actor::New();
-  Stage::GetCurrent().Add(actor);
+  application.GetScene().Add(actor);
 
   PropertyNotification notification = actor.AddPropertyNotification( Actor::Property::POSITION, 0, GreaterThanCondition(100.0f) );
   notification.NotifySignal().Connect( &TestCallback );
@@ -548,33 +650,33 @@ int UtcDaliPropertyNotificationVectorComponentGreaterThan(void)
   notification = actor.AddPropertyNotification( Actor::Property::COLOR, 3, GreaterThanCondition(0.5f) );
   notification.NotifySignal().Connect( &TestCallback );
 
-  actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f));
-  actor.SetColor(Vector4(0.0f, 0.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::COLOR,Vector4(0.0f, 0.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
 
   // Move right to satisfy XAxis condition
   gCallBackCalled = false;
-  actor.SetPosition(Vector3(200.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
 
   // Move down to satisfy YAxis condition
   gCallBackCalled = false;
-  actor.SetPosition(Vector3(200.0f, 200.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(200.0f, 200.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
 
   // Move forward to satisfy ZAxis
   gCallBackCalled = false;
   Wait(application, DEFAULT_WAIT_PERIOD);
-  actor.SetPosition(Vector3(200.0f, 200.0f, 200.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(200.0f, 200.0f, 200.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
 
   // Change alpha Colour to satisfy w/alpha component condition
   gCallBackCalled = false;
   Wait(application, DEFAULT_WAIT_PERIOD);
-  actor.SetColor(Vector4(0.0f, 0.0f, 0.0f, 1.0f));
+  actor.SetProperty( Actor::Property::COLOR,Vector4(0.0f, 0.0f, 0.0f, 1.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
   END_TEST;
@@ -586,7 +688,7 @@ int UtcDaliPropertyNotificationVectorComponentLessThan(void)
   tet_infoline(" UtcDaliPropertyNotificationLessThan");
 
   Actor actor = Actor::New();
-  Stage::GetCurrent().Add(actor);
+  application.GetScene().Add(actor);
 
   PropertyNotification notification = actor.AddPropertyNotification( Actor::Property::POSITION, 0, LessThanCondition(-100.0f) );
   notification.NotifySignal().Connect( &TestCallback );
@@ -597,33 +699,33 @@ int UtcDaliPropertyNotificationVectorComponentLessThan(void)
   notification = actor.AddPropertyNotification( Actor::Property::COLOR, 3, LessThanCondition(0.5f) );
   notification.NotifySignal().Connect( &TestCallback );
 
-  actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f));
-  actor.SetColor(Vector4(0.0f, 0.0f, 0.0f, 1.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::COLOR,Vector4(0.0f, 0.0f, 0.0f, 1.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
 
   // Move left to satisfy XAxis condition
   gCallBackCalled = false;
-  actor.SetPosition(Vector3(-200.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(-200.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
 
   // Move up to satisfy YAxis condition
   gCallBackCalled = false;
-  actor.SetPosition(Vector3(-200.0f, -200.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(-200.0f, -200.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
 
   // Move back to satisfy ZAxis
   gCallBackCalled = false;
   Wait(application, DEFAULT_WAIT_PERIOD);
-  actor.SetPosition(Vector3(-200.0f, -200.0f, -200.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(-200.0f, -200.0f, -200.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
 
   // Change alpha Colour to satisfy w/alpha component condition
   gCallBackCalled = false;
   Wait(application, DEFAULT_WAIT_PERIOD);
-  actor.SetColor(Vector4(0.0f, 0.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::COLOR,Vector4(0.0f, 0.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
   END_TEST;
@@ -635,7 +737,7 @@ int UtcDaliPropertyNotificationVectorComponentInside(void)
   tet_infoline(" UtcDaliPropertyNotificationInside");
 
   Actor actor = Actor::New();
-  Stage::GetCurrent().Add(actor);
+  application.GetScene().Add(actor);
 
   PropertyNotification notification = actor.AddPropertyNotification( Actor::Property::POSITION, 0, InsideCondition(-100.0f, 100.0f) );
   notification.NotifySignal().Connect( &TestCallback );
@@ -647,33 +749,33 @@ int UtcDaliPropertyNotificationVectorComponentInside(void)
   notification.NotifySignal().Connect( &TestCallback );
 
   // set outside all conditions
-  actor.SetPosition(Vector3(200.0f, 200.0f, 200.0f));
-  actor.SetColor(Vector4(0.0f, 0.0f, 0.0f, 1.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(200.0f, 200.0f, 200.0f));
+  actor.SetProperty( Actor::Property::COLOR,Vector4(0.0f, 0.0f, 0.0f, 1.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
 
   // Move x to inside condition
   gCallBackCalled = false;
-  actor.SetPosition(Vector3(0.0f, 200.0f, 200.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(0.0f, 200.0f, 200.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
 
   // Move y to inside condition
   gCallBackCalled = false;
-  actor.SetPosition(Vector3(0.0f, 0.0f, 200.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(0.0f, 0.0f, 200.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
 
   // Move z to inside condition
   gCallBackCalled = false;
   Wait(application, DEFAULT_WAIT_PERIOD);
-  actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
 
   // change alpha to inside condition
   gCallBackCalled = false;
   Wait(application, DEFAULT_WAIT_PERIOD);
-  actor.SetColor(Vector4(0.0f, 0.0f, 0.0f, 0.5f));
+  actor.SetProperty( Actor::Property::COLOR,Vector4(0.0f, 0.0f, 0.0f, 0.5f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
   END_TEST;
@@ -685,7 +787,7 @@ int UtcDaliPropertyNotificationVectorComponentOutside(void)
   tet_infoline(" UtcDaliPropertyNotificationOutside");
 
   Actor actor = Actor::New();
-  Stage::GetCurrent().Add(actor);
+  application.GetScene().Add(actor);
 
   PropertyNotification notification = actor.AddPropertyNotification( Actor::Property::POSITION, 0, OutsideCondition(-100.0f, 100.0f) );
   notification.NotifySignal().Connect( &TestCallback );
@@ -697,38 +799,78 @@ int UtcDaliPropertyNotificationVectorComponentOutside(void)
   notification.NotifySignal().Connect( &TestCallback );
 
   // set inside all conditions
-  actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f));
-  actor.SetColor(Vector4(0.0f, 0.0f, 0.0f, 0.5f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::COLOR,Vector4(0.0f, 0.0f, 0.0f, 0.5f));
   Wait(application, DEFAULT_WAIT_PERIOD);
 
   // Move x to outside condition
   gCallBackCalled = false;
-  actor.SetPosition(Vector3(200.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
 
   // Move y to outside condition
   gCallBackCalled = false;
-  actor.SetPosition(Vector3(200.0f, 200.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(200.0f, 200.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
 
   // Move z to outside condition
   gCallBackCalled = false;
   Wait(application, DEFAULT_WAIT_PERIOD);
-  actor.SetPosition(Vector3(200.0f, 200.0f, 200.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(200.0f, 200.0f, 200.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
 
   // change alpha to outside condition
   gCallBackCalled = false;
   Wait(application, DEFAULT_WAIT_PERIOD);
-  actor.SetColor(Vector4(0.0f, 0.0f, 0.0f, 1.0f));
+  actor.SetProperty( Actor::Property::COLOR,Vector4(0.0f, 0.0f, 0.0f, 1.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
   DALI_TEST_CHECK( gCallBackCalled );
   END_TEST;
 }
 
+int UtcDaliPropertyNotificationSetSizeResultP(void)
+{
+  TestApplication application;
+  bool notifyResult;
+  tet_infoline(" UtcDaliPropertyNotificationSetSizeResultP");
+
+  Actor actor = Actor::New();
+
+  PropertyNotification notification = actor.AddPropertyNotification( Actor::Property::SIZE, StepCondition( 1.0f, 1.0f ) );
+  notification.SetNotifyMode(PropertyNotification::NOTIFY_ON_CHANGED);
+  gCallBackCalled = false;
+  notification.NotifySignal().Connect( &TestCallback );
+
+  actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f) );
+
+  application.Render(RENDER_FRAME_INTERVAL);
+  application.SendNotification();
+  application.Render(RENDER_FRAME_INTERVAL);
+  application.SendNotification();
+
+  notifyResult = notification.GetNotifyResult();
+
+  DALI_TEST_EQUALS( notifyResult, true, TEST_LOCATION );
+
+  gCallBackCalled = false;
+
+  actor.SetProperty( Actor::Property::SIZE, Vector2( 200.0f, 200.0f ) );
+
+  application.Render(RENDER_FRAME_INTERVAL);
+  application.SendNotification();
+  application.Render(RENDER_FRAME_INTERVAL);
+  application.SendNotification();
+
+  notifyResult = notification.GetNotifyResult();
+
+  DALI_TEST_EQUALS( notifyResult, true, TEST_LOCATION );
+
+  END_TEST;
+}
+
 int UtcDaliPropertyConditionGetArguments(void)
 {
   TestApplication application;
@@ -750,38 +892,206 @@ int UtcDaliPropertyConditionGetArguments(void)
   END_TEST;
 }
 
-int UtcDaliPropertyNotificationStep(void)
+int UtcDaliPropertyNotificationStepVector4(void)
 {
   TestApplication application;
-  tet_infoline(" UtcDaliPropertyNotificationStep");
+  tet_infoline(" UtcDaliPropertyNotificationStepVector4");
+
+  Actor actor = Actor::New();
+  application.GetScene().Add(actor);
+
+  const float step = 10.0f;
+  float initValue = 5.0f;
+
+  PropertyNotification notification = actor.AddPropertyNotification( Actor::Property::COLOR, StepCondition(step * 2, 0.0f) );
+  notification.NotifySignal().Connect( &TestCallback );
+
+  actor.SetProperty( Actor::Property::COLOR, Vector4(initValue, 0.0f, 0.0f, 0.0f));
+  Wait(application, DEFAULT_WAIT_PERIOD);
+
+  // test both directions
+  for( int i = 1 ; i < 10 ; )
+  {
+    // Move x to positive
+    gCallBackCalled = false;
+    actor.SetProperty( Actor::Property::COLOR, Vector4(initValue + (i++ * step), 0.0f, 0.0f, 0.0f));
+    Wait(application, DEFAULT_WAIT_PERIOD);
+    DALI_TEST_CHECK( !gCallBackCalled );
+
+    actor.SetProperty( Actor::Property::COLOR, Vector4(initValue + (i++ * step), 0.0f, 0.0f, 0.0f));
+    Wait(application, DEFAULT_WAIT_PERIOD);
+    DALI_TEST_CHECK( gCallBackCalled );
+  }
+
+  initValue = -5.0f;
+  actor.SetProperty( Actor::Property::COLOR, Vector4(initValue, 0.0f, 0.0f, 0.0f));
+  Wait(application, DEFAULT_WAIT_PERIOD);
+
+  for( int i = 1 ; i < 10 ; )
+  {
+    // Move x to negative
+    gCallBackCalled = false;
+    actor.SetProperty( Actor::Property::COLOR, Vector4(initValue -(i++ * step), 0.0f, 0.0f, 0.0f));
+    Wait(application, DEFAULT_WAIT_PERIOD);
+    DALI_TEST_CHECK( !gCallBackCalled );
+
+    actor.SetProperty( Actor::Property::COLOR, Vector4(initValue -(i++ * step), 0.0f, 0.0f, 0.0f));
+    Wait(application, DEFAULT_WAIT_PERIOD);
+    DALI_TEST_CHECK( gCallBackCalled );
+  }
+  END_TEST;
+}
+
+int UtcDaliPropertyNotificationStepFloat(void)
+{
+  TestApplication application;
+  tet_infoline(" UtcDaliPropertyNotificationStepFloat");
 
   Actor actor = Actor::New();
-  Stage::GetCurrent().Add(actor);
+  application.GetScene().Add(actor);
+
+  const float step = 10.0f;
+  float initValue = 5.0f;
 
-  const float step = 100.0f;
   // float
-  PropertyNotification notification = actor.AddPropertyNotification( Actor::Property::POSITION, 0, StepCondition(step, 50.0f) );
+  PropertyNotification notification = actor.AddPropertyNotification( Actor::Property::POSITION, 0, StepCondition(step * 2, 0.0f) );
   notification.NotifySignal().Connect( &TestCallback );
 
   // set initial position
-  actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(initValue, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
 
   // test both directions
-  for( int i = 1 ; i < 10 ; ++i )
+  for( int i = 1 ; i < 10 ; )
   {
-    // Move x to negative position
+    // Move x to positive
     gCallBackCalled = false;
-    actor.SetPosition(Vector3((i * step), 0.0f, 0.0f));
+    actor.SetProperty( Actor::Property::POSITION, Vector3(initValue + (i++ * step), 0.0f, 0.0f));
+    Wait(application, DEFAULT_WAIT_PERIOD);
+    DALI_TEST_CHECK( !gCallBackCalled );
+
+    actor.SetProperty( Actor::Property::POSITION, Vector3(initValue + (i++ * step), 0.0f, 0.0f));
     Wait(application, DEFAULT_WAIT_PERIOD);
     DALI_TEST_CHECK( gCallBackCalled );
   }
 
-  for( int i = 1 ; i < 10 ; ++i )
+  initValue = -5.0f;
+  actor.SetProperty( Actor::Property::POSITION, Vector3(initValue, 0.0f, 0.0f));
+  Wait(application, DEFAULT_WAIT_PERIOD);
+
+  for( int i = 1 ; i < 10 ; )
+  {
+    // Move x to negative
+    gCallBackCalled = false;
+    actor.SetProperty( Actor::Property::POSITION, Vector3(initValue -(i++ * step), 0.0f, 0.0f));
+    Wait(application, DEFAULT_WAIT_PERIOD);
+    DALI_TEST_CHECK( !gCallBackCalled );
+
+    actor.SetProperty( Actor::Property::POSITION, Vector3(initValue -(i++ * step), 0.0f, 0.0f));
+    Wait(application, DEFAULT_WAIT_PERIOD);
+    DALI_TEST_CHECK( gCallBackCalled );
+  }
+  END_TEST;
+}
+
+int UtcDaliPropertyNotificationStepVector2(void)
+{
+  TestApplication application;
+  tet_infoline(" UtcDaliPropertyNotificationStepVector2");
+
+  Actor actor = Actor::New();
+  application.GetScene().Add(actor);
+
+  const float step = 10.0f;
+  float initValue = 5.0f;
+
+  Property::Index propertyIndex = actor.RegisterProperty( "testProperty", Vector2::ZERO );
+
+  PropertyNotification notification = actor.AddPropertyNotification( propertyIndex, StepCondition(step * 2, 0.0f) );
+  notification.NotifySignal().Connect( &TestCallback );
+
+  actor.SetProperty( propertyIndex, Vector2(initValue, 0.0f));
+  Wait(application, DEFAULT_WAIT_PERIOD);
+
+  // test both directions
+  for( int i = 1 ; i < 10 ; )
+  {
+    // Move x to positive
+    gCallBackCalled = false;
+    actor.SetProperty( propertyIndex, Vector2(initValue + (i++ * step), 0.0f));
+    Wait(application, DEFAULT_WAIT_PERIOD);
+    DALI_TEST_CHECK( !gCallBackCalled );
+
+    actor.SetProperty( propertyIndex, Vector2(initValue + (i++ * step), 0.0f));
+    Wait(application, DEFAULT_WAIT_PERIOD);
+    DALI_TEST_CHECK( gCallBackCalled );
+  }
+
+  initValue = -5.0f;
+  actor.SetProperty( propertyIndex, Vector2(initValue, 0.0f));
+  Wait(application, DEFAULT_WAIT_PERIOD);
+
+  for( int i = 1 ; i < 10 ; )
+  {
+    // Move x to negative
+    gCallBackCalled = false;
+    actor.SetProperty( propertyIndex, Vector2(initValue -(i++ * step), 0.0f));
+    Wait(application, DEFAULT_WAIT_PERIOD);
+    DALI_TEST_CHECK( !gCallBackCalled );
+
+    actor.SetProperty( propertyIndex, Vector2(initValue -(i++ * step), 0.0f));
+    Wait(application, DEFAULT_WAIT_PERIOD);
+    DALI_TEST_CHECK( gCallBackCalled );
+  }
+  END_TEST;
+}
+
+int UtcDaliPropertyNotificationStepVector3(void)
+{
+  TestApplication application;
+  tet_infoline(" UtcDaliPropertyNotificationStepVector3");
+
+  Actor actor = Actor::New();
+  application.GetScene().Add(actor);
+
+  const float step = 10.0f;
+  float initValue = 5.0f;
+
+  // float
+  PropertyNotification notification = actor.AddPropertyNotification( Actor::Property::POSITION, StepCondition(step * 2, 0.0f) );
+  notification.NotifySignal().Connect( &TestCallback );
+
+  // set initial position
+  actor.SetProperty( Actor::Property::POSITION, Vector3(initValue, 0.0f, 0.0f));
+  Wait(application, DEFAULT_WAIT_PERIOD);
+
+  // test both directions
+  for( int i = 1 ; i < 10 ; )
+  {
+    // Move x to positive position
+    gCallBackCalled = false;
+    actor.SetProperty( Actor::Property::POSITION, Vector3( initValue + (i++ * step), 0.0f, 0.0f) );
+    Wait(application, DEFAULT_WAIT_PERIOD);
+    DALI_TEST_CHECK( !gCallBackCalled );
+
+    actor.SetProperty( Actor::Property::POSITION, Vector3( initValue + (i++ * step), 0.0f, 0.0f) );
+    Wait(application, DEFAULT_WAIT_PERIOD);
+    DALI_TEST_CHECK( gCallBackCalled );
+  }
+
+  initValue = -5.0f;
+  actor.SetProperty( Actor::Property::POSITION, Vector3( initValue, 0.0f, 0.0f) );
+  Wait(application, DEFAULT_WAIT_PERIOD);
+
+  for( int i = 1 ; i < 10 ; )
   {
     // Move x to negative position
     gCallBackCalled = false;
-    actor.SetPosition(Vector3(-(i * step), 0.0f, 0.0f));
+    actor.SetProperty( Actor::Property::POSITION, Vector3( initValue -(i++ * step), 0.0f, 0.0f) );
+    Wait(application, DEFAULT_WAIT_PERIOD);
+    DALI_TEST_CHECK( !gCallBackCalled );
+
+    actor.SetProperty( Actor::Property::POSITION, Vector3( initValue -(i++ * step), 0.0f, 0.0f) );
     Wait(application, DEFAULT_WAIT_PERIOD);
     DALI_TEST_CHECK( gCallBackCalled );
   }
@@ -794,7 +1104,7 @@ int UtcDaliPropertyNotificationVariableStep(void)
   tet_infoline(" UtcDaliPropertyNotificationStep");
 
   Actor actor = Actor::New();
-  Stage::GetCurrent().Add(actor);
+  application.GetScene().Add(actor);
 
   Dali::Vector<float> values;
 
@@ -809,7 +1119,7 @@ int UtcDaliPropertyNotificationVariableStep(void)
   notification.NotifySignal().Connect( &TestCallback );
 
   // set initial position lower than first position in list
-  actor.SetPosition(Vector3(values[0] - averageStep, 0.0f, 0.0f));
+  actor.SetProperty( Actor::Property::POSITION, Vector3(values[0] - averageStep, 0.0f, 0.0f));
   Wait(application, DEFAULT_WAIT_PERIOD);
 
   for( unsigned int i = 0 ; i < values.Count() - 1 ; ++i )
@@ -817,7 +1127,7 @@ int UtcDaliPropertyNotificationVariableStep(void)
     gCallBackCalled = false;
     // set position half way between the current values
     float position = values[i] + (0.5f * (values[i + 1] - values[i]));
-    actor.SetPosition(Vector3(position, 0.0f, 0.0f));
+    actor.SetProperty( Actor::Property::POSITION, Vector3(position, 0.0f, 0.0f));
     Wait(application, DEFAULT_WAIT_PERIOD);
     DALI_TEST_CHECK( gCallBackCalled );
   }
@@ -835,7 +1145,7 @@ int UtcDaliPropertyNotificationOrder(void)
   TestApplication application; // Reset all test adapter return codes
 
   Actor actor = Actor::New();
-  Stage::GetCurrent().Add(actor);
+  application.GetScene().Add(actor);
   // this should complete in first frame
   PropertyNotification notification1 = actor.AddPropertyNotification( Actor::Property::POSITION_X, GreaterThanCondition(90.0f) );
   notification1.NotifySignal().Connect( &TestCallback );
@@ -877,3 +1187,38 @@ int UtcDaliPropertyNotificationOrder(void)
 
   END_TEST;
 }
+
+int UtcDaliPropertyConditionGetArgumentNegative(void)
+{
+  TestApplication application;
+  Dali::PropertyCondition instance;
+  instance.Reset();
+  try
+  {
+    unsigned long arg1(0u);
+    instance.GetArgument(arg1);
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliPropertyConditionGetArgumentCountNegative(void)
+{
+  TestApplication application;
+  Dali::PropertyCondition instance;
+  instance.Reset();
+  try
+  {
+    instance.GetArgumentCount();
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}