[Tizen] Fix to do not update state of render task in case of uploadOnly
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-RenderTask.cpp
index 0b86a22..9b5e9de 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  *
  */
 
-#include <iostream>
-#include <stdlib.h>
-#include <dali/public-api/dali-core.h>
-#include <dali/devel-api/events/hit-test-algorithm.h>
 #include <dali-test-suite-utils.h>
+#include <dali/devel-api/events/hit-test-algorithm.h>
 #include <dali/integration-api/debug.h>
+#include <dali/public-api/dali-core.h>
+#include <mesh-builder.h>
+#include <stdlib.h>
+#include <test-actor-utils.h>
 #include <test-native-image.h>
 
-#include <mesh-builder.h>
+#include <iostream>
 
-#define BOOLSTR(x) ((x)?"T":"F")
+#define BOOLSTR(x) ((x) ? "T" : "F")
 
 //& set: DaliRenderTask
 
@@ -79,8 +80,7 @@ void utc_dali_render_task_cleanup(void)
 
 namespace // unnamed namespace
 {
-
-const int RENDER_FRAME_INTERVAL = 16;                           ///< Duration of each frame in ms. (at approx 60FPS)
+const int RENDER_FRAME_INTERVAL = 16; ///< Duration of each frame in ms. (at approx 60FPS)
 
 /*
  * Simulate time passed by.
@@ -95,7 +95,7 @@ int Wait(TestApplication& application, int duration = 0)
 {
   int time = 0;
 
-  for(int i = 0; i <= ( duration / RENDER_FRAME_INTERVAL); i++)
+  for(int i = 0; i <= (duration / RENDER_FRAME_INTERVAL); i++)
   {
     application.SendNotification();
     application.Render(RENDER_FRAME_INTERVAL);
@@ -107,12 +107,12 @@ int Wait(TestApplication& application, int duration = 0)
 
 struct RenderTaskFinished
 {
-  RenderTaskFinished( bool& finished )
-  : finished( finished )
+  RenderTaskFinished(bool& finished)
+  : finished(finished)
   {
   }
 
-  void operator()( RenderTask& renderTask )
+  void operator()(RenderTask& renderTask)
   {
     finished = true;
   }
@@ -122,117 +122,101 @@ struct RenderTaskFinished
 
 struct RenderTaskFinishedRemoveSource
 {
-  RenderTaskFinishedRemoveSource( bool& finished )
-  : finished( finished ),
+  RenderTaskFinishedRemoveSource(bool& finished)
+  : finished(finished),
     finishedOnce(false)
   {
   }
 
-  void operator()( RenderTask& renderTask )
+  void operator()(RenderTask& renderTask)
   {
     DALI_TEST_CHECK(finishedOnce == false);
-    finished = true;
-    finishedOnce = true;
+    finished       = true;
+    finishedOnce   = true;
     Actor srcActor = renderTask.GetSourceActor();
     UnparentAndReset(srcActor);
   }
 
   bool& finished;
-  bool finishedOnce;
+  bool  finishedOnce;
 };
 
 struct RenderTaskFinishedRenderAgain
 {
-  RenderTaskFinishedRenderAgain( bool& finished )
-  : finished( finished ),
+  RenderTaskFinishedRenderAgain(bool& finished)
+  : finished(finished),
     finishedOnce(false)
   {
   }
 
-  void operator()( RenderTask& renderTask )
+  void operator()(RenderTask& renderTask)
   {
     DALI_TEST_CHECK(finishedOnce == false);
-    finished = true;
+    finished     = true;
     finishedOnce = true;
     renderTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
   }
 
   bool& finished;
-  bool finishedOnce;
+  bool  finishedOnce;
 };
 
-
-bool TestScreenToFrameBufferFunction( Vector2& coordinates )
+bool TestScreenToFrameBufferFunction(Vector2& coordinates)
 {
-  coordinates = coordinates + Vector2( 1, 2 );
+  coordinates = coordinates + Vector2(1, 2);
 
   return true;
 }
 
 Actor CreateRenderableActorSuccess(TestApplication& application, std::string filename)
 {
-  PrepareResourceImage( application, 80u, 80u, Pixel::RGBA8888 );
-  Image image = ResourceImage::New(filename);
-  Actor actor = CreateRenderableActor(image);
-  actor.SetSize( 80, 80 );
-  return actor;
-}
-
-Actor CreateRenderableActorFailed(TestApplication& application, std::string filename)
-{
-  Image image = ResourceImage::New(filename);
-  DALI_TEST_CHECK( image );
-  Actor actor = CreateRenderableActor(image);
-  actor.SetSize( 80, 80 );
+  Actor actor = CreateRenderableActor();
+  actor.SetProperty(Actor::Property::SIZE, Vector2(80.0f, 80.0f));
   return actor;
 }
 
-Image CreateResourceImage(TestApplication& application, std::string filename)
+Texture CreateTexture(void)
 {
-  PrepareResourceImage( application, 80u, 80u, Pixel::RGBA8888 );
-  Image image = ResourceImage::New(filename);
-  DALI_TEST_CHECK( image );
-  return image;
+  return Dali::CreateTexture(TextureType::TEXTURE_2D, Pixel::RGBA8888, 80, 80);
 }
 
 RenderTask CreateRenderTask(TestApplication& application,
-                            CameraActor offscreenCamera,
-                            Actor rootActor,       // Reset default render task to point at this actor
-                            Actor secondRootActor, // Source actor
-                            unsigned int refreshRate,
-                            bool glSync)
+                            CameraActor      offscreenCamera,
+                            Actor            rootActor,       // Reset default render task to point at this actor
+                            Actor            secondRootActor, // Source actor
+                            unsigned int     refreshRate,
+                            bool             glSync,
+                            uint32_t         frameBufferWidth  = 10,
+                            uint32_t         frameBufferHeight = 10)
 {
   // Change main render task to use a different root
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
-  taskList.GetTask(0u).SetSourceActor( rootActor );
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
+  taskList.GetTask(0u).SetSourceActor(rootActor);
 
-  FrameBufferImage frameBufferImage;
-  if( glSync )
-  {
-    NativeImageInterfacePtr testNativeImagePtr = TestNativeImage::New(10, 10);
-    frameBufferImage= FrameBufferImage::New( *(testNativeImagePtr.Get()) );
-  }
-  else
+  FrameBuffer frameBuffer = FrameBuffer::New(frameBufferWidth, frameBufferHeight);
+  if(glSync)
   {
-    frameBufferImage = FrameBufferImage::New( 10, 10 );
+    NativeImageInterfacePtr testNativeImagePtr = TestNativeImage::New(frameBufferWidth, frameBufferHeight);
+    Texture                 texture            = Texture::New(*testNativeImagePtr);
+    frameBuffer.AttachColorTexture(texture);
   }
 
   // Don't draw output framebuffer // '
 
   RenderTask newTask = taskList.CreateTask();
-  newTask.SetCameraActor( offscreenCamera );
-  newTask.SetSourceActor( secondRootActor );
-  newTask.SetInputEnabled( false );
-  newTask.SetClearColor( Vector4( 0.f, 0.f, 0.f, 0.f ) );
-  newTask.SetClearEnabled( true );
-  newTask.SetExclusive( true );
-  newTask.SetRefreshRate( refreshRate );
-  newTask.SetTargetFrameBuffer( frameBufferImage );
-  newTask.SetProperty( RenderTask::Property::REQUIRES_SYNC, glSync );
+  newTask.SetCameraActor(offscreenCamera);
+  newTask.SetSourceActor(secondRootActor);
+  newTask.SetInputEnabled(false);
+  newTask.SetClearColor(Vector4(0.f, 0.f, 0.f, 0.f));
+  newTask.SetClearEnabled(true);
+  newTask.SetExclusive(true);
+  newTask.SetRefreshRate(refreshRate);
+  newTask.SetFrameBuffer(frameBuffer);
+  newTask.SetProperty(RenderTask::Property::REQUIRES_SYNC, glSync);
   return newTask;
 }
 
-bool UpdateRender(TestApplication& application, TraceCallStack& callStack, bool testDrawn, bool& finishedSig, bool testFinished, bool testKeepUpdating, int lineNumber )
+bool UpdateRender(TestApplication& application, TraceCallStack& callStack, bool testDrawn, bool& finishedSig, bool testFinished, bool testKeepUpdating, int lineNumber)
 {
   finishedSig = false;
   callStack.Reset();
@@ -243,19 +227,19 @@ bool UpdateRender(TestApplication& application, TraceCallStack& callStack, bool
   application.SendNotification();
 
   bool sigPassed = false;
-  if( testFinished )
+  if(testFinished)
   {
     sigPassed = finishedSig;
   }
   else
   {
-    sigPassed = ! finishedSig;
+    sigPassed = !finishedSig;
   }
 
   bool drawResult = callStack.FindMethod("DrawElements") || callStack.FindMethod("DrawArrays");
 
   bool drawPassed = false;
-  if( testDrawn )
+  if(testDrawn)
   {
     drawPassed = drawResult;
   }
@@ -264,9 +248,9 @@ bool UpdateRender(TestApplication& application, TraceCallStack& callStack, bool
     drawPassed = !drawResult;
   }
 
-  bool keepUpdating = (application.GetUpdateStatus() != 0);
+  bool keepUpdating       = (application.GetUpdateStatus() != 0);
   bool keepUpdatingPassed = false;
-  if( testKeepUpdating )
+  if(testKeepUpdating)
   {
     keepUpdatingPassed = keepUpdating;
   }
@@ -278,17 +262,20 @@ bool UpdateRender(TestApplication& application, TraceCallStack& callStack, bool
   bool result = (sigPassed && drawPassed && keepUpdatingPassed);
 
   tet_printf("UpdateRender: Expected: Draw:%s Signal:%s KeepUpdating: %s  Actual: Draw:%s  Signal:%s KeepUpdating: %s  %s, line %d\n",
-             BOOLSTR(testDrawn), BOOLSTR(testFinished), BOOLSTR(testKeepUpdating),
-             BOOLSTR(drawResult), BOOLSTR(finishedSig), BOOLSTR(keepUpdating),
-             result ? "Passed":"Failed",
-             lineNumber );
+             BOOLSTR(testDrawn),
+             BOOLSTR(testFinished),
+             BOOLSTR(testKeepUpdating),
+             BOOLSTR(drawResult),
+             BOOLSTR(finishedSig),
+             BOOLSTR(keepUpdating),
+             result ? "Passed" : "Failed",
+             lineNumber);
 
   return result;
 }
 
 } // unnamed namespace
 
-
 /****************************************************************************************************/
 /****************************************************************************************************/
 /********************************   TEST CASES BELOW   **********************************************/
@@ -301,16 +288,16 @@ int UtcDaliRenderTaskDownCast01(void)
 
   tet_infoline("Testing RenderTask::DownCast()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
-  BaseHandle base = taskList.GetTask( 0u );
-  DALI_TEST_CHECK( base );
+  BaseHandle base = taskList.GetTask(0u);
+  DALI_TEST_CHECK(base);
 
-  RenderTask task = RenderTask::DownCast( base );
-  DALI_TEST_CHECK( task );
+  RenderTask task = RenderTask::DownCast(base);
+  DALI_TEST_CHECK(task);
 
   // Try calling a method
-  DALI_TEST_CHECK( task.GetSourceActor() );
+  DALI_TEST_CHECK(task.GetSourceActor());
   END_TEST;
 }
 
@@ -322,8 +309,8 @@ int UtcDaliRenderTaskDownCast02(void)
 
   Actor actor = Actor::New();
 
-  RenderTask task = RenderTask::DownCast( actor );
-  DALI_TEST_CHECK( ! task );
+  RenderTask task = RenderTask::DownCast(actor);
+  DALI_TEST_CHECK(!task);
 
   END_TEST;
 }
@@ -332,51 +319,50 @@ int UtcDaliRenderTaskSetSourceActorN(void)
 {
   TestApplication application;
   tet_infoline("Testing RenderTask::SetSourceActor() Negative - try with empty actor handle");
-  Stage stage = Stage::GetCurrent();
+  Integration::Scene stage = application.GetScene();
 
   Actor srcActor;
 
-  RenderTaskList taskList = stage.GetRenderTaskList();
-  RenderTask renderTask = taskList.CreateTask();
+  RenderTaskList taskList   = stage.GetRenderTaskList();
+  RenderTask     renderTask = taskList.CreateTask();
   renderTask.SetSourceActor(srcActor);
 
   application.SendNotification();
   application.Render();
 
-  DALI_TEST_CHECK( ! renderTask.GetSourceActor() );
+  DALI_TEST_CHECK(!renderTask.GetSourceActor());
   END_TEST;
 }
 
-
 int UtcDaliRenderTaskSetSourceActorP01(void)
 {
   TestApplication application;
 
   tet_infoline("Testing RenderTask::SetSourceActor() Positive - check that setting a non-renderable actor stops existing source actor being rendered ");
 
-  Stage stage = Stage::GetCurrent();
-  RenderTaskList taskList = stage.GetRenderTaskList();
-  RenderTask task = taskList.GetTask( 0u );
+  Integration::Scene stage    = application.GetScene();
+  RenderTaskList     taskList = stage.GetRenderTaskList();
+  RenderTask         task     = taskList.GetTask(0u);
 
   Actor actor = task.GetSourceActor();
-  DALI_TEST_CHECK( actor );
+  DALI_TEST_CHECK(actor);
 
-  BufferImage img = BufferImage::New( 1,1 );
-  Actor newActor = CreateRenderableActor( img );
-  newActor.SetSize(1,1);
-  stage.Add( newActor );
+  Texture img      = CreateTexture(TextureType::TEXTURE_2D, Pixel::RGBA8888, 1, 1);
+  Actor   newActor = CreateRenderableActor(img);
+  newActor.SetProperty(Actor::Property::SIZE, Vector2(1.0f, 1.0f));
+  stage.Add(newActor);
 
   Actor nonRenderableActor = Actor::New();
-  stage.Add( nonRenderableActor );
+  stage.Add(nonRenderableActor);
 
   // Stop the newActor from being rendered by changing the source actor
-  DALI_TEST_CHECK( nonRenderableActor );
-  task.SetSourceActor( nonRenderableActor );
-  DALI_TEST_CHECK( task.GetSourceActor() != actor );
-  DALI_TEST_CHECK( task.GetSourceActor() == nonRenderableActor );
+  DALI_TEST_CHECK(nonRenderableActor);
+  task.SetSourceActor(nonRenderableActor);
+  DALI_TEST_CHECK(task.GetSourceActor() != actor);
+  DALI_TEST_CHECK(task.GetSourceActor() == nonRenderableActor);
 
-  TestGlAbstraction& gl = application.GetGlAbstraction();
-  TraceCallStack& drawTrace = gl.GetDrawTrace();
+  TestGlAbstraction& gl        = application.GetGlAbstraction();
+  TraceCallStack&    drawTrace = gl.GetDrawTrace();
   drawTrace.Enable(true);
 
   // Update & Render nothing!
@@ -385,45 +371,43 @@ int UtcDaliRenderTaskSetSourceActorP01(void)
   application.Render();
 
   // Check that nothing was rendered
-  DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 0, TEST_LOCATION );
+  DALI_TEST_EQUALS(drawTrace.CountMethod("DrawElements"), 0, TEST_LOCATION);
 
   END_TEST;
 }
 
-
 int UtcDaliRenderTaskSetSourceActorP02(void)
 {
   TestApplication application;
 
   tet_infoline("Testing RenderTask::SetSourceActor() Positive - check that switching source from a non-renderable to a renderable actor causes the texture to be drawn");
 
-  Stage stage = Stage::GetCurrent();
+  Integration::Scene stage = application.GetScene();
 
   RenderTaskList taskList = stage.GetRenderTaskList();
 
-  RenderTask task = taskList.GetTask( 0u );
+  RenderTask task = taskList.GetTask(0u);
 
   Actor actor = task.GetSourceActor();
-  DALI_TEST_CHECK( actor );
+  DALI_TEST_CHECK(actor);
 
-
-  BufferImage img = BufferImage::New( 1,1 );
-  Actor newActor = CreateRenderableActor( img );
-  newActor.SetSize(1,1);
-  stage.Add( newActor );
+  Texture img      = CreateTexture(TextureType::TEXTURE_2D, Pixel::RGBA8888, 1, 1);
+  Actor   newActor = CreateRenderableActor(img);
+  newActor.SetProperty(Actor::Property::SIZE, Vector2(1.0f, 1.0f));
+  stage.Add(newActor);
 
   Actor nonRenderableActor = Actor::New();
-  stage.Add( nonRenderableActor );
+  stage.Add(nonRenderableActor);
 
-  TestGlAbstraction& gl = application.GetGlAbstraction();
-  TraceCallStack& drawTrace = gl.GetDrawTrace();
+  TestGlAbstraction& gl        = application.GetGlAbstraction();
+  TraceCallStack&    drawTrace = gl.GetDrawTrace();
   drawTrace.Enable(true);
 
   // Stop the newActor from being rendered by changing the source actor
-  DALI_TEST_CHECK( nonRenderableActor );
-  task.SetSourceActor( nonRenderableActor );
-  DALI_TEST_CHECK( task.GetSourceActor() != actor );
-  DALI_TEST_CHECK( task.GetSourceActor() == nonRenderableActor );
+  DALI_TEST_CHECK(nonRenderableActor);
+  task.SetSourceActor(nonRenderableActor);
+  DALI_TEST_CHECK(task.GetSourceActor() != actor);
+  DALI_TEST_CHECK(task.GetSourceActor() == nonRenderableActor);
 
   // Update & Render nothing!
   application.GetGlAbstraction().ClearBoundTextures();
@@ -431,13 +415,13 @@ int UtcDaliRenderTaskSetSourceActorP02(void)
   application.Render();
 
   // Check that nothing was rendered
-  DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 0, TEST_LOCATION );
+  DALI_TEST_EQUALS(drawTrace.CountMethod("DrawElements"), 0, TEST_LOCATION);
   drawTrace.Reset();
 
   // Set newActor as the new source Actor
-  task.SetSourceActor( newActor );
-  DALI_TEST_CHECK( task.GetSourceActor() != actor );
-  DALI_TEST_CHECK( task.GetSourceActor() == newActor );
+  task.SetSourceActor(newActor);
+  DALI_TEST_CHECK(task.GetSourceActor() != actor);
+  DALI_TEST_CHECK(task.GetSourceActor() == newActor);
 
   // Update & Render the newActor
   application.GetGlAbstraction().ClearBoundTextures();
@@ -445,31 +429,31 @@ int UtcDaliRenderTaskSetSourceActorP02(void)
   application.Render();
 
   // Check that the newActor was rendered
-  DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 1, TEST_LOCATION );
+  DALI_TEST_EQUALS(drawTrace.CountMethod("DrawElements"), 1, TEST_LOCATION);
   END_TEST;
 }
 
-int UtcDaliRenderTaskSetSourceActorOffStage(void)
+int UtcDaliRenderTaskSetSourceActorOffScene(void)
 {
   TestApplication application;
 
   tet_infoline("Testing RenderTask::SetSourceActor (on/off stage testing)");
 
-  Stage stage = Stage::GetCurrent();
-  RenderTaskList taskList = stage.GetRenderTaskList();
-  RenderTask task = taskList.GetTask( 0u );
+  Integration::Scene stage    = application.GetScene();
+  RenderTaskList     taskList = stage.GetRenderTaskList();
+  RenderTask         task     = taskList.GetTask(0u);
 
   Actor actor = task.GetSourceActor();
-  DALI_TEST_CHECK( actor );
+  DALI_TEST_CHECK(actor);
 
-  TestGlAbstraction& gl = application.GetGlAbstraction();
-  TraceCallStack& drawTrace = gl.GetDrawTrace();
+  TestGlAbstraction& gl        = application.GetGlAbstraction();
+  TraceCallStack&    drawTrace = gl.GetDrawTrace();
   drawTrace.Enable(true);
 
-  BufferImage img = BufferImage::New( 1,1 );
-  Actor newActor = CreateRenderableActor( img );
-  newActor.SetSize(1,1);
-  task.SetSourceActor( newActor );
+  Texture img      = CreateTexture(TextureType::TEXTURE_2D, Pixel::RGBA8888, 1, 1);
+  Actor   newActor = CreateRenderableActor(img);
+  newActor.SetProperty(Actor::Property::SIZE, Vector2(1.0f, 1.0f));
+  task.SetSourceActor(newActor);
   // Don't add newActor to stage yet   //'
 
   // Update & Render with the actor initially off-stage
@@ -477,10 +461,10 @@ int UtcDaliRenderTaskSetSourceActorOffStage(void)
   application.Render();
 
   // Check that nothing was rendered
-  DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 0, TEST_LOCATION );
+  DALI_TEST_EQUALS(drawTrace.CountMethod("DrawElements"), 0, TEST_LOCATION);
 
   // Now add to stage
-  stage.Add( newActor );
+  stage.Add(newActor);
 
   // Update & Render with the actor on-stage
   application.GetGlAbstraction().ClearBoundTextures();
@@ -488,16 +472,16 @@ int UtcDaliRenderTaskSetSourceActorOffStage(void)
   application.Render();
 
   // Check that the newActor was rendered
-  DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 1, TEST_LOCATION );
+  DALI_TEST_EQUALS(drawTrace.CountMethod("DrawElements"), 1, TEST_LOCATION);
   drawTrace.Reset();
 
   // Now remove from stage
-  stage.Remove( newActor );
+  stage.Remove(newActor);
 
   // Update & Render with the actor off-stage
   application.SendNotification();
   application.Render();
-  DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 0, TEST_LOCATION );
+  DALI_TEST_EQUALS(drawTrace.CountMethod("DrawElements"), 0, TEST_LOCATION);
 
   END_TEST;
 }
@@ -508,27 +492,27 @@ int UtcDaliRenderTaskSetSourceActorEmpty(void)
 
   tet_infoline("Testing RenderTask::SetSourceActor (empty handle case)");
 
-  Stage stage = Stage::GetCurrent();
-  RenderTaskList taskList = stage.GetRenderTaskList();
-  RenderTask task = taskList.GetTask( 0u );
+  Integration::Scene stage    = application.GetScene();
+  RenderTaskList     taskList = stage.GetRenderTaskList();
+  RenderTask         task     = taskList.GetTask(0u);
 
   Actor actor = task.GetSourceActor();
-  DALI_TEST_CHECK( actor );
+  DALI_TEST_CHECK(actor);
 
-  BufferImage img = BufferImage::New( 1,1 );
-  Actor newActor = CreateRenderableActor( img );
-  newActor.SetSize(1,1);
-  stage.Add( newActor );
+  Texture img      = CreateTexture(TextureType::TEXTURE_2D, Pixel::RGBA8888, 1, 1);
+  Actor   newActor = CreateRenderableActor(img);
+  newActor.SetProperty(Actor::Property::SIZE, Vector2(1.0f, 1.0f));
+  stage.Add(newActor);
 
   Actor nonRenderableActor = Actor::New();
-  stage.Add( nonRenderableActor );
+  stage.Add(nonRenderableActor);
 
   // Set with empty handle
-  task.SetSourceActor( Actor() );
-  DALI_TEST_CHECK( ! task.GetSourceActor() );
+  task.SetSourceActor(Actor());
+  DALI_TEST_CHECK(!task.GetSourceActor());
 
-  TestGlAbstraction& gl = application.GetGlAbstraction();
-  TraceCallStack& drawTrace = gl.GetDrawTrace();
+  TestGlAbstraction& gl        = application.GetGlAbstraction();
+  TraceCallStack&    drawTrace = gl.GetDrawTrace();
   drawTrace.Enable(true);
 
   // Update & Render nothing!
@@ -536,11 +520,11 @@ int UtcDaliRenderTaskSetSourceActorEmpty(void)
   application.Render();
 
   // Check that nothing was rendered
-  DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 0, TEST_LOCATION );
+  DALI_TEST_EQUALS(drawTrace.CountMethod("DrawElements"), 0, TEST_LOCATION);
 
   // Set with non-empty handle
-  task.SetSourceActor( newActor );
-  DALI_TEST_CHECK( task.GetSourceActor() == newActor );
+  task.SetSourceActor(newActor);
+  DALI_TEST_CHECK(task.GetSourceActor() == newActor);
 
   // Update & Render the newActor
   application.GetGlAbstraction().ClearBoundTextures();
@@ -548,7 +532,43 @@ int UtcDaliRenderTaskSetSourceActorEmpty(void)
   application.Render();
 
   // Check that the newActor was rendered
-  DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 1, TEST_LOCATION );
+  DALI_TEST_EQUALS(drawTrace.CountMethod("DrawElements"), 1, TEST_LOCATION);
+  END_TEST;
+}
+
+int UtcDaliRenderTaskSetSourceActorDestroyed(void)
+{
+  TestApplication application;
+
+  tet_infoline("Testing RenderTask::SetSourceActor - Set a source actor and destroy the source actor");
+
+  Integration::Scene stage    = application.GetScene();
+  RenderTaskList     taskList = stage.GetRenderTaskList();
+  RenderTask         task     = taskList.GetTask(0u);
+
+  Actor actor = task.GetSourceActor();
+  DALI_TEST_CHECK(actor);
+
+  Texture img = CreateTexture(TextureType::TEXTURE_2D, Pixel::RGBA8888, 1, 1);
+
+  Actor newActor = CreateRenderableActor(img);
+  newActor.SetProperty(Actor::Property::SIZE, Vector2(1.0f, 1.0f));
+  stage.Add(newActor);
+
+  task.SetSourceActor(newActor);
+
+  DALI_TEST_CHECK(task.GetSourceActor() != actor);
+  DALI_TEST_CHECK(task.GetSourceActor() == newActor);
+
+  application.SendNotification();
+  application.Render();
+
+  // Destroy the source actor
+  stage.Remove(newActor);
+  newActor.Reset();
+
+  DALI_TEST_CHECK(!task.GetSourceActor()); // The source actor should be an empty handle.
+
   END_TEST;
 }
 
@@ -558,16 +578,16 @@ int UtcDaliRenderTaskGetSourceActorP01(void)
 
   tet_infoline("Testing RenderTask::GetSourceActor() Check the default render task has a valid source actor");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
-  RenderTask task = taskList.GetTask( 0u );
+  RenderTask task = taskList.GetTask(0u);
 
   Actor actor = task.GetSourceActor();
-  DALI_TEST_CHECK( actor );
+  DALI_TEST_CHECK(actor);
 
   // By default the entire scene should be rendered
-  Actor root = Stage::GetCurrent().GetLayer( 0 );
-  DALI_TEST_CHECK( root == actor );
+  Actor root = application.GetScene().GetLayer(0);
+  DALI_TEST_CHECK(root == actor);
   END_TEST;
 }
 
@@ -577,13 +597,13 @@ int UtcDaliRenderTaskGetSourceActorP02(void)
 
   tet_infoline("Testing RenderTask::GetSourceActor() Create a new render task, Add a new actor to the stage and set it as the source of the new render task. Get its source actor and check that it is equivalent to what was set.");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
-  RenderTask task = taskList.CreateTask();
-  Actor actor = Actor::New();
-  Stage::GetCurrent().Add(actor);
-  task.SetSourceActor( actor );
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
+  RenderTask     task     = taskList.CreateTask();
+  Actor          actor    = Actor::New();
+  application.GetScene().Add(actor);
+  task.SetSourceActor(actor);
 
-  DALI_TEST_EQUALS( actor, task.GetSourceActor(), TEST_LOCATION );
+  DALI_TEST_EQUALS(actor, task.GetSourceActor(), TEST_LOCATION);
 
   END_TEST;
 }
@@ -599,9 +619,9 @@ int UtcDaliRenderTaskGetSourceActorN(void)
   {
     Actor actor = task.GetSourceActor();
   }
-  catch (Dali::DaliException& e)
+  catch(Dali::DaliException& e)
   {
-    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_PRINT_ASSERT(e);
     DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
   }
 
@@ -614,47 +634,52 @@ int UtcDaliRenderTaskSetExclusive(void)
 
   tet_infoline("Testing RenderTask::SetExclusive() Check that exclusion works");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
+
+  // Creates:
+  //           Root
+  //  Actor1   Layer    Layer
+  //           Actor2  Actor3
+
+  // Task 1 is the default render task, should render from Root, incl Actor2
+  // Task 2 uses Actor2 as a source actor (texture id 9)
 
   // Manipulate the GenTextures behaviour, to identify different actors
 
   std::vector<GLuint> ids;
-  ids.push_back( 8 ); // 8 = actor1
-  ids.push_back( 9 ); // 9 = actor2
-  ids.push_back( 10 ); // 10 = actor3
-  application.GetGlAbstraction().SetNextTextureIds( ids );
+  ids.push_back(8);  // 8 = actor1
+  ids.push_back(9);  // 9 = actor2
+  ids.push_back(10); // 10 = actor3
+  application.GetGlAbstraction().SetNextTextureIds(ids);
 
-  BufferImage img1 = BufferImage::New( 1,1 );
-  Actor actor1 = CreateRenderableActor( img1 );
-  actor1.SetSize(1,1);
-  Stage::GetCurrent().Add( actor1 );
+  Texture img1   = CreateTexture(TextureType::TEXTURE_2D, Pixel::RGBA8888, 1, 1);
+  Actor   actor1 = CreateRenderableActor(img1);
+  actor1.SetProperty(Actor::Property::SIZE, Vector2(1.0f, 1.0f));
+  application.GetScene().Add(actor1);
 
   // Update & Render actor1
   application.SendNotification();
   application.Render();
 
   // Check that the actor1 was rendered
-  const std::vector<GLuint>& boundTextures = application.GetGlAbstraction().GetBoundTextures( GL_TEXTURE0 );
-  DALI_TEST_GREATER( boundTextures.size(), static_cast<std::vector<GLuint>::size_type>( 0 ), TEST_LOCATION );
+  const std::vector<GLuint>& boundTextures = application.GetGlAbstraction().GetBoundTextures(GL_TEXTURE0);
+  DALI_TEST_GREATER(boundTextures.size(), static_cast<std::vector<GLuint>::size_type>(0), TEST_LOCATION);
 
-  if ( boundTextures.size() )
+  if(boundTextures.size())
   {
-    int c = 0;
-    DALI_TEST_EQUALS( boundTextures[c++], 8u/*unique to actor1*/, TEST_LOCATION );
-    if( boundTextures.size() > 1 )
-    {
-      DALI_TEST_EQUALS( boundTextures[c++], 8u/*unique to actor1*/, TEST_LOCATION );
-    }
+    int a = boundTextures.size() - 1;
+    DALI_TEST_EQUALS(boundTextures[a], 8u /*unique to actor1*/, TEST_LOCATION);
   }
 
-  BufferImage img2 = BufferImage::New( 1,1 );
-  Actor actor2 = CreateRenderableActor( img2 );
-  actor2.SetSize(1,1);
+  Texture img2 = CreateTexture(TextureType::TEXTURE_2D, Pixel::RGBA8888, 1, 1);
+
+  Actor actor2 = CreateRenderableActor(img2);
+  actor2.SetProperty(Actor::Property::SIZE, Vector2(1.0f, 1.0f));
 
   // Force actor2 to be rendered before actor1
   Layer layer = Layer::New();
-  Stage::GetCurrent().Add( layer );
-  layer.Add( actor2 );
+  application.GetScene().Add(layer);
+  layer.Add(actor2);
   layer.LowerToBottom();
 
   // Update & Render
@@ -663,27 +688,24 @@ int UtcDaliRenderTaskSetExclusive(void)
   application.Render();
 
   // Check that the actors were rendered
-  DALI_TEST_GREATER( boundTextures.size(), static_cast<std::vector<GLuint>::size_type>( 1 ), TEST_LOCATION );
+  DALI_TEST_GREATER(boundTextures.size(), static_cast<std::vector<GLuint>::size_type>(1), TEST_LOCATION);
 
-  if ( boundTextures.size() )
+  if(boundTextures.size() >= 2)
   {
-    int c = 0;
-    DALI_TEST_EQUALS( boundTextures[c++], 9u/*unique to actor2*/, TEST_LOCATION );
-    if( boundTextures.size() > 2 )
-    {
-      DALI_TEST_EQUALS( boundTextures[c++], 9u/*unique to actor1*/, TEST_LOCATION );
-    }
-    DALI_TEST_EQUALS( boundTextures[c++], 8u/*unique to actor1*/, TEST_LOCATION );
+    int a = boundTextures.size() - 2;
+    int b = boundTextures.size() - 1;
+    DALI_TEST_EQUALS(boundTextures[a], 9u /*unique to actor2*/, TEST_LOCATION);
+    DALI_TEST_EQUALS(boundTextures[b], 8u /*unique to actor1*/, TEST_LOCATION);
   }
 
-  BufferImage img3 = BufferImage::New( 1,1 );
-  Actor actor3 = CreateRenderableActor( img3 );
-  actor3.SetSize(1,1);
+  Texture img3   = CreateTexture(TextureType::TEXTURE_2D, Pixel::RGBA8888, 1, 1);
+  Actor   actor3 = CreateRenderableActor(img3);
+  actor3.SetProperty(Actor::Property::SIZE, Vector2(1.0f, 1.0f));
 
   // Force actor3 to be rendered before actor2
   layer = Layer::New();
-  Stage::GetCurrent().Add( layer );
-  layer.Add( actor3 );
+  application.GetScene().Add(layer);
+  layer.Add(actor3);
   layer.LowerToBottom();
 
   // Update & Render all actors
@@ -692,30 +714,28 @@ int UtcDaliRenderTaskSetExclusive(void)
   application.Render();
 
   // Check that the actors were rendered
-  DALI_TEST_GREATER( boundTextures.size(), static_cast<std::vector<GLuint>::size_type>( 2 ), TEST_LOCATION );
+  DALI_TEST_GREATER(boundTextures.size(), static_cast<std::vector<GLuint>::size_type>(2), TEST_LOCATION);
 
-  if ( boundTextures.size() )
+  if(boundTextures.size() >= 3)
   {
-    int c = 0;
-    DALI_TEST_EQUALS( boundTextures[c++], 10u/*unique to actor3*/, TEST_LOCATION );
-    if( boundTextures.size() > 3 )
-    {
-      DALI_TEST_EQUALS( boundTextures[c++], 10u/*unique to actor2*/, TEST_LOCATION );
-    }
-    DALI_TEST_EQUALS( boundTextures[c++], 9u/*unique to actor2*/, TEST_LOCATION );
-    DALI_TEST_EQUALS( boundTextures[c++], 8u/*unique to actor1*/, TEST_LOCATION );
+    int a = boundTextures.size() - 3;
+    int b = boundTextures.size() - 2;
+    int c = boundTextures.size() - 1;
+    DALI_TEST_EQUALS(boundTextures[a], 10u /*unique to actor3*/, TEST_LOCATION);
+    DALI_TEST_EQUALS(boundTextures[b], 9u /*unique to actor2*/, TEST_LOCATION);
+    DALI_TEST_EQUALS(boundTextures[c], 8u /*unique to actor1*/, TEST_LOCATION);
   }
 
   // Both actors are now connected to the root node
   // Setup 2 render-tasks - the first will render from the root-node, and the second from actor2
 
   // Not exclusive is the default
-  RenderTask task1 = taskList.GetTask( 0u );
-  DALI_TEST_CHECK( false == task1.IsExclusive() );
+  RenderTask task1 = taskList.GetTask(0u);
+  DALI_TEST_CHECK(false == task1.IsExclusive());
 
   RenderTask task2 = taskList.CreateTask();
-  DALI_TEST_CHECK( false == task2.IsExclusive() );
-  task2.SetSourceActor( actor2 );
+  DALI_TEST_CHECK(false == task2.IsExclusive());
+  task2.SetSourceActor(actor2);
 
   // Task1 should render all actors, and task 2 should render only actor2
 
@@ -723,23 +743,25 @@ int UtcDaliRenderTaskSetExclusive(void)
   application.SendNotification();
   application.Render();
 
-  DALI_TEST_EQUALS( boundTextures.size(), 4u, TEST_LOCATION );
-
-  if ( boundTextures.size() == 4 )
+  if(boundTextures.size() >= 4)
   {
     // Test that task 1 renders actor3, then actor2 & then actor1
-    DALI_TEST_CHECK( boundTextures[0] == 10u );
-    DALI_TEST_CHECK( boundTextures[1] == 9u );
-    DALI_TEST_CHECK( boundTextures[2] == 8u );
+    int a = boundTextures.size() - 4;
+    int b = boundTextures.size() - 3;
+    int c = boundTextures.size() - 2;
+    int d = boundTextures.size() - 1;
+    DALI_TEST_EQUALS(boundTextures[a], 10u /*unique to actor3*/, TEST_LOCATION);
+    DALI_TEST_EQUALS(boundTextures[b], 9u /*unique to actor2*/, TEST_LOCATION);
+    DALI_TEST_EQUALS(boundTextures[c], 8u /*unique to actor1*/, TEST_LOCATION);
 
     // Test that task 2 renders actor2
-    DALI_TEST_EQUALS( boundTextures[3], 9u, TEST_LOCATION );
+    DALI_TEST_EQUALS(boundTextures[d], 9u, TEST_LOCATION);
   }
 
   // Make actor2 exclusive to task2
 
-  task2.SetExclusive( true );
-  DALI_TEST_CHECK( true == task2.IsExclusive() );
+  task2.SetExclusive(true);
+  DALI_TEST_CHECK(true == task2.IsExclusive());
 
   // Task1 should render only actor1, and task 2 should render only actor2
 
@@ -747,21 +769,21 @@ int UtcDaliRenderTaskSetExclusive(void)
   application.SendNotification();
   application.Render();
 
-  DALI_TEST_EQUALS( boundTextures.size(), 3u, TEST_LOCATION );
-  if ( boundTextures.size() == 3 )
+  DALI_TEST_EQUALS(boundTextures.size(), 3u, TEST_LOCATION);
+  if(boundTextures.size() == 3)
   {
     // Test that task 1 renders actor3 & actor1
-    DALI_TEST_CHECK( boundTextures[0] == 10u );
-    DALI_TEST_CHECK( boundTextures[1] == 8u );
+    DALI_TEST_CHECK(boundTextures[0] == 10u);
+    DALI_TEST_CHECK(boundTextures[1] == 8u);
 
     // Test that task 2 renders actor2
-    DALI_TEST_CHECK( boundTextures[2] == 9u );
+    DALI_TEST_CHECK(boundTextures[2] == 9u);
   }
 
   // Create a renderable actor and replace the source actor in task2
   auto actor4 = CreateRenderableActor();
-  task2.SetSourceActor( actor3 );
-  DALI_TEST_EQUALS( actor3, task2.GetSourceActor(), TEST_LOCATION );
+  task2.SetSourceActor(actor3);
+  DALI_TEST_EQUALS(actor3, task2.GetSourceActor(), TEST_LOCATION);
 
   END_TEST;
 }
@@ -773,29 +795,29 @@ int UtcDaliRenderTaskSetExclusive02(void)
   tet_infoline("Testing RenderTask::SetExclusive() Check that changing from exclusive to not-exclusive works");
 
   std::vector<GLuint> ids;
-  ids.push_back( 8 ); // 8 = actor1
-  application.GetGlAbstraction().SetNextTextureIds( ids );
+  ids.push_back(8); // 8 = actor1
+  application.GetGlAbstraction().SetNextTextureIds(ids);
 
-  BufferImage img1 = BufferImage::New( 1,1 );
-  Actor actor1 = CreateRenderableActor( img1 );
-  actor1.SetSize(1,1);
-  Stage::GetCurrent().Add( actor1 );
+  Texture img1   = CreateTexture(TextureType::TEXTURE_2D, Pixel::RGBA8888, 1, 1);
+  Actor   actor1 = CreateRenderableActor(img1);
+  actor1.SetProperty(Actor::Property::SIZE, Vector2(1.0f, 1.0f));
+  application.GetScene().Add(actor1);
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
-  RenderTask task = taskList.CreateTask();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
+  RenderTask     task     = taskList.CreateTask();
 
-  task.SetSourceActor( actor1 );
+  task.SetSourceActor(actor1);
   task.SetExclusive(true); // Actor should only render once
 
-  TestGlAbstraction& gl = application.GetGlAbstraction();
-  TraceCallStack& drawTrace = gl.GetDrawTrace();
+  TestGlAbstraction& gl        = application.GetGlAbstraction();
+  TraceCallStack&    drawTrace = gl.GetDrawTrace();
   drawTrace.Enable(true);
 
   // Update & Render actor1
   application.SendNotification();
   application.Render();
 
-  DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 1, TEST_LOCATION );
+  DALI_TEST_EQUALS(drawTrace.CountMethod("DrawElements"), 1, TEST_LOCATION);
 
   // Set task to non-exclusive - actor1 should render twice:
   drawTrace.Reset();
@@ -803,7 +825,7 @@ int UtcDaliRenderTaskSetExclusive02(void)
   application.SendNotification();
   application.Render();
 
-  DALI_TEST_EQUALS( drawTrace.CountMethod("DrawElements"), 2, TEST_LOCATION );
+  DALI_TEST_EQUALS(drawTrace.CountMethod("DrawElements"), 2, TEST_LOCATION);
 
   END_TEST;
 }
@@ -819,9 +841,9 @@ int UtcDaliRenderTaskSetExclusiveN(void)
   {
     task.SetExclusive(true);
   }
-  catch (Dali::DaliException& e)
+  catch(Dali::DaliException& e)
   {
-    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_PRINT_ASSERT(e);
     DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
   }
   END_TEST;
@@ -833,14 +855,14 @@ int UtcDaliRenderTaskIsExclusive01(void)
 
   tet_infoline("Testing RenderTask::IsExclusive() Check default values are non-exclusive");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
   // Not exclusive is the default
-  RenderTask task = taskList.GetTask( 0u );
-  DALI_TEST_CHECK( false == task.IsExclusive() );
+  RenderTask task = taskList.GetTask(0u);
+  DALI_TEST_CHECK(false == task.IsExclusive());
 
   RenderTask newTask = taskList.CreateTask();
-  DALI_TEST_CHECK( false == newTask.IsExclusive() );
+  DALI_TEST_CHECK(false == newTask.IsExclusive());
 
   END_TEST;
 }
@@ -851,14 +873,14 @@ int UtcDaliRenderTaskIsExclusive02(void)
 
   tet_infoline("Testing RenderTask::IsExclusive() Check the getter returns set values");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
   // Not exclusive is the default
   RenderTask newTask = taskList.CreateTask();
-  DALI_TEST_EQUALS( newTask.IsExclusive(), false, TEST_LOCATION );
+  DALI_TEST_EQUALS(newTask.IsExclusive(), false, TEST_LOCATION);
 
   newTask.SetExclusive(true);
-  DALI_TEST_EQUALS( newTask.IsExclusive(), true, TEST_LOCATION );
+  DALI_TEST_EQUALS(newTask.IsExclusive(), true, TEST_LOCATION);
   END_TEST;
 }
 
@@ -872,11 +894,11 @@ int UtcDaliRenderTaskIsExclusiveN(void)
   try
   {
     bool x = task.IsExclusive();
-    (void) x;
+    (void)x;
   }
-  catch (Dali::DaliException& e)
+  catch(Dali::DaliException& e)
   {
-    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_PRINT_ASSERT(e);
     DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
   }
   END_TEST;
@@ -888,17 +910,17 @@ int UtcDaliRenderTaskSetInputEnabled(void)
 
   tet_infoline("Testing RenderTask::SetInputEnabled()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
   // Input is enabled by default
-  RenderTask task = taskList.GetTask( 0u );
-  DALI_TEST_CHECK( true == task.GetInputEnabled() );
+  RenderTask task = taskList.GetTask(0u);
+  DALI_TEST_CHECK(true == task.GetInputEnabled());
 
-  task.SetInputEnabled( false );
-  DALI_TEST_CHECK( false == task.GetInputEnabled() );
+  task.SetInputEnabled(false);
+  DALI_TEST_CHECK(false == task.GetInputEnabled());
 
-  task.SetInputEnabled( true );
-  DALI_TEST_CHECK( true == task.GetInputEnabled() );
+  task.SetInputEnabled(true);
+  DALI_TEST_CHECK(true == task.GetInputEnabled());
   END_TEST;
 }
 
@@ -908,17 +930,17 @@ int UtcDaliRenderTaskGetInputEnabled(void)
 
   tet_infoline("Testing RenderTask::GetInputEnabled()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
   // Input is enabled by default
-  RenderTask task = taskList.GetTask( 0u );
-  DALI_TEST_EQUALS( true, task.GetInputEnabled(), TEST_LOCATION );
+  RenderTask task = taskList.GetTask(0u);
+  DALI_TEST_EQUALS(true, task.GetInputEnabled(), TEST_LOCATION);
 
   RenderTask newTask = taskList.CreateTask();
-  DALI_TEST_EQUALS( true, newTask.GetInputEnabled(), TEST_LOCATION );
+  DALI_TEST_EQUALS(true, newTask.GetInputEnabled(), TEST_LOCATION);
 
   newTask.SetInputEnabled(false);
-  DALI_TEST_EQUALS( false, newTask.GetInputEnabled(), TEST_LOCATION );
+  DALI_TEST_EQUALS(false, newTask.GetInputEnabled(), TEST_LOCATION);
 
   END_TEST;
 }
@@ -929,44 +951,66 @@ int UtcDaliRenderTaskSetCameraActorP(void)
 
   tet_infoline("Testing RenderTask::SetCameraActor()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
-  RenderTask task = taskList.GetTask( 0u );
+  RenderTask task = taskList.GetTask(0u);
 
   Actor defaultCameraActor = task.GetCameraActor();
-  DALI_TEST_CHECK( defaultCameraActor );
+  DALI_TEST_CHECK(defaultCameraActor);
 
   CameraActor newCameraActor = CameraActor::New();
-  DALI_TEST_CHECK( newCameraActor );
+  DALI_TEST_CHECK(newCameraActor);
 
-  task.SetCameraActor( newCameraActor );
-  DALI_TEST_CHECK( task.GetCameraActor() != defaultCameraActor );
-  DALI_TEST_EQUALS( task.GetCameraActor(), newCameraActor, TEST_LOCATION );
+  task.SetCameraActor(newCameraActor);
+  DALI_TEST_CHECK(task.GetCameraActor() != defaultCameraActor);
+  DALI_TEST_EQUALS(task.GetCameraActor(), newCameraActor, TEST_LOCATION);
   END_TEST;
 }
 
-
 int UtcDaliRenderTaskSetCameraActorN(void)
 {
   TestApplication application;
 
   tet_infoline("Testing RenderTask::SetCameraActor() with empty actor handle");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
-  RenderTask task = taskList.GetTask( 0u );
+  RenderTask task = taskList.GetTask(0u);
 
   Actor actor = task.GetCameraActor();
-  DALI_TEST_CHECK( actor );
+  DALI_TEST_CHECK(actor);
 
   CameraActor cameraActor;
 
-  task.SetCameraActor( cameraActor );
-  DALI_TEST_EQUALS( (bool)task.GetCameraActor(), false, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetCameraActor(), cameraActor, TEST_LOCATION );
+  task.SetCameraActor(cameraActor);
+  DALI_TEST_EQUALS((bool)task.GetCameraActor(), false, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetCameraActor(), cameraActor, TEST_LOCATION);
   END_TEST;
 }
 
+int UtcDaliRenderTaskSetCameraActorDestroyed(void)
+{
+  TestApplication application;
+
+  tet_infoline("Testing RenderTask::SetCameraActor - Set a camera actor and destroy the camera actor");
+
+  Integration::Scene stage    = application.GetScene();
+  RenderTaskList     taskList = stage.GetRenderTaskList();
+  RenderTask         task     = taskList.GetTask(0u);
+
+  CameraActor newCameraActor = CameraActor::New();
+  task.SetCameraActor(newCameraActor);
+
+  DALI_TEST_EQUALS(task.GetCameraActor(), newCameraActor, TEST_LOCATION);
+
+  // Destroy the camera actor
+  newCameraActor.Reset();
+
+  CameraActor camera = task.GetCameraActor();
+  DALI_TEST_CHECK(!camera); // The camera actor should be an empty handle.
+
+  END_TEST;
+}
 
 int UtcDaliRenderTaskGetCameraActorP(void)
 {
@@ -974,14 +1018,14 @@ int UtcDaliRenderTaskGetCameraActorP(void)
 
   tet_infoline("Testing RenderTask::GetCameraActor()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
-  RenderTask task = taskList.GetTask( 0u );
+  RenderTask task = taskList.GetTask(0u);
 
   CameraActor actor = task.GetCameraActor();
-  DALI_TEST_CHECK( actor );
-  DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION );
-  DALI_TEST_GREATER( actor.GetFieldOfView(), 0.0f, TEST_LOCATION );
+  DALI_TEST_CHECK(actor);
+  DALI_TEST_EQUALS(actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION);
+  DALI_TEST_GREATER(actor.GetFieldOfView(), 0.0f, TEST_LOCATION);
   END_TEST;
 }
 
@@ -996,91 +1040,28 @@ int UtcDaliRenderTaskGetCameraActorN(void)
   {
     Actor actor = task.GetCameraActor();
   }
-  catch (Dali::DaliException& e)
+  catch(Dali::DaliException& e)
   {
-    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_PRINT_ASSERT(e);
     DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
   }
 
   END_TEST;
 }
 
-int UtcDaliRenderTaskSetTargetFrameBufferP(void)
-{
-  TestApplication application;
-
-  tet_infoline("Testing RenderTask::SetTargetFrameBuffer()");
-
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
-
-  RenderTask task = taskList.GetTask( 0u );
-
-  FrameBufferImage newImage = FrameBufferImage::New();
-  task.SetTargetFrameBuffer( newImage );
-  DALI_TEST_CHECK( task.GetTargetFrameBuffer() == newImage );
-  END_TEST;
-}
-
-int UtcDaliRenderTaskSetTargetFrameBufferN(void)
-{
-  TestApplication application;
-
-  tet_infoline("Testing RenderTask::SetTargetFrameBuffer()");
-
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
-
-  RenderTask task = taskList.GetTask( 0u );
-  FrameBufferImage newImage; // Empty handle
-  task.SetTargetFrameBuffer( newImage );
-  DALI_TEST_EQUALS( (bool)task.GetTargetFrameBuffer(), false, TEST_LOCATION );
-  END_TEST;
-}
-
-int UtcDaliRenderTaskGetTargetFrameBufferP(void)
-{
-  TestApplication application;
-
-  tet_infoline("Testing RenderTask::GetTargetFrameBuffer()");
-
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
-
-  RenderTask newTask = taskList.CreateTask();
-  FrameBufferImage fb = FrameBufferImage::New(128, 128, Pixel::RGBA8888);
-  newTask.SetTargetFrameBuffer( fb );
-  DALI_TEST_EQUALS( newTask.GetTargetFrameBuffer(), fb, TEST_LOCATION );
-  END_TEST;
-}
-
-int UtcDaliRenderTaskGetTargetFrameBufferN(void)
-{
-  TestApplication application;
-
-  tet_infoline("Testing RenderTask::GetTargetFrameBuffer()");
-
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
-
-  RenderTask task = taskList.GetTask( 0u );
-
-  // By default render-tasks do not render off-screen
-  FrameBufferImage image = task.GetTargetFrameBuffer();
-  DALI_TEST_CHECK( !image );
-
-  END_TEST;
-}
-
 int UtcDaliRenderTaskSetFrameBufferP(void)
 {
   TestApplication application;
 
   tet_infoline("Testing RenderTask::SetFrameBuffer()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
-  RenderTask task = taskList.GetTask( 0u );
+  RenderTask task = taskList.GetTask(0u);
 
-  FrameBuffer newFrameBuffer = FrameBuffer::New( 128u, 128u, FrameBuffer::Attachment::NONE );
-  task.SetFrameBuffer( newFrameBuffer );
-  DALI_TEST_CHECK( task.GetFrameBuffer() == newFrameBuffer );
+  FrameBuffer newFrameBuffer = FrameBuffer::New(128u, 128u, FrameBuffer::Attachment::NONE);
+  task.SetFrameBuffer(newFrameBuffer);
+  DALI_TEST_CHECK(task.GetFrameBuffer() == newFrameBuffer);
   END_TEST;
 }
 
@@ -1090,12 +1071,12 @@ int UtcDaliRenderTaskSetFrameBufferN(void)
 
   tet_infoline("Testing RenderTask::SetFrameBuffer()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
-  RenderTask task = taskList.GetTask( 0u );
+  RenderTask  task = taskList.GetTask(0u);
   FrameBuffer newFrameBuffer; // Empty handle
-  task.SetFrameBuffer( newFrameBuffer );
-  DALI_TEST_EQUALS( (bool)task.GetFrameBuffer(), false, TEST_LOCATION );
+  task.SetFrameBuffer(newFrameBuffer);
+  DALI_TEST_EQUALS((bool)task.GetFrameBuffer(), false, TEST_LOCATION);
   END_TEST;
 }
 
@@ -1105,13 +1086,13 @@ int UtcDaliRenderTaskGetFrameBufferP(void)
 
   tet_infoline("Testing RenderTask::GetFrameBuffer()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
-  RenderTask task = taskList.GetTask( 0u );
+  RenderTask task = taskList.GetTask(0u);
 
-  FrameBuffer newFrameBuffer = FrameBuffer::New( 1u, 1u, FrameBuffer::Attachment::NONE  );
-  task.SetFrameBuffer( newFrameBuffer );
-  DALI_TEST_CHECK( task.GetFrameBuffer() == newFrameBuffer );
+  FrameBuffer newFrameBuffer = FrameBuffer::New(1u, 1u, FrameBuffer::Attachment::NONE);
+  task.SetFrameBuffer(newFrameBuffer);
+  DALI_TEST_CHECK(task.GetFrameBuffer() == newFrameBuffer);
   END_TEST;
 }
 
@@ -1121,13 +1102,13 @@ int UtcDaliRenderTaskGetFrameBufferN(void)
 
   tet_infoline("Testing RenderTask::GetFrameBuffer()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
-  RenderTask task = taskList.GetTask( 0u );
+  RenderTask task = taskList.GetTask(0u);
 
-  // A scene creates frame buffer by default
+  // By default render-tasks do not render off-screen
   FrameBuffer frameBuffer = task.GetFrameBuffer();
-  DALI_TEST_CHECK( frameBuffer );
+  DALI_TEST_CHECK(!frameBuffer);
 
   END_TEST;
 }
@@ -1138,26 +1119,26 @@ int UtcDaliRenderTaskSetScreenToFrameBufferFunctionP(void)
 
   tet_infoline("Testing RenderTask::SetScreenToFrameBufferFunction()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
-  RenderTask task = taskList.GetTask( 0u );
+  RenderTask task = taskList.GetTask(0u);
 
-  task.SetScreenToFrameBufferFunction( TestScreenToFrameBufferFunction );
+  task.SetScreenToFrameBufferFunction(TestScreenToFrameBufferFunction);
 
-  Vector2 coordinates( 5, 10 );
-  Vector2 convertedCoordinates( 6, 12 ); // + Vector(1, 2)
+  Vector2 coordinates(5, 10);
+  Vector2 convertedCoordinates(6, 12); // + Vector(1, 2)
 
   RenderTask::ScreenToFrameBufferFunction func = task.GetScreenToFrameBufferFunction();
-  DALI_TEST_CHECK( func( coordinates ) );
-  DALI_TEST_CHECK( coordinates == convertedCoordinates );
+  DALI_TEST_CHECK(func(coordinates));
+  DALI_TEST_CHECK(coordinates == convertedCoordinates);
 
-  task.SetScreenToFrameBufferFunction( RenderTask::FULLSCREEN_FRAMEBUFFER_FUNCTION );
+  task.SetScreenToFrameBufferFunction(RenderTask::FULLSCREEN_FRAMEBUFFER_FUNCTION);
   func = task.GetScreenToFrameBufferFunction();
-  DALI_TEST_CHECK( func( coordinates ) );
+  DALI_TEST_CHECK(func(coordinates));
 
-  task.SetScreenToFrameBufferFunction( RenderTask::DEFAULT_SCREEN_TO_FRAMEBUFFER_FUNCTION );
+  task.SetScreenToFrameBufferFunction(RenderTask::DEFAULT_SCREEN_TO_FRAMEBUFFER_FUNCTION);
   func = task.GetScreenToFrameBufferFunction();
-  DALI_TEST_CHECK( ! func( coordinates ) );
+  DALI_TEST_CHECK(!func(coordinates));
   END_TEST;
 }
 
@@ -1170,11 +1151,11 @@ int UtcDaliRenderTaskSetScreenToFrameBufferFunctionN(void)
   RenderTask task; // Empty handle
   try
   {
-    task.SetScreenToFrameBufferFunction( TestScreenToFrameBufferFunction );
+    task.SetScreenToFrameBufferFunction(TestScreenToFrameBufferFunction);
   }
-  catch (Dali::DaliException& e)
+  catch(Dali::DaliException& e)
   {
-    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_PRINT_ASSERT(e);
     DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
   }
   END_TEST;
@@ -1186,16 +1167,16 @@ int UtcDaliRenderTaskGetScreenToFrameBufferFunctionP(void)
 
   tet_infoline("Testing RenderTask::GetScreenToFrameBufferFunction()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
-  RenderTask task = taskList.GetTask( 0u );
+  RenderTask task = taskList.GetTask(0u);
 
-  Vector2 originalCoordinates( 5, 10 );
-  Vector2 coordinates( 5, 10 );
+  Vector2 originalCoordinates(5, 10);
+  Vector2 coordinates(5, 10);
 
   RenderTask::ScreenToFrameBufferFunction func = task.GetScreenToFrameBufferFunction();
-  DALI_TEST_CHECK( !func( coordinates ) ); // conversion should fail by default
-  DALI_TEST_CHECK( coordinates == originalCoordinates ); // coordinates should not be modified
+  DALI_TEST_CHECK(!func(coordinates));                 // conversion should fail by default
+  DALI_TEST_CHECK(coordinates == originalCoordinates); // coordinates should not be modified
   END_TEST;
 }
 
@@ -1209,32 +1190,30 @@ int UtcDaliRenderTaskGetScreenToFrameBufferFunctionN(void)
   try
   {
     RenderTask::ScreenToFrameBufferFunction func = task.GetScreenToFrameBufferFunction();
-    (void) func;
+    (void)func;
   }
-  catch (Dali::DaliException& e)
+  catch(Dali::DaliException& e)
   {
-    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_PRINT_ASSERT(e);
     DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
   }
   END_TEST;
 }
 
-
 int UtcDaliRenderTaskGetScreenToFrameBufferMappingActorP(void)
 {
   TestApplication application;
   tet_infoline("Testing RenderTask::GetScreenToFrameBufferMappingActor ");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
-  RenderTask renderTask = taskList.CreateTask();
-  Actor mappingActor = Actor::New();
+  RenderTaskList taskList     = application.GetScene().GetRenderTaskList();
+  RenderTask     renderTask   = taskList.CreateTask();
+  Actor          mappingActor = Actor::New();
   renderTask.SetScreenToFrameBufferMappingActor(mappingActor);
 
-  DALI_TEST_EQUALS( mappingActor, renderTask.GetScreenToFrameBufferMappingActor(), TEST_LOCATION );
+  DALI_TEST_EQUALS(mappingActor, renderTask.GetScreenToFrameBufferMappingActor(), TEST_LOCATION);
   END_TEST;
 }
 
-
 int UtcDaliRenderTaskGetScreenToFrameBufferMappingActorN(void)
 {
   TestApplication application;
@@ -1246,9 +1225,9 @@ int UtcDaliRenderTaskGetScreenToFrameBufferMappingActorN(void)
     Actor mappingActor;
     task.SetScreenToFrameBufferMappingActor(mappingActor);
   }
-  catch (Dali::DaliException& e)
+  catch(Dali::DaliException& e)
   {
-    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_PRINT_ASSERT(e);
     DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
   }
   END_TEST;
@@ -1259,12 +1238,12 @@ int UtcDaliRenderTaskGetScreenToFrameBufferMappingActor02N(void)
   TestApplication application;
   tet_infoline("Testing RenderTask::GetScreenToFrameBufferMappingActor with empty task handle");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
-  RenderTask renderTask = taskList.CreateTask();
-  Actor actor;
+  RenderTaskList taskList   = application.GetScene().GetRenderTaskList();
+  RenderTask     renderTask = taskList.CreateTask();
+  Actor          actor;
   renderTask.SetScreenToFrameBufferMappingActor(actor);
 
-  DALI_TEST_EQUALS( (bool)renderTask.GetScreenToFrameBufferMappingActor(), false, TEST_LOCATION);
+  DALI_TEST_EQUALS((bool)renderTask.GetScreenToFrameBufferMappingActor(), false, TEST_LOCATION);
   END_TEST;
 }
 
@@ -1274,14 +1253,14 @@ int UtcDaliRenderTaskGetViewportP01(void)
 
   tet_infoline("Testing RenderTask::GetViewport() on default task");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
-  RenderTask task = taskList.GetTask( 0u );
-  Viewport viewport = task.GetViewport();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
+  RenderTask     task     = taskList.GetTask(0u);
+  Viewport       viewport = task.GetViewport();
 
   // By default the viewport should match the stage width/height
-  Vector2 stageSize = Stage::GetCurrent().GetSize();
-  Viewport expectedViewport( 0, 0, stageSize.width, stageSize.height );
-  DALI_TEST_CHECK( viewport == expectedViewport );
+  Vector2  stageSize = application.GetScene().GetSize();
+  Viewport expectedViewport(0, 0, stageSize.width, stageSize.height);
+  DALI_TEST_CHECK(viewport == expectedViewport);
   END_TEST;
 }
 
@@ -1291,14 +1270,14 @@ int UtcDaliRenderTaskGetViewportP02(void)
 
   tet_infoline("Testing RenderTask::GetViewport() on new task");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
-  RenderTask task = taskList.CreateTask();
-  Viewport viewport = task.GetViewport();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
+  RenderTask     task     = taskList.CreateTask();
+  Viewport       viewport = task.GetViewport();
 
   // By default the viewport should match the stage width/height
-  Vector2 stageSize = Stage::GetCurrent().GetSize();
-  Viewport expectedViewport( 0, 0, stageSize.width, stageSize.height );
-  DALI_TEST_CHECK( viewport == expectedViewport );
+  Vector2  stageSize = application.GetScene().GetSize();
+  Viewport expectedViewport(0, 0, stageSize.width, stageSize.height);
+  DALI_TEST_CHECK(viewport == expectedViewport);
   END_TEST;
 }
 
@@ -1312,35 +1291,34 @@ int UtcDaliRenderTaskGetViewportN(void)
   try
   {
     Viewport viewport = task.GetViewport();
-    (void) viewport;
+    (void)viewport;
   }
-  catch (Dali::DaliException& e)
+  catch(Dali::DaliException& e)
   {
-    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_PRINT_ASSERT(e);
     DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
   }
   END_TEST;
 }
 
-
 int UtcDaliRenderTaskSetViewportP(void)
 {
   TestApplication application;
 
   tet_infoline("Testing RenderTask::SetViewport()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
-  RenderTask task = taskList.GetTask( 0u );
-  Vector2 stageSize = Stage::GetCurrent().GetSize();
-  Viewport newViewport( 0, 0, stageSize.width * 0.5f, stageSize.height * 0.5f );
-  task.SetViewport( newViewport );
+  RenderTask task      = taskList.GetTask(0u);
+  Vector2    stageSize = application.GetScene().GetSize();
+  Viewport   newViewport(0, 0, stageSize.width * 0.5f, stageSize.height * 0.5f);
+  task.SetViewport(newViewport);
 
   // Update (viewport is a property)
   application.SendNotification();
   application.Render();
 
-  DALI_TEST_CHECK( task.GetViewport() == newViewport );
+  DALI_TEST_CHECK(task.GetViewport() == newViewport);
   END_TEST;
 }
 
@@ -1350,96 +1328,95 @@ int UtcDaliRenderTaskSetViewportN(void)
 
   tet_infoline("Testing RenderTask::SetViewport()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
   RenderTask task;
   try
   {
-    Vector2 stageSize = Stage::GetCurrent().GetSize();
-    Viewport newViewport( 0, 0, stageSize.width * 0.5f, stageSize.height * 0.5f );
-    task.SetViewport( newViewport );
+    Vector2  stageSize = application.GetScene().GetSize();
+    Viewport newViewport(0, 0, stageSize.width * 0.5f, stageSize.height * 0.5f);
+    task.SetViewport(newViewport);
   }
-  catch (Dali::DaliException& e)
+  catch(Dali::DaliException& e)
   {
-    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_PRINT_ASSERT(e);
     DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
   }
 
   END_TEST;
 }
 
-
 int UtcDaliRenderTaskSetViewportPosition(void)
 {
   TestApplication application;
 
   tet_infoline("Testing RenderTask::SetViewportPosition()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
-  RenderTask task = taskList.GetTask( 0u );
+  RenderTask task = taskList.GetTask(0u);
 
   Viewport viewport = task.GetViewport();
 
   // By default the viewport should match the stage width/height
 
-  Vector2 stageSize = Stage::GetCurrent().GetSize();
-  Viewport expectedViewport( 0, 0, stageSize.width, stageSize.height );
-  DALI_TEST_CHECK( viewport == expectedViewport );
+  Vector2  stageSize = application.GetScene().GetSize();
+  Viewport expectedViewport(0, 0, stageSize.width, stageSize.height);
+  DALI_TEST_CHECK(viewport == expectedViewport);
 
   // 'Setter' test
   Vector2 newPosition(25.0f, 50.0f);
-  task.SetViewportPosition( newPosition );
+  task.SetViewportPosition(newPosition);
 
   // Update (viewport is a property)
   application.SendNotification();
   application.Render();
 
-  DALI_TEST_EQUALS( task.GetCurrentViewportPosition(), newPosition, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+  DALI_TEST_EQUALS(task.GetCurrentViewportPosition(), newPosition, Math::MACHINE_EPSILON_1, TEST_LOCATION);
 
   // Set by Property test
   Vector2 newPosition2(32.0f, 32.0f);
-  task.SetProperty( RenderTask::Property::VIEWPORT_POSITION, newPosition2 );
-  DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition2, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition, TEST_LOCATION ); // still the old position
+  task.SetProperty(RenderTask::Property::VIEWPORT_POSITION, newPosition2);
+  DALI_TEST_EQUALS(task.GetProperty<Vector2>(RenderTask::Property::VIEWPORT_POSITION), newPosition2, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetCurrentProperty<Vector2>(RenderTask::Property::VIEWPORT_POSITION), newPosition, TEST_LOCATION); // still the old position
 
   // Update
   application.SendNotification();
   application.Render();
 
-  DALI_TEST_EQUALS( task.GetCurrentViewportPosition(), newPosition2, Math::MACHINE_EPSILON_1, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition2, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition2, TEST_LOCATION );
+  DALI_TEST_EQUALS(task.GetCurrentViewportPosition(), newPosition2, Math::MACHINE_EPSILON_1, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetProperty<Vector2>(RenderTask::Property::VIEWPORT_POSITION), newPosition2, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetCurrentProperty<Vector2>(RenderTask::Property::VIEWPORT_POSITION), newPosition2, TEST_LOCATION);
 
-  Vector2 newPosition3(64.0f, 0.0f);
+  Vector2   newPosition3(64.0f, 0.0f);
   Animation animation = Animation::New(1.0f);
-  animation.AnimateTo( Property( task, RenderTask::Property::VIEWPORT_POSITION ), newPosition3, AlphaFunction::LINEAR );
+  animation.AnimateTo(Property(task, RenderTask::Property::VIEWPORT_POSITION), newPosition3, AlphaFunction::LINEAR);
   animation.Play();
 
-  DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition2, TEST_LOCATION );
+  DALI_TEST_EQUALS(task.GetProperty<Vector2>(RenderTask::Property::VIEWPORT_POSITION), newPosition3, Math::MACHINE_EPSILON_1, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetCurrentProperty<Vector2>(RenderTask::Property::VIEWPORT_POSITION), newPosition2, TEST_LOCATION);
 
   // Perform 1000ms worth of updates at which point animation should have completed.
   Wait(application, 1000);
-  DALI_TEST_EQUALS( task.GetCurrentViewportPosition(), newPosition3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+  DALI_TEST_EQUALS(task.GetCurrentViewportPosition(), newPosition3, Math::MACHINE_EPSILON_1, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetCurrentProperty<Vector2>(RenderTask::Property::VIEWPORT_POSITION), newPosition3, Math::MACHINE_EPSILON_1, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetProperty<Vector2>(RenderTask::Property::VIEWPORT_POSITION), newPosition3, Math::MACHINE_EPSILON_1, TEST_LOCATION);
 
   // Create another animation which animates by a certain value
-  const Vector2 newPosition4( 75.0f, 45.0f );
-  const Vector2 relativePosition( newPosition4 - newPosition3 );
-  animation = Animation::New( 1.0f );
-  animation.AnimateBy( Property( task, RenderTask::Property::VIEWPORT_POSITION ), relativePosition );
+  const Vector2 newPosition4(75.0f, 45.0f);
+  const Vector2 relativePosition(newPosition4 - newPosition3);
+  animation = Animation::New(1.0f);
+  animation.AnimateBy(Property(task, RenderTask::Property::VIEWPORT_POSITION), relativePosition);
   animation.Play();
 
-  DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition4, Math::MACHINE_EPSILON_1, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition3, TEST_LOCATION );
+  DALI_TEST_EQUALS(task.GetProperty<Vector2>(RenderTask::Property::VIEWPORT_POSITION), newPosition4, Math::MACHINE_EPSILON_1, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetCurrentProperty<Vector2>(RenderTask::Property::VIEWPORT_POSITION), newPosition3, TEST_LOCATION);
 
   // Perform 1000ms worth of updates at which point animation should have completed.
   Wait(application, 1000);
-  DALI_TEST_EQUALS( task.GetCurrentViewportPosition(), newPosition4, Math::MACHINE_EPSILON_1, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition4, Math::MACHINE_EPSILON_1, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_POSITION ), newPosition4, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+  DALI_TEST_EQUALS(task.GetCurrentViewportPosition(), newPosition4, Math::MACHINE_EPSILON_1, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetCurrentProperty<Vector2>(RenderTask::Property::VIEWPORT_POSITION), newPosition4, Math::MACHINE_EPSILON_1, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetProperty<Vector2>(RenderTask::Property::VIEWPORT_POSITION), newPosition4, Math::MACHINE_EPSILON_1, TEST_LOCATION);
 
   END_TEST;
 }
@@ -1450,70 +1427,70 @@ int UtcDaliRenderTaskSetViewportSize(void)
 
   tet_infoline("Testing RenderTask::SetViewportSize()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
-  RenderTask task = taskList.GetTask( 0u );
+  RenderTask task = taskList.GetTask(0u);
 
   Viewport viewport = task.GetViewport();
 
   // By default the viewport should match the stage width/height
 
-  Vector2 stageSize = Stage::GetCurrent().GetSize();
-  Viewport expectedViewport( 0, 0, stageSize.width, stageSize.height );
-  DALI_TEST_CHECK( viewport == expectedViewport );
+  Vector2  stageSize = application.GetScene().GetSize();
+  Viewport expectedViewport(0, 0, stageSize.width, stageSize.height);
+  DALI_TEST_CHECK(viewport == expectedViewport);
 
   Vector2 newSize(128.0f, 64.0f);
-  task.SetViewportSize( newSize );
+  task.SetViewportSize(newSize);
 
   // Update (viewport is a property)
   application.SendNotification();
   application.Render();
 
-  DALI_TEST_EQUALS( task.GetCurrentViewportSize(), newSize, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+  DALI_TEST_EQUALS(task.GetCurrentViewportSize(), newSize, Math::MACHINE_EPSILON_1, TEST_LOCATION);
 
   // Set by Property test
   Vector2 newSize2(50.0f, 50.0f);
-  task.SetProperty( RenderTask::Property::VIEWPORT_SIZE, newSize2 );
-  DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize2, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize, TEST_LOCATION ); // still the old position
+  task.SetProperty(RenderTask::Property::VIEWPORT_SIZE, newSize2);
+  DALI_TEST_EQUALS(task.GetProperty<Vector2>(RenderTask::Property::VIEWPORT_SIZE), newSize2, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetCurrentProperty<Vector2>(RenderTask::Property::VIEWPORT_SIZE), newSize, TEST_LOCATION); // still the old position
 
   // Update
   application.SendNotification();
   application.Render();
 
-  DALI_TEST_EQUALS( task.GetCurrentViewportSize(), newSize2, Math::MACHINE_EPSILON_1, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize2, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize2, TEST_LOCATION );
+  DALI_TEST_EQUALS(task.GetCurrentViewportSize(), newSize2, Math::MACHINE_EPSILON_1, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetProperty<Vector2>(RenderTask::Property::VIEWPORT_SIZE), newSize2, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetCurrentProperty<Vector2>(RenderTask::Property::VIEWPORT_SIZE), newSize2, TEST_LOCATION);
 
-  Vector2 newSize3(10.0f, 10.0f);
+  Vector2   newSize3(10.0f, 10.0f);
   Animation animation = Animation::New(1.0f);
-  animation.AnimateTo( Property( task, RenderTask::Property::VIEWPORT_SIZE ), newSize3, AlphaFunction::LINEAR );
+  animation.AnimateTo(Property(task, RenderTask::Property::VIEWPORT_SIZE), newSize3, AlphaFunction::LINEAR);
   animation.Play();
 
-  DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE  ), newSize3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize2, TEST_LOCATION );
+  DALI_TEST_EQUALS(task.GetProperty<Vector2>(RenderTask::Property::VIEWPORT_SIZE), newSize3, Math::MACHINE_EPSILON_1, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetCurrentProperty<Vector2>(RenderTask::Property::VIEWPORT_SIZE), newSize2, TEST_LOCATION);
 
   // Perform 1000ms worth of updates at which point animation should have completed.
   Wait(application, 1000);
-  DALI_TEST_EQUALS( task.GetCurrentViewportSize(), newSize3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE  ), newSize3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+  DALI_TEST_EQUALS(task.GetCurrentViewportSize(), newSize3, Math::MACHINE_EPSILON_1, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetCurrentProperty<Vector2>(RenderTask::Property::VIEWPORT_SIZE), newSize3, Math::MACHINE_EPSILON_1, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetProperty<Vector2>(RenderTask::Property::VIEWPORT_SIZE), newSize3, Math::MACHINE_EPSILON_1, TEST_LOCATION);
 
   // Create another animation which animates by a certain value
-  const Vector2 newSize4( 75.0f, 45.0f );
-  const Vector2 relativeSize( newSize4 - newSize3 );
-  animation = Animation::New( 1.0f );
-  animation.AnimateBy( Property( task, RenderTask::Property::VIEWPORT_SIZE ), relativeSize );
+  const Vector2 newSize4(75.0f, 45.0f);
+  const Vector2 relativeSize(newSize4 - newSize3);
+  animation = Animation::New(1.0f);
+  animation.AnimateBy(Property(task, RenderTask::Property::VIEWPORT_SIZE), relativeSize);
   animation.Play();
 
-  DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize4, Math::MACHINE_EPSILON_1, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize3, TEST_LOCATION );
+  DALI_TEST_EQUALS(task.GetProperty<Vector2>(RenderTask::Property::VIEWPORT_SIZE), newSize4, Math::MACHINE_EPSILON_1, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetCurrentProperty<Vector2>(RenderTask::Property::VIEWPORT_SIZE), newSize3, TEST_LOCATION);
 
   // Perform 1000ms worth of updates at which point animation should have completed.
   Wait(application, 1000);
-  DALI_TEST_EQUALS( task.GetCurrentViewportSize(), newSize4, Math::MACHINE_EPSILON_1, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetCurrentProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize4, Math::MACHINE_EPSILON_1, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetProperty< Vector2 >( RenderTask::Property::VIEWPORT_SIZE ), newSize4, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+  DALI_TEST_EQUALS(task.GetCurrentViewportSize(), newSize4, Math::MACHINE_EPSILON_1, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetCurrentProperty<Vector2>(RenderTask::Property::VIEWPORT_SIZE), newSize4, Math::MACHINE_EPSILON_1, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetProperty<Vector2>(RenderTask::Property::VIEWPORT_SIZE), newSize4, Math::MACHINE_EPSILON_1, TEST_LOCATION);
 
   END_TEST;
 }
@@ -1524,59 +1501,59 @@ int UtcDaliRenderTaskSetClearColorP(void)
 
   tet_infoline("Testing RenderTask::SetClearColor()");
 
-  Vector4 testColor( 1.0f, 2.0f, 3.0f, 4.0f );
-  Vector4 testColor2( 5.0f, 6.0f, 7.0f, 8.0f );
+  Vector4 testColor(1.0f, 2.0f, 3.0f, 4.0f);
+  Vector4 testColor2(5.0f, 6.0f, 7.0f, 8.0f);
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
-  RenderTask task = taskList.GetTask( 0u );
-  DALI_TEST_CHECK( task.GetClearColor() != testColor );
+  RenderTask task = taskList.GetTask(0u);
+  DALI_TEST_CHECK(task.GetClearColor() != testColor);
 
-  task.SetClearColor( testColor );
+  task.SetClearColor(testColor);
 
   // Wait a frame.
   Wait(application);
 
-  DALI_TEST_EQUALS( task.GetClearColor(), testColor, TEST_LOCATION );
+  DALI_TEST_EQUALS(task.GetClearColor(), testColor, TEST_LOCATION);
 
-  task.SetProperty( RenderTask::Property::CLEAR_COLOR, testColor2 );
-  DALI_TEST_EQUALS( task.GetProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), testColor2, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetCurrentProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), testColor, TEST_LOCATION ); // still the old color
+  task.SetProperty(RenderTask::Property::CLEAR_COLOR, testColor2);
+  DALI_TEST_EQUALS(task.GetProperty<Vector4>(RenderTask::Property::CLEAR_COLOR), testColor2, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetCurrentProperty<Vector4>(RenderTask::Property::CLEAR_COLOR), testColor, TEST_LOCATION); // still the old color
 
   // Wait a frame.
   Wait(application);
 
-  DALI_TEST_EQUALS( task.GetClearColor(), testColor2, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), testColor2, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetCurrentProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), testColor2, TEST_LOCATION );
+  DALI_TEST_EQUALS(task.GetClearColor(), testColor2, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetProperty<Vector4>(RenderTask::Property::CLEAR_COLOR), testColor2, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetCurrentProperty<Vector4>(RenderTask::Property::CLEAR_COLOR), testColor2, TEST_LOCATION);
 
-  Vector4 newColor3(10.0f, 10.0f, 20.0f, 30.0f);
+  Vector4   newColor3(10.0f, 10.0f, 20.0f, 30.0f);
   Animation animation = Animation::New(1.0f);
-  animation.AnimateTo( Property( task, RenderTask::Property::CLEAR_COLOR ), newColor3, AlphaFunction::LINEAR );
+  animation.AnimateTo(Property(task, RenderTask::Property::CLEAR_COLOR), newColor3, AlphaFunction::LINEAR);
   animation.Play();
 
-  DALI_TEST_EQUALS( task.GetProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR  ), newColor3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetCurrentProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), testColor2, TEST_LOCATION );
+  DALI_TEST_EQUALS(task.GetProperty<Vector4>(RenderTask::Property::CLEAR_COLOR), newColor3, Math::MACHINE_EPSILON_1, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetCurrentProperty<Vector4>(RenderTask::Property::CLEAR_COLOR), testColor2, TEST_LOCATION);
 
   // Perform 1000ms worth of updates at which point animation should have completed.
   Wait(application, 1000);
-  DALI_TEST_EQUALS( task.GetCurrentProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), newColor3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR  ), newColor3, Math::MACHINE_EPSILON_1, TEST_LOCATION );
+  DALI_TEST_EQUALS(task.GetCurrentProperty<Vector4>(RenderTask::Property::CLEAR_COLOR), newColor3, Math::MACHINE_EPSILON_1, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetProperty<Vector4>(RenderTask::Property::CLEAR_COLOR), newColor3, Math::MACHINE_EPSILON_1, TEST_LOCATION);
 
   // Create another animation which animates by a certain value
-  const Vector4 newColor4( 0.45f, 0.35f, 0.25f, 0.1f );
-  const Vector4 relativeColor( newColor4 - newColor3 );
-  animation = Animation::New( 1.0f );
-  animation.AnimateBy( Property( task, RenderTask::Property::CLEAR_COLOR ), relativeColor );
+  const Vector4 newColor4(0.45f, 0.35f, 0.25f, 0.1f);
+  const Vector4 relativeColor(newColor4 - newColor3);
+  animation = Animation::New(1.0f);
+  animation.AnimateBy(Property(task, RenderTask::Property::CLEAR_COLOR), relativeColor);
   animation.Play();
 
-  DALI_TEST_EQUALS( task.GetProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), newColor4, Math::MACHINE_EPSILON_10, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetCurrentProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), newColor3, Math::MACHINE_EPSILON_10, TEST_LOCATION );
+  DALI_TEST_EQUALS(task.GetProperty<Vector4>(RenderTask::Property::CLEAR_COLOR), newColor4, Math::MACHINE_EPSILON_10, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetCurrentProperty<Vector4>(RenderTask::Property::CLEAR_COLOR), newColor3, Math::MACHINE_EPSILON_10, TEST_LOCATION);
 
   // Perform 1000ms worth of updates at which point animation should have completed.
   Wait(application, 1000);
-  DALI_TEST_EQUALS( task.GetCurrentProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), newColor4, Math::MACHINE_EPSILON_10, TEST_LOCATION );
-  DALI_TEST_EQUALS( task.GetProperty< Vector4 >( RenderTask::Property::CLEAR_COLOR ), newColor4, Math::MACHINE_EPSILON_10, TEST_LOCATION );
+  DALI_TEST_EQUALS(task.GetCurrentProperty<Vector4>(RenderTask::Property::CLEAR_COLOR), newColor4, Math::MACHINE_EPSILON_10, TEST_LOCATION);
+  DALI_TEST_EQUALS(task.GetProperty<Vector4>(RenderTask::Property::CLEAR_COLOR), newColor4, Math::MACHINE_EPSILON_10, TEST_LOCATION);
 
   END_TEST;
 }
@@ -1590,11 +1567,11 @@ int UtcDaliRenderTaskSetClearColorN(void)
   RenderTask task;
   try
   {
-    task.SetClearColor( Vector4::ZERO );
+    task.SetClearColor(Vector4::ZERO);
   }
-  catch (Dali::DaliException& e)
+  catch(Dali::DaliException& e)
   {
-    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_PRINT_ASSERT(e);
     DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
   }
   END_TEST;
@@ -1606,9 +1583,9 @@ int UtcDaliRenderTaskGetClearColorP(void)
 
   tet_infoline("Testing RenderTask::GetClearColor()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
-  RenderTask task = taskList.GetTask( 0u );
-  DALI_TEST_EQUALS( task.GetClearColor(), RenderTask::DEFAULT_CLEAR_COLOR, TEST_LOCATION );
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
+  RenderTask     task     = taskList.GetTask(0u);
+  DALI_TEST_EQUALS(task.GetClearColor(), RenderTask::DEFAULT_CLEAR_COLOR, TEST_LOCATION);
   END_TEST;
 }
 
@@ -1622,11 +1599,11 @@ int UtcDaliRenderTaskGetClearColorN(void)
   try
   {
     Vector4 color = task.GetClearColor();
-    (void) color;
+    (void)color;
   }
-  catch (Dali::DaliException& e)
+  catch(Dali::DaliException& e)
   {
-    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_PRINT_ASSERT(e);
     DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
   }
   END_TEST;
@@ -1638,16 +1615,16 @@ int UtcDaliRenderTaskSetClearEnabledP(void)
 
   tet_infoline("Testing RenderTask::SetClearEnabled()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
-  RenderTask task = taskList.GetTask( 0u );
-  DALI_TEST_CHECK( task.GetClearEnabled() ); // defaults to true
+  RenderTask task = taskList.GetTask(0u);
+  DALI_TEST_CHECK(task.GetClearEnabled()); // defaults to true
 
-  task.SetClearEnabled( false );
-  DALI_TEST_EQUALS( task.GetClearEnabled(), false, TEST_LOCATION );
+  task.SetClearEnabled(false);
+  DALI_TEST_EQUALS(task.GetClearEnabled(), false, TEST_LOCATION);
 
-  task.SetClearEnabled( true );
-  DALI_TEST_EQUALS( task.GetClearEnabled(), true, TEST_LOCATION );
+  task.SetClearEnabled(true);
+  DALI_TEST_EQUALS(task.GetClearEnabled(), true, TEST_LOCATION);
   END_TEST;
 }
 
@@ -1662,9 +1639,9 @@ int UtcDaliRenderTaskSetClearEnabledN(void)
   {
     task.SetClearEnabled(true);
   }
-  catch (Dali::DaliException& e)
+  catch(Dali::DaliException& e)
   {
-    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_PRINT_ASSERT(e);
     DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
   }
   END_TEST;
@@ -1676,14 +1653,13 @@ int UtcDaliRenderTaskGetClearEnabledP(void)
 
   tet_infoline("Testing RenderTask::GetClearEnabled()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
-  RenderTask task = taskList.GetTask( 0u );
-  DALI_TEST_CHECK( task.GetClearEnabled() ); // defaults to true
+  RenderTask task = taskList.GetTask(0u);
+  DALI_TEST_CHECK(task.GetClearEnabled()); // defaults to true
   END_TEST;
 }
 
-
 int UtcDaliRenderTaskGetClearEnabledN(void)
 {
   TestApplication application;
@@ -1694,11 +1670,11 @@ int UtcDaliRenderTaskGetClearEnabledN(void)
   try
   {
     bool x = task.GetClearEnabled();
-    (void) x;
+    (void)x;
   }
-  catch (Dali::DaliException& e)
+  catch(Dali::DaliException& e)
   {
-    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_PRINT_ASSERT(e);
     DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
   }
   END_TEST;
@@ -1710,13 +1686,13 @@ int UtcDaliRenderTaskSetCullModeP(void)
 
   tet_infoline("Testing RenderTask::SetCullMode()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
-  RenderTask task = taskList.GetTask( 0u );
-  DALI_TEST_EQUALS( task.GetCullMode(), true, TEST_LOCATION );
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
+  RenderTask     task     = taskList.GetTask(0u);
+  DALI_TEST_EQUALS(task.GetCullMode(), true, TEST_LOCATION);
 
-  task.SetCullMode( false );
+  task.SetCullMode(false);
 
-  DALI_TEST_EQUALS( task.GetCullMode(), false, TEST_LOCATION );
+  DALI_TEST_EQUALS(task.GetCullMode(), false, TEST_LOCATION);
 
   END_TEST;
 }
@@ -1730,11 +1706,11 @@ int UtcDaliRenderTaskSetCullModeN(void)
   RenderTask task;
   try
   {
-    task.SetCullMode( false );
+    task.SetCullMode(false);
   }
-  catch (Dali::DaliException& e)
+  catch(Dali::DaliException& e)
   {
-    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_PRINT_ASSERT(e);
     DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
   }
   END_TEST;
@@ -1746,9 +1722,9 @@ int UtcDaliRenderTaskGetCullModeP(void)
 
   tet_infoline("Testing RenderTask::GetCullMode()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
-  RenderTask task = taskList.GetTask( 0u );
-  DALI_TEST_EQUALS( task.GetCullMode(), true, TEST_LOCATION );
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
+  RenderTask     task     = taskList.GetTask(0u);
+  DALI_TEST_EQUALS(task.GetCullMode(), true, TEST_LOCATION);
   END_TEST;
 }
 
@@ -1762,34 +1738,33 @@ int UtcDaliRenderTaskGetCullModeN(void)
   try
   {
     bool x = task.GetCullMode();
-    (void) x;
+    (void)x;
   }
-  catch (Dali::DaliException& e)
+  catch(Dali::DaliException& e)
   {
-    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_PRINT_ASSERT(e);
     DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION);
   }
   END_TEST;
 }
 
-
 int UtcDaliRenderTaskSetRefreshRate(void)
 {
   TestApplication application;
 
   tet_infoline("Testing RenderTask::SetRefreshRate()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
   // By default tasks will be processed every frame
-  RenderTask task = taskList.GetTask( 0u );
-  DALI_TEST_CHECK( RenderTask::REFRESH_ALWAYS == task.GetRefreshRate() );
+  RenderTask task = taskList.GetTask(0u);
+  DALI_TEST_CHECK(RenderTask::REFRESH_ALWAYS == task.GetRefreshRate());
 
-  task.SetRefreshRate( 2u ); // every-other frame
-  DALI_TEST_CHECK( 2u == task.GetRefreshRate() );
+  task.SetRefreshRate(2u); // every-other frame
+  DALI_TEST_CHECK(2u == task.GetRefreshRate());
 
-  task.SetRefreshRate( RenderTask::REFRESH_ALWAYS );
-  DALI_TEST_CHECK( RenderTask::REFRESH_ALWAYS == task.GetRefreshRate() );
+  task.SetRefreshRate(RenderTask::REFRESH_ALWAYS);
+  DALI_TEST_CHECK(RenderTask::REFRESH_ALWAYS == task.GetRefreshRate());
   END_TEST;
 }
 
@@ -1799,14 +1774,14 @@ int UtcDaliRenderTaskGetRefreshRate(void)
 
   tet_infoline("Testing RenderTask::GetRefreshRate()");
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
   // By default tasks will be processed every frame
-  RenderTask task = taskList.GetTask( 0u );
-  DALI_TEST_CHECK( RenderTask::REFRESH_ALWAYS == task.GetRefreshRate() );
+  RenderTask task = taskList.GetTask(0u);
+  DALI_TEST_CHECK(RenderTask::REFRESH_ALWAYS == task.GetRefreshRate());
 
   RenderTask newTask = taskList.CreateTask();
-  DALI_TEST_CHECK( RenderTask::REFRESH_ALWAYS == newTask.GetRefreshRate() );
+  DALI_TEST_CHECK(RenderTask::REFRESH_ALWAYS == newTask.GetRefreshRate());
   END_TEST;
 }
 
@@ -1816,37 +1791,38 @@ int UtcDaliRenderTaskSignalFinished(void)
 
   tet_infoline("Testing RenderTask::SignalFinished()");
 
-  application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
-  TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
+  application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
+  auto& sync = application.GetGraphicsSyncImpl();
 
   CameraActor offscreenCameraActor = CameraActor::New();
 
-  Stage::GetCurrent().Add( offscreenCameraActor );
+  application.GetScene().Add(offscreenCameraActor);
 
-  BufferImage image = BufferImage::New( 10, 10 );
-  image.Update();
-  Actor rootActor = CreateRenderableActor( image );
-  rootActor.SetSize( 10, 10 );
-  Stage::GetCurrent().Add( rootActor );
+  Texture image     = CreateTexture(TextureType::TEXTURE_2D, Pixel::RGBA8888, 10, 10);
+  Actor   rootActor = CreateRenderableActor(image);
+  rootActor.SetProperty(Actor::Property::SIZE, Vector2(10.0f, 10.0f));
+  application.GetScene().Add(rootActor);
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList          taskList           = application.GetScene().GetRenderTaskList();
   NativeImageInterfacePtr testNativeImagePtr = TestNativeImage::New(10, 10);
-  FrameBufferImage frameBufferImage = FrameBufferImage::New( *testNativeImagePtr.Get() );
+  Texture                 frameBufferTexture = Texture::New(*testNativeImagePtr);
+  FrameBuffer             frameBuffer        = FrameBuffer::New(frameBufferTexture.GetWidth(), frameBufferTexture.GetHeight());
+  frameBuffer.AttachColorTexture(frameBufferTexture);
 
   RenderTask newTask = taskList.CreateTask();
-  newTask.SetCameraActor( offscreenCameraActor );
-  newTask.SetSourceActor( rootActor );
-  newTask.SetInputEnabled( false );
-  newTask.SetClearColor( Vector4( 0.f, 0.f, 0.f, 0.f ) );
-  newTask.SetClearEnabled( true );
-  newTask.SetExclusive( true );
-  newTask.SetRefreshRate( RenderTask::REFRESH_ONCE );
-  newTask.SetTargetFrameBuffer( frameBufferImage );
-  newTask.SetProperty( RenderTask::Property::REQUIRES_SYNC, true );
-
-  bool finished = false;
-  RenderTaskFinished renderTaskFinished( finished );
-  newTask.FinishedSignal().Connect( &application, renderTaskFinished );
+  newTask.SetCameraActor(offscreenCameraActor);
+  newTask.SetSourceActor(rootActor);
+  newTask.SetInputEnabled(false);
+  newTask.SetClearColor(Vector4(0.f, 0.f, 0.f, 0.f));
+  newTask.SetClearEnabled(true);
+  newTask.SetExclusive(true);
+  newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
+  newTask.SetFrameBuffer(frameBuffer);
+  newTask.SetProperty(RenderTask::Property::REQUIRES_SYNC, true);
+
+  bool               finished = false;
+  RenderTaskFinished renderTaskFinished(finished);
+  newTask.FinishedSignal().Connect(&application, renderTaskFinished);
 
   // Flush the queue and render.
   application.SendNotification();
@@ -1856,36 +1832,35 @@ int UtcDaliRenderTaskSignalFinished(void)
 
   application.Render();
   application.SendNotification();
-  DALI_TEST_CHECK( !finished );
+  DALI_TEST_CHECK(!finished);
 
-  Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
-  DALI_TEST_CHECK( lastSyncObj != NULL );
+  Integration::GraphicsSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
+  DALI_TEST_CHECK(lastSyncObj != NULL);
 
   application.Render();
-  DALI_TEST_EQUALS( (Integration::KeepUpdating::Reasons)(application.GetUpdateStatus() & Integration::KeepUpdating::RENDER_TASK_SYNC), Integration::KeepUpdating::RENDER_TASK_SYNC, TEST_LOCATION );
+  DALI_TEST_EQUALS((Integration::KeepUpdating::Reasons)(application.GetUpdateStatus() & Integration::KeepUpdating::RENDER_TASK_SYNC), Integration::KeepUpdating::RENDER_TASK_SYNC, TEST_LOCATION);
   application.SendNotification();
-  DALI_TEST_CHECK( !finished );
+  DALI_TEST_CHECK(!finished);
 
   application.Render();
-  DALI_TEST_EQUALS( (Integration::KeepUpdating::Reasons)(application.GetUpdateStatus() & Integration::KeepUpdating::RENDER_TASK_SYNC), Integration::KeepUpdating::RENDER_TASK_SYNC, TEST_LOCATION );
+  DALI_TEST_EQUALS((Integration::KeepUpdating::Reasons)(application.GetUpdateStatus() & Integration::KeepUpdating::RENDER_TASK_SYNC), Integration::KeepUpdating::RENDER_TASK_SYNC, TEST_LOCATION);
   application.SendNotification();
-  DALI_TEST_CHECK( ! finished );
+  DALI_TEST_CHECK(!finished);
 
-  sync.SetObjectSynced( lastSyncObj, true );
+  sync.SetObjectSynced(lastSyncObj, true);
 
   application.Render();
   application.SendNotification();
-  DALI_TEST_CHECK( !finished );
+  DALI_TEST_CHECK(!finished);
 
   application.Render();
   application.SendNotification();
-  DALI_TEST_CHECK( finished );
+  DALI_TEST_CHECK(finished);
 
-  DALI_TEST_EQUALS( application.GetUpdateStatus(), 0, TEST_LOCATION );
+  DALI_TEST_EQUALS(application.GetUpdateStatus(), 0, TEST_LOCATION);
   END_TEST;
 }
 
-
 int UtcDaliRenderTaskContinuous01(void)
 {
   TestApplication application;
@@ -1893,37 +1868,36 @@ int UtcDaliRenderTaskContinuous01(void)
   tet_infoline("Testing RenderTask Render Continuous using loading image\nPRE: render task not ready (source actor not staged)\nPOST:continuous renders, no Finished signal");
 
   // SETUP AN OFFSCREEN RENDER TASK
-  application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
+  application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
   TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
   drawTrace.Enable(true);
 
   Actor rootActor = Actor::New();
-  Stage::GetCurrent().Add( rootActor );
+  application.GetScene().Add(rootActor);
 
-  CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
-  Stage::GetCurrent().Add( offscreenCameraActor );
+  CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+  application.GetScene().Add(offscreenCameraActor);
 
   Actor secondRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
 
-  RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
-  bool finished = false;
-  RenderTaskFinished renderTaskFinished( finished );
+  RenderTask         newTask  = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
+  bool               finished = false;
+  RenderTaskFinished renderTaskFinished(finished);
   application.SendNotification();
 
   // START PROCESS/RENDER                     Input,    Expected  Input, Expected, KeepUpdating
-  DALI_TEST_CHECK( UpdateRender(application,  drawTrace, false,   finished, false, false, __LINE__ ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, false, finished, false, false, __LINE__));
   application.GetPlatform().ClearReadyResources();
 
   // ADD SOURCE ACTOR TO STAGE - expect continuous renders to start, no finished signal
-  Stage::GetCurrent().Add(secondRootActor);
+  application.GetScene().Add(secondRootActor);
   application.SendNotification();
 
   // CONTINUE PROCESS/RENDER                  Input,    Expected  Input,    Expected
-  DALI_TEST_CHECK( UpdateRender(application,  drawTrace, true,    finished, false, false, __LINE__ ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, false, __LINE__));
   END_TEST;
 }
 
-
 int UtcDaliRenderTaskContinuous02(void)
 {
   TestApplication application;
@@ -1931,36 +1905,36 @@ int UtcDaliRenderTaskContinuous02(void)
   tet_infoline("Testing RenderTask Render Continuous using loading image\nPRE: render task not ready (source actor not visible)\nPOST:continuous renders, no Finished signal");
 
   // SETUP AN OFFSCREEN RENDER TASK
-  application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
+  application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
   TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
   drawTrace.Enable(true);
 
   Actor rootActor = Actor::New();
-  Stage::GetCurrent().Add( rootActor );
+  application.GetScene().Add(rootActor);
 
-  CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
-  Stage::GetCurrent().Add( offscreenCameraActor );
+  CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+  application.GetScene().Add(offscreenCameraActor);
 
   Actor secondRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
-  Stage::GetCurrent().Add(secondRootActor);
-  secondRootActor.SetVisible(false);
+  application.GetScene().Add(secondRootActor);
+  secondRootActor.SetProperty(Actor::Property::VISIBLE, false);
 
-  RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
-  bool finished = false;
-  RenderTaskFinished renderTaskFinished( finished );
-  newTask.FinishedSignal().Connect( &application, renderTaskFinished );
+  RenderTask         newTask  = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
+  bool               finished = false;
+  RenderTaskFinished renderTaskFinished(finished);
+  newTask.FinishedSignal().Connect(&application, renderTaskFinished);
   application.SendNotification();
 
   // START PROCESS/RENDER                    Input,    Expected  Input,    Expected, KeepUpdating
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, false,   finished, false, false, __LINE__ ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, false, finished, false, false, __LINE__));
   application.GetPlatform().ClearReadyResources();
 
   // MAKE SOURCE ACTOR VISIBLE - expect continuous renders to start, no finished signal
-  secondRootActor.SetVisible(true);
+  secondRootActor.SetProperty(Actor::Property::VISIBLE, true);
   application.SendNotification();
 
   // CONTINUE PROCESS/RENDER                 Input,    Expected  Input,    Expected
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, true,    finished, false, false, __LINE__ ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, false, __LINE__));
   END_TEST;
 }
 
@@ -1971,37 +1945,36 @@ int UtcDaliRenderTaskContinuous03(void)
   tet_infoline("Testing RenderTask Render Continuous using loading image\nPRE: render task not ready (camera actor not staged)\nPOST:continuous renders, no Finished signal");
 
   // SETUP AN OFFSCREEN RENDER TASK
-  application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
+  application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
   TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
   drawTrace.Enable(true);
 
   Actor rootActor = Actor::New();
-  Stage::GetCurrent().Add( rootActor );
+  application.GetScene().Add(rootActor);
 
-  CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
-  Actor secondRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
-  Stage::GetCurrent().Add(secondRootActor);
+  CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+  Actor       secondRootActor      = CreateRenderableActorSuccess(application, "aFile.jpg");
+  application.GetScene().Add(secondRootActor);
 
-  RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
-  bool finished = false;
-  RenderTaskFinished renderTaskFinished( finished );
-  newTask.FinishedSignal().Connect( &application, renderTaskFinished );
+  RenderTask         newTask  = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
+  bool               finished = false;
+  RenderTaskFinished renderTaskFinished(finished);
+  newTask.FinishedSignal().Connect(&application, renderTaskFinished);
   application.SendNotification();
 
   // START PROCESS/RENDER                    Input,    Expected  Input,    Expected
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, false,   finished, false, false, __LINE__ ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, false, finished, false, false, __LINE__));
   application.GetPlatform().ClearReadyResources();
 
   // ADD CAMERA ACTOR TO STAGE - expect continuous renders to start, no finished signal
-  Stage::GetCurrent().Add( offscreenCameraActor );
+  application.GetScene().Add(offscreenCameraActor);
   application.SendNotification();
 
   // CONTINUE PROCESS/RENDER                 Input,    Expected  Input,    Expected
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, true,    finished, false, false, __LINE__ ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, false, __LINE__));
   END_TEST;
 }
 
-
 int UtcDaliRenderTaskContinuous04(void)
 {
   TestApplication application;
@@ -2009,26 +1982,26 @@ int UtcDaliRenderTaskContinuous04(void)
   tet_infoline("Testing RenderTask Render Continuous using loaded image");
 
   // SETUP AN OFFSCREEN RENDER TASK
-  application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
+  application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
   TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
   drawTrace.Enable(true);
 
   Actor rootActor = Actor::New();
-  Stage::GetCurrent().Add( rootActor );
+  application.GetScene().Add(rootActor);
 
-  CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
-  Stage::GetCurrent().Add( offscreenCameraActor );
-  Actor secondRootActor = CreateRenderableActorFailed(application, "aFile.jpg");
-  Stage::GetCurrent().Add(secondRootActor);
+  CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+  application.GetScene().Add(offscreenCameraActor);
+  Actor secondRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
+  application.GetScene().Add(secondRootActor);
 
-  RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
-  bool finished = false;
-  RenderTaskFinished renderTaskFinished( finished );
-  newTask.FinishedSignal().Connect( &application, renderTaskFinished );
+  RenderTask         newTask  = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
+  bool               finished = false;
+  RenderTaskFinished renderTaskFinished(finished);
+  newTask.FinishedSignal().Connect(&application, renderTaskFinished);
   application.SendNotification();
 
   // START PROCESS/RENDER                    Input,    Expected  Input,    Expected
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, true,   finished, false, false, __LINE__ ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, false, __LINE__));
   END_TEST;
 }
 
@@ -2039,34 +2012,34 @@ int UtcDaliRenderTaskOnce01(void)
   tet_infoline("Testing RenderTask Render Once GlSync, using loaded image");
 
   // SETUP AN OFFSCREEN RENDER TASK
-  application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
-  TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
+  application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
+  auto&           sync      = application.GetGraphicsSyncImpl();
   TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
   drawTrace.Enable(true);
 
   Actor rootActor = Actor::New();
-  Stage::GetCurrent().Add( rootActor );
+  application.GetScene().Add(rootActor);
 
-  CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
-  Stage::GetCurrent().Add( offscreenCameraActor );
+  CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+  application.GetScene().Add(offscreenCameraActor);
   Actor secondRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
 
-  Stage::GetCurrent().Add(secondRootActor);
+  application.GetScene().Add(secondRootActor);
 
-  RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ONCE, true);
-  bool finished = false;
-  RenderTaskFinished renderTaskFinished( finished );
-  newTask.FinishedSignal().Connect( &application, renderTaskFinished );
+  RenderTask         newTask  = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ONCE, true);
+  bool               finished = false;
+  RenderTaskFinished renderTaskFinished(finished);
+  newTask.FinishedSignal().Connect(&application, renderTaskFinished);
   application.SendNotification();
 
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, true,   finished, false, true, __LINE__  ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, true, __LINE__));
 
-  Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
-  DALI_TEST_CHECK( lastSyncObj != NULL );
-  sync.SetObjectSynced( lastSyncObj, true );
+  Integration::GraphicsSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
+  DALI_TEST_CHECK(lastSyncObj != NULL);
+  sync.SetObjectSynced(lastSyncObj, true);
 
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, false,   finished, false, true, __LINE__  ) );
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, false,   finished, true, false, __LINE__  ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, false, finished, false, true, __LINE__));
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, false, finished, true, false, __LINE__));
   END_TEST;
 }
 
@@ -2077,45 +2050,45 @@ int UtcDaliRenderTaskOnce02(void)
   tet_infoline("Testing RenderTask Render Once GlSync, using Mesh which accesses texture through sampler with loaded image.\n");
 
   // SETUP AN OFFSCREEN RENDER TASK
-  application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
-  TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
+  application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
+  auto&           sync      = application.GetGraphicsSyncImpl();
   TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
   drawTrace.Enable(true);
 
   Actor rootActor = Actor::New();
-  Stage::GetCurrent().Add( rootActor );
+  application.GetScene().Add(rootActor);
 
-  CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
-  Stage::GetCurrent().Add( offscreenCameraActor );
+  CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+  application.GetScene().Add(offscreenCameraActor);
 
-  Shader shader = CreateShader();
-  Image image = CreateResourceImage(application, "aFile.jpg");
-  TextureSet textureSet = CreateTextureSet( image );
+  Shader     shader     = CreateShader();
+  Texture    image      = CreateTexture();
+  TextureSet textureSet = CreateTextureSet(image);
 
   Geometry geometry = CreateQuadGeometry();
   Renderer renderer = Renderer::New(geometry, shader);
-  renderer.SetTextures( textureSet );
+  renderer.SetTextures(textureSet);
   Actor secondRootActor = Actor::New();
   secondRootActor.AddRenderer(renderer);
-  secondRootActor.SetSize(100, 100);
-  Stage::GetCurrent().Add(secondRootActor);
+  secondRootActor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f));
+  application.GetScene().Add(secondRootActor);
 
-  RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ONCE, true);
-  bool finished = false;
-  RenderTaskFinished renderTaskFinished( finished );
-  newTask.FinishedSignal().Connect( &application, renderTaskFinished );
+  RenderTask         newTask  = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ONCE, true);
+  bool               finished = false;
+  RenderTaskFinished renderTaskFinished(finished);
+  newTask.FinishedSignal().Connect(&application, renderTaskFinished);
   application.SendNotification();
 
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, true,   finished, false, true, __LINE__  ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, true, __LINE__));
 
-  Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
-  DALI_TEST_CHECK( lastSyncObj != NULL );
-  sync.SetObjectSynced( lastSyncObj, true );
+  Integration::GraphicsSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
+  DALI_TEST_CHECK(lastSyncObj != NULL);
+  sync.SetObjectSynced(lastSyncObj, true);
 
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, false,   finished, false, true, __LINE__  ) );
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, false,   finished, true, false, __LINE__  ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, false, finished, false, true, __LINE__));
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, false, finished, true, false, __LINE__));
 
-   END_TEST;
+  END_TEST;
 }
 
 int UtcDaliRenderTaskOnce03(void)
@@ -2125,93 +2098,92 @@ int UtcDaliRenderTaskOnce03(void)
   tet_infoline("Testing RenderTask Render Once GlSync, using loaded image. Switch from render always after ready to render once\n");
 
   // SETUP A CONTINUOUS OFFSCREEN RENDER TASK
-  application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
-  TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
+  application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
+  auto&           sync      = application.GetGraphicsSyncImpl();
   TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
   drawTrace.Enable(true);
 
   Actor rootActor = Actor::New();
-  Stage::GetCurrent().Add( rootActor );
+  application.GetScene().Add(rootActor);
 
-  CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
-  Stage::GetCurrent().Add( offscreenCameraActor );
+  CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+  application.GetScene().Add(offscreenCameraActor);
   Actor secondRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
-  Stage::GetCurrent().Add(secondRootActor);
+  application.GetScene().Add(secondRootActor);
 
-  RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
-  bool finished = false;
-  RenderTaskFinished renderTaskFinished( finished );
-  newTask.FinishedSignal().Connect( &application, renderTaskFinished );
+  RenderTask         newTask  = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
+  bool               finished = false;
+  RenderTaskFinished renderTaskFinished(finished);
+  newTask.FinishedSignal().Connect(&application, renderTaskFinished);
   application.SendNotification();
 
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, true,    finished, false, false, __LINE__ ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, false, __LINE__));
 
   newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
   application.SendNotification();
+  //                                                   drawn   sig    finished  Keep updating
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, true, __LINE__));
 
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, true,   finished, false, true, __LINE__  ) );
-
-  Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
-  DALI_TEST_CHECK( lastSyncObj != NULL );
-  sync.SetObjectSynced( lastSyncObj, true );
+  Integration::GraphicsSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
+  DALI_TEST_CHECK(lastSyncObj != NULL);
+  sync.SetObjectSynced(lastSyncObj, true);
 
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, false,   finished, false, true, __LINE__  ) );
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, false,   finished, true, false, __LINE__  ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, false, finished, false, true, __LINE__));
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, false, finished, true, false, __LINE__));
 
   END_TEST;
 }
 
-
 int UtcDaliRenderTaskOnce04(void)
 {
   TestApplication application;
-  tet_infoline("Testing RenderTask Render Once GlSync, using Mesh which accesses texture through sampler with loaded image.\n"
-               "Switch from render always after ready to render once\n"
-              );
+  tet_infoline(
+    "Testing RenderTask Render Once GlSync, using Mesh which accesses texture through sampler with loaded image.\n"
+    "Switch from render always after ready to render once\n");
 
   // SETUP AN OFFSCREEN RENDER TASK
-  application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
-  TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
+  application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
+  auto&           sync      = application.GetGraphicsSyncImpl();
   TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
   drawTrace.Enable(true);
 
   Actor rootActor = Actor::New();
-  Stage::GetCurrent().Add( rootActor );
+  application.GetScene().Add(rootActor);
 
-  CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
-  Stage::GetCurrent().Add( offscreenCameraActor );
+  CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+  application.GetScene().Add(offscreenCameraActor);
 
-  Shader shader = CreateShader();
-  Image image = CreateResourceImage(application, "aFile.jpg");
-  TextureSet textureSet = CreateTextureSet( image );
+  Shader     shader     = CreateShader();
+  Texture    image      = CreateTexture();
+  TextureSet textureSet = CreateTextureSet(image);
 
   Geometry geometry = CreateQuadGeometry();
   Renderer renderer = Renderer::New(geometry, shader);
-  renderer.SetTextures( textureSet );
+  renderer.SetTextures(textureSet);
   Actor secondRootActor = Actor::New();
   secondRootActor.AddRenderer(renderer);
-  secondRootActor.SetSize(100, 100);
-  Stage::GetCurrent().Add(secondRootActor);
+  secondRootActor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f));
+  application.GetScene().Add(secondRootActor);
 
-  RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
-  bool finished = false;
-  RenderTaskFinished renderTaskFinished( finished );
-  newTask.FinishedSignal().Connect( &application, renderTaskFinished );
+  RenderTask         newTask  = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
+  bool               finished = false;
+  RenderTaskFinished renderTaskFinished(finished);
+  newTask.FinishedSignal().Connect(&application, renderTaskFinished);
   application.SendNotification();
 
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, true,    finished, false, false, __LINE__ ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, false, __LINE__));
 
   newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
   application.SendNotification();
+  //   FAILS                                          drawn   sig    finished  Keep updating
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, true, __LINE__));
 
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, true,   finished, false, true, __LINE__  ) );
-
-  Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
-  DALI_TEST_CHECK( lastSyncObj != NULL );
-  sync.SetObjectSynced( lastSyncObj, true );
+  Integration::GraphicsSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
+  DALI_TEST_CHECK(lastSyncObj != NULL);
+  sync.SetObjectSynced(lastSyncObj, true);
 
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, false,   finished, false, true, __LINE__  ) );
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, false,   finished, true, false, __LINE__  ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, false, finished, false, true, __LINE__));
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, false, finished, true, false, __LINE__));
 
   END_TEST;
 }
@@ -2223,26 +2195,26 @@ int UtcDaliRenderTaskOnceNoSync01(void)
   tet_infoline("Testing RenderTask Render Once, \nPRE: Resources ready\nPOST: Finished signal sent once only");
 
   // SETUP AN OFFSCREEN RENDER TASK
-  application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
+  application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
   TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
   drawTrace.Enable(true);
 
   Actor rootActor = Actor::New();
-  Stage::GetCurrent().Add( rootActor );
+  application.GetScene().Add(rootActor);
 
-  CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
-  Stage::GetCurrent().Add( offscreenCameraActor );
+  CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+  application.GetScene().Add(offscreenCameraActor);
   Actor secondRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
-  Stage::GetCurrent().Add(secondRootActor);
+  application.GetScene().Add(secondRootActor);
 
-  RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ONCE, false);
-  bool finished = false;
-  RenderTaskFinished renderTaskFinished( finished );
-  newTask.FinishedSignal().Connect( &application, renderTaskFinished );
+  RenderTask         newTask  = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ONCE, false);
+  bool               finished = false;
+  RenderTaskFinished renderTaskFinished(finished);
+  newTask.FinishedSignal().Connect(&application, renderTaskFinished);
   application.SendNotification();
 
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, true,    finished, false, true, __LINE__ ) );
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, false,   finished, true, false, __LINE__ ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, true, __LINE__));
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, false, finished, true, false, __LINE__));
   END_TEST;
 }
 
@@ -2250,40 +2222,41 @@ int UtcDaliRenderTaskOnceNoSync02(void)
 {
   TestApplication application;
 
-  tet_infoline("Testing RenderTask Render Once, using Mesh which accesses texture through sampler with loaded image.\n"
-               "PRE: Resources ready\nPOST: Finished signal sent once only");
+  tet_infoline(
+    "Testing RenderTask Render Once, using Mesh which accesses texture through sampler with loaded image.\n"
+    "PRE: Resources ready\nPOST: Finished signal sent once only");
   // SETUP AN OFFSCREEN RENDER TASK
-  application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
+  application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
   TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
   drawTrace.Enable(true);
 
   Actor rootActor = Actor::New();
-  Stage::GetCurrent().Add( rootActor );
+  application.GetScene().Add(rootActor);
 
-  CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
-  Stage::GetCurrent().Add( offscreenCameraActor );
+  CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+  application.GetScene().Add(offscreenCameraActor);
 
-  Shader shader = CreateShader();
-  Image image = CreateResourceImage(application, "aFile.jpg");
-  TextureSet textureSet = CreateTextureSet( image );
+  Shader     shader     = CreateShader();
+  Texture    image      = CreateTexture();
+  TextureSet textureSet = CreateTextureSet(image);
 
   Geometry geometry = CreateQuadGeometry();
   Renderer renderer = Renderer::New(geometry, shader);
-  renderer.SetTextures( textureSet );
+  renderer.SetTextures(textureSet);
   Actor secondRootActor = Actor::New();
   secondRootActor.AddRenderer(renderer);
-  secondRootActor.SetSize(100, 100);
-  Stage::GetCurrent().Add(secondRootActor);
+  secondRootActor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f));
+  application.GetScene().Add(secondRootActor);
 
-  RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ONCE, false);
-  bool finished = false;
-  RenderTaskFinished renderTaskFinished( finished );
-  newTask.FinishedSignal().Connect( &application, renderTaskFinished );
+  RenderTask         newTask  = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ONCE, false);
+  bool               finished = false;
+  RenderTaskFinished renderTaskFinished(finished);
+  newTask.FinishedSignal().Connect(&application, renderTaskFinished);
   application.SendNotification();
 
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, true,    finished, false, true, __LINE__ ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, true, __LINE__));
   application.GetPlatform().ClearReadyResources();
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, false,   finished, true, false, __LINE__ ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, false, finished, true, false, __LINE__));
 
   END_TEST;
 }
@@ -2292,35 +2265,36 @@ int UtcDaliRenderTaskOnceNoSync03(void)
 {
   TestApplication application;
 
-  tet_infoline("Testing RenderTask Render Once, using loaded image. Switch from render always after ready to render once\n"
-               "PRE: Render task ready, Image loaded\n"
-               "POST: Finished signal sent only once");
+  tet_infoline(
+    "Testing RenderTask Render Once, using loaded image. Switch from render always after ready to render once\n"
+    "PRE: Render task ready, Image loaded\n"
+    "POST: Finished signal sent only once");
 
   // SETUP A CONTINUOUS OFFSCREEN RENDER TASK
-  application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
+  application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
   TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
   drawTrace.Enable(true);
 
   Actor rootActor = Actor::New();
-  Stage::GetCurrent().Add( rootActor );
+  application.GetScene().Add(rootActor);
 
-  CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
-  Stage::GetCurrent().Add( offscreenCameraActor );
+  CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+  application.GetScene().Add(offscreenCameraActor);
   Actor secondRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
-  Stage::GetCurrent().Add(secondRootActor);
+  application.GetScene().Add(secondRootActor);
 
-  RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, false);
-  bool finished = false;
-  RenderTaskFinished renderTaskFinished( finished );
-  newTask.FinishedSignal().Connect( &application, renderTaskFinished );
+  RenderTask         newTask  = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, false);
+  bool               finished = false;
+  RenderTaskFinished renderTaskFinished(finished);
+  newTask.FinishedSignal().Connect(&application, renderTaskFinished);
   application.SendNotification();
 
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, true,    finished, false, false, __LINE__ ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, false, __LINE__));
 
   newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
   application.SendNotification(); //         Input,    Expected  Input,    Expected
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, true,    finished, false, true, __LINE__ ) );
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, false,   finished, true, false, __LINE__ ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, true, __LINE__));
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, false, finished, true, false, __LINE__));
   END_TEST;
 }
 
@@ -2328,53 +2302,53 @@ int UtcDaliRenderTaskOnceNoSync04(void)
 {
   TestApplication application;
 
-  tet_infoline("Testing RenderTask Render Once, using Mesh which accesses texture through sampler with loading image.\n"
-               "Switch from render always after ready to render once\n"
-               "PRE: Render task ready, Image not loaded\n"
-               "POST: Finished signal sent only once");
+  tet_infoline(
+    "Testing RenderTask Render Once, using Mesh which accesses texture through sampler with loading image.\n"
+    "Switch from render always after ready to render once\n"
+    "PRE: Render task ready, Image not loaded\n"
+    "POST: Finished signal sent only once");
 
   // SETUP A CONTINUOUS OFFSCREEN RENDER TASK
-  application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
+  application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
   TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
   drawTrace.Enable(true);
 
   Actor rootActor = Actor::New();
-  Stage::GetCurrent().Add( rootActor );
+  application.GetScene().Add(rootActor);
 
-  CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
-  Stage::GetCurrent().Add( offscreenCameraActor );
+  CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+  application.GetScene().Add(offscreenCameraActor);
 
-  Shader shader = CreateShader();
-  Image image = CreateResourceImage(application, "aFile.jpg");
-  TextureSet textureSet = CreateTextureSet( image );
+  Shader     shader     = CreateShader();
+  Texture    image      = CreateTexture();
+  TextureSet textureSet = CreateTextureSet(image);
 
   Geometry geometry = CreateQuadGeometry();
   Renderer renderer = Renderer::New(geometry, shader);
-  renderer.SetTextures( textureSet );
+  renderer.SetTextures(textureSet);
   Actor secondRootActor = Actor::New();
   secondRootActor.AddRenderer(renderer);
-  secondRootActor.SetSize(100, 100);
-  Stage::GetCurrent().Add(secondRootActor);
+  secondRootActor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f));
+  application.GetScene().Add(secondRootActor);
 
-
-  RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, false);
-  bool finished = false;
-  RenderTaskFinished renderTaskFinished( finished );
-  newTask.FinishedSignal().Connect( &application, renderTaskFinished );
+  RenderTask         newTask  = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, false);
+  bool               finished = false;
+  RenderTaskFinished renderTaskFinished(finished);
+  newTask.FinishedSignal().Connect(&application, renderTaskFinished);
   application.SendNotification();
 
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, true,    finished, false, false, __LINE__ ) );
-  TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
-  Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
-  DALI_TEST_CHECK( lastSyncObj == NULL );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, false, __LINE__));
+  auto&                                             sync        = application.GetGraphicsSyncImpl();
+  Integration::GraphicsSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
+  DALI_TEST_CHECK(lastSyncObj == NULL);
 
   newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
   application.SendNotification(); //         Input,    Expected  Input,    Expected
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, true,    finished, false, true, __LINE__ ) );
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, false,   finished, true, false, __LINE__ ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, true, __LINE__));
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, false, finished, true, false, __LINE__));
 
   lastSyncObj = sync.GetLastSyncObject();
-  DALI_TEST_CHECK( lastSyncObj == NULL );
+  DALI_TEST_CHECK(lastSyncObj == NULL);
 
   END_TEST;
 }
@@ -2383,90 +2357,90 @@ int UtcDaliRenderTaskOnceNoSync05(void)
 {
   TestApplication application;
 
-  tet_infoline("Testing RenderTask Render Once\n"
-               "SetRefreshRate(ONCE), resource load failed, completes render task.\n"
-               "PRE: resources failed to load\n"
-               "POST: No finished signal sent.");
+  tet_infoline(
+    "Testing RenderTask Render Once\n"
+    "SetRefreshRate(ONCE), resource load failed, completes render task.\n"
+    "PRE: resources failed to load\n"
+    "POST: No finished signal sent.");
 
   // SETUP A CONTINUOUS OFFSCREEN RENDER TASK
-  application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
+  application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
   TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
   drawTrace.Enable(true);
 
   Actor rootActor = Actor::New();
-  Stage::GetCurrent().Add( rootActor );
+  application.GetScene().Add(rootActor);
 
-  CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
-  Stage::GetCurrent().Add( offscreenCameraActor );
-  Actor secondRootActor = CreateRenderableActorFailed(application, "aFile.jpg");
-  Stage::GetCurrent().Add(secondRootActor);
+  CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+  application.GetScene().Add(offscreenCameraActor);
+  Actor secondRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
+  application.GetScene().Add(secondRootActor);
 
-  RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, false);
-  bool finished = false;
-  RenderTaskFinished renderTaskFinished( finished );
-  newTask.FinishedSignal().Connect( &application, renderTaskFinished );
+  RenderTask         newTask  = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, false);
+  bool               finished = false;
+  RenderTaskFinished renderTaskFinished(finished);
+  newTask.FinishedSignal().Connect(&application, renderTaskFinished);
   application.SendNotification();
 
   // START PROCESS/RENDER                    Input,     Expected  Input,    Expected
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, true,    finished, false, false, __LINE__ ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, false, __LINE__));
 
   // CHANGE TO RENDER ONCE,
   newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, true,    finished, false, false, __LINE__ ) );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, false, __LINE__));
 
   END_TEST;
 }
 
-
-
 int UtcDaliRenderTaskOnceChain01(void)
 {
   TestApplication application;
 
-  tet_infoline("Testing RenderTask Render Once Chained render tasks\n"
-               "SetRefreshRate(ONCE), resource load completes, both render tasks render.\n"
-               "PRE: resources ready\n"
-               "POST: 2 finished signals sent.");
+  tet_infoline(
+    "Testing RenderTask Render Once Chained render tasks\n"
+    "SetRefreshRate(ONCE), resource load completes, both render tasks render.\n"
+    "PRE: resources ready\n"
+    "POST: 2 finished signals sent.");
 
   // SETUP A CONTINUOUS OFFSCREEN RENDER TASK
-  application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
+  application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
   TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
   drawTrace.Enable(true);
 
   Actor defaultRootActor = Actor::New(); // Root for default RT
-  Stage::GetCurrent().Add( defaultRootActor );
+  application.GetScene().Add(defaultRootActor);
 
-  CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
-  Stage::GetCurrent().Add( offscreenCameraActor );
+  CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+  application.GetScene().Add(offscreenCameraActor);
   Actor firstRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
-  Stage::GetCurrent().Add(firstRootActor);
+  application.GetScene().Add(firstRootActor);
 
   // first render task
-  RenderTask firstTask = CreateRenderTask(application, offscreenCameraActor, defaultRootActor, firstRootActor, RenderTask::REFRESH_ONCE, false);
-  bool firstFinished = false;
-  RenderTaskFinished renderTask1Finished( firstFinished );
-  firstTask.FinishedSignal().Connect( &application, renderTask1Finished );
+  RenderTask         firstTask     = CreateRenderTask(application, offscreenCameraActor, defaultRootActor, firstRootActor, RenderTask::REFRESH_ONCE, false);
+  bool               firstFinished = false;
+  RenderTaskFinished renderTask1Finished(firstFinished);
+  firstTask.FinishedSignal().Connect(&application, renderTask1Finished);
 
   // Second render task
-  FrameBufferImage fbo = firstTask.GetTargetFrameBuffer();
-  Actor secondRootActor = CreateRenderableActor( fbo );
-  Stage::GetCurrent().Add(secondRootActor);
-  RenderTask secondTask = CreateRenderTask(application, offscreenCameraActor, defaultRootActor, secondRootActor, RenderTask::REFRESH_ONCE, false);
-  bool secondFinished = false;
-  RenderTaskFinished renderTask2Finished( secondFinished );
-  secondTask.FinishedSignal().Connect( &application, renderTask2Finished );
+  FrameBuffer fbo             = firstTask.GetFrameBuffer();
+  Actor       secondRootActor = CreateRenderableActor(fbo.GetColorTexture());
+  application.GetScene().Add(secondRootActor);
+  RenderTask         secondTask     = CreateRenderTask(application, offscreenCameraActor, defaultRootActor, secondRootActor, RenderTask::REFRESH_ONCE, false);
+  bool               secondFinished = false;
+  RenderTaskFinished renderTask2Finished(secondFinished);
+  secondTask.FinishedSignal().Connect(&application, renderTask2Finished);
 
   application.SendNotification();
 
   //Both render tasks are executed.
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, true,  firstFinished, false, true, __LINE__ ) );
-  DALI_TEST_CHECK( firstFinished == false );
-  DALI_TEST_CHECK( secondFinished == false );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, firstFinished, false, true, __LINE__));
+  DALI_TEST_CHECK(firstFinished == false);
+  DALI_TEST_CHECK(secondFinished == false);
 
   //Nothing else to render and both render task should have finished now
-  DALI_TEST_CHECK( UpdateRender(application, drawTrace, false,  firstFinished, true, false, __LINE__ ) );
-  DALI_TEST_CHECK( firstFinished == true );
-  DALI_TEST_CHECK( secondFinished == true );
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, false, firstFinished, true, false, __LINE__));
+  DALI_TEST_CHECK(firstFinished == true);
+  DALI_TEST_CHECK(secondFinished == true);
 
   END_TEST;
 }
@@ -2475,12 +2449,12 @@ int UtcDaliRenderTaskProperties(void)
 {
   TestApplication application;
 
-  RenderTask task = Stage::GetCurrent().GetRenderTaskList().CreateTask();
+  RenderTask task = application.GetScene().GetRenderTaskList().CreateTask();
 
   Property::IndexContainer indices;
-  task.GetPropertyIndices( indices );
-  DALI_TEST_CHECK( indices.Size() );
-  DALI_TEST_EQUALS( indices.Size(), task.GetPropertyCount(), TEST_LOCATION );
+  task.GetPropertyIndices(indices);
+  DALI_TEST_CHECK(indices.Size());
+  DALI_TEST_EQUALS(indices.Size(), task.GetPropertyCount(), TEST_LOCATION);
   END_TEST;
 }
 
@@ -2490,43 +2464,45 @@ int UtcDaliRenderTaskFinishInvisibleSourceActor(void)
 
   tet_infoline("Testing RenderTask::FinishInvisibleSourceActor()");
 
-  application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE );
-  TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction();
+  application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
+  auto& sync = application.GetGraphicsSyncImpl();
 
   CameraActor offscreenCameraActor = CameraActor::New();
 
-  Stage::GetCurrent().Add( offscreenCameraActor );
+  application.GetScene().Add(offscreenCameraActor);
 
-  BufferImage image = BufferImage::New( 10, 10 );
-  Actor rootActor = CreateRenderableActor( image );
-  rootActor.SetSize( 10, 10 );
-  rootActor.SetVisible(false);
-  Stage::GetCurrent().Add( rootActor );
+  Texture image     = CreateTexture(TextureType::TEXTURE_2D, Pixel::RGBA8888, 10, 10);
+  Actor   rootActor = CreateRenderableActor(image);
+  rootActor.SetProperty(Actor::Property::SIZE, Vector2(10.0f, 10.0f));
+  rootActor.SetProperty(Actor::Property::VISIBLE, false);
+  application.GetScene().Add(rootActor);
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList          taskList           = application.GetScene().GetRenderTaskList();
   NativeImageInterfacePtr testNativeImagePtr = TestNativeImage::New(10, 10);
-  FrameBufferImage frameBufferImage = FrameBufferImage::New( *testNativeImagePtr.Get() );
+  Texture                 frameBufferTexture = Texture::New(*testNativeImagePtr);
+  FrameBuffer             frameBuffer        = FrameBuffer::New(frameBufferTexture.GetWidth(), frameBufferTexture.GetHeight());
+  frameBuffer.AttachColorTexture(frameBufferTexture);
 
   // Flush all outstanding messages
   application.SendNotification();
   application.Render();
 
   RenderTask newTask = taskList.CreateTask();
-  newTask.SetCameraActor( offscreenCameraActor );
-  newTask.SetSourceActor( rootActor );
-  newTask.SetInputEnabled( false );
-  newTask.SetClearColor( Vector4( 0.f, 0.f, 0.f, 0.f ) );
-  newTask.SetClearEnabled( true );
-  newTask.SetExclusive( true );
-  newTask.SetRefreshRate( RenderTask::REFRESH_ONCE );
-  newTask.SetTargetFrameBuffer( frameBufferImage );
-  newTask.SetProperty( RenderTask::Property::REQUIRES_SYNC, true );
+  newTask.SetCameraActor(offscreenCameraActor);
+  newTask.SetSourceActor(rootActor);
+  newTask.SetInputEnabled(false);
+  newTask.SetClearColor(Vector4(0.f, 0.f, 0.f, 0.f));
+  newTask.SetClearEnabled(true);
+  newTask.SetExclusive(true);
+  newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
+  newTask.SetFrameBuffer(frameBuffer);
+  newTask.SetProperty(RenderTask::Property::REQUIRES_SYNC, true);
 
   // Framebuffer doesn't actually get created until Connected, i.e. by previous line
 
-  bool finished = false;
-  RenderTaskFinished renderTaskFinished( finished );
-  newTask.FinishedSignal().Connect( &application, renderTaskFinished );
+  bool               finished = false;
+  RenderTaskFinished renderTaskFinished(finished);
+  newTask.FinishedSignal().Connect(&application, renderTaskFinished);
 
   // Flush the queue and render.
   application.SendNotification();
@@ -2536,35 +2512,35 @@ int UtcDaliRenderTaskFinishInvisibleSourceActor(void)
 
   application.Render();
   application.SendNotification();
-  DALI_TEST_CHECK( !finished );
+  DALI_TEST_CHECK(!finished);
 
-  Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
-  DALI_TEST_CHECK( lastSyncObj != NULL );
+  Integration::GraphicsSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
+  DALI_TEST_CHECK(lastSyncObj != NULL);
 
   application.Render();
-  DALI_TEST_EQUALS( (Integration::KeepUpdating::Reasons)(application.GetUpdateStatus() & Integration::KeepUpdating::RENDER_TASK_SYNC), Integration::KeepUpdating::RENDER_TASK_SYNC, TEST_LOCATION );
+  DALI_TEST_EQUALS((Integration::KeepUpdating::Reasons)(application.GetUpdateStatus() & Integration::KeepUpdating::RENDER_TASK_SYNC), Integration::KeepUpdating::RENDER_TASK_SYNC, TEST_LOCATION);
   application.SendNotification();
-  DALI_TEST_CHECK( !finished );
+  DALI_TEST_CHECK(!finished);
 
   application.Render();
-  DALI_TEST_EQUALS( (Integration::KeepUpdating::Reasons)(application.GetUpdateStatus() & Integration::KeepUpdating::RENDER_TASK_SYNC), Integration::KeepUpdating::RENDER_TASK_SYNC, TEST_LOCATION );
+  DALI_TEST_EQUALS((Integration::KeepUpdating::Reasons)(application.GetUpdateStatus() & Integration::KeepUpdating::RENDER_TASK_SYNC), Integration::KeepUpdating::RENDER_TASK_SYNC, TEST_LOCATION);
   application.SendNotification();
-  DALI_TEST_CHECK( ! finished );
+  DALI_TEST_CHECK(!finished);
 
-  sync.SetObjectSynced( lastSyncObj, true );
+  sync.SetObjectSynced(lastSyncObj, true);
 
   application.Render();
   application.SendNotification();
-  DALI_TEST_CHECK( !finished );
+  DALI_TEST_CHECK(!finished);
 
   application.Render();
   application.SendNotification();
-  DALI_TEST_CHECK( finished );
+  DALI_TEST_CHECK(finished);
   finished = false;
 
   application.Render(); // Double check no more finished signal
   application.SendNotification();
-  DALI_TEST_CHECK( ! finished );
+  DALI_TEST_CHECK(!finished);
 
   END_TEST;
 }
@@ -2576,28 +2552,28 @@ int UtcDaliRenderTaskFinishMissingImage(void)
   // Previously we had bugs where not having a resource ID would cause render-tasks to wait forever
   tet_infoline("Testing RenderTask::SignalFinished() when an Actor has no Image set");
 
-  Stage stage = Stage::GetCurrent();
+  Integration::Scene stage = application.GetScene();
 
-  BufferImage image = BufferImage::New( 10, 10 );
-  Actor rootActor = CreateRenderableActor( image );
-  rootActor.SetSize( 10, 10 );
-  stage.Add( rootActor );
+  Texture image     = CreateTexture(TextureType::TEXTURE_2D, Pixel::RGBA8888, 10, 10);
+  Actor   rootActor = CreateRenderableActor(image);
+  rootActor.SetProperty(Actor::Property::SIZE, Vector2(10.0f, 10.0f));
+  stage.Add(rootActor);
 
-  Actor actorWithMissingImage = CreateRenderableActor( Image() );
-  actorWithMissingImage.SetSize( 10, 10 );
-  stage.Add( actorWithMissingImage );
+  Actor actorWithMissingImage = CreateRenderableActor(Texture());
+  actorWithMissingImage.SetProperty(Actor::Property::SIZE, Vector2(10.0f, 10.0f));
+  stage.Add(actorWithMissingImage);
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
-  RenderTask newTask = taskList.CreateTask();
-  newTask.SetInputEnabled( false );
-  newTask.SetClearColor( Vector4( 0.f, 0.f, 0.f, 0.f ) );
-  newTask.SetClearEnabled( true );
-  newTask.SetExclusive( true );
-  newTask.SetRefreshRate( RenderTask::REFRESH_ONCE );
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
+  RenderTask     newTask  = taskList.CreateTask();
+  newTask.SetInputEnabled(false);
+  newTask.SetClearColor(Vector4(0.f, 0.f, 0.f, 0.f));
+  newTask.SetClearEnabled(true);
+  newTask.SetExclusive(true);
+  newTask.SetRefreshRate(RenderTask::REFRESH_ONCE);
 
-  bool finished = false;
-  RenderTaskFinished renderTaskFinished( finished );
-  newTask.FinishedSignal().Connect( &application, renderTaskFinished );
+  bool               finished = false;
+  RenderTaskFinished renderTaskFinished(finished);
+  newTask.FinishedSignal().Connect(&application, renderTaskFinished);
 
   // 1 render to process render task, then 1 before finished msg is sent from update to the event thread.
   application.SendNotification();
@@ -2605,31 +2581,31 @@ int UtcDaliRenderTaskFinishMissingImage(void)
   application.Render();
 
   application.SendNotification();
-  DALI_TEST_CHECK( finished );
+  DALI_TEST_CHECK(finished);
 
   END_TEST;
 }
 
 int UtcDaliRenderTaskWorldToViewport(void)
 {
-  TestApplication application( 400u, 400u ); // square surface
+  TestApplication application(400u, 400u); // square surface
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
 
   Actor actor = Actor::New();
-  actor.SetSize(100.0f, 100.0f);
-  actor.SetPosition( Vector3(0.0, 0.0, 0.0) );
+  actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f));
+  actor.SetProperty(Actor::Property::POSITION, Vector3(0.0, 0.0, 0.0));
 
-  actor.SetParentOrigin( Vector3(0.5, 0.5, 0.5) );
-  actor.SetAnchorPoint( Vector3(0.5, 0.5, 0.5) );
+  actor.SetProperty(Actor::Property::PARENT_ORIGIN, Vector3(0.5, 0.5, 0.5));
+  actor.SetProperty(Actor::Property::ANCHOR_POINT, Vector3(0.5, 0.5, 0.5));
 
-  Stage::GetCurrent().Add(actor);
+  application.GetScene().Add(actor);
 
   application.SendNotification();
   application.Render();
   application.SendNotification();
 
-  RenderTask task = taskList.GetTask( 0u );
+  RenderTask task = taskList.GetTask(0u);
 
   CameraActor camera = task.GetCameraActor();
 
@@ -2638,47 +2614,46 @@ int UtcDaliRenderTaskWorldToViewport(void)
   float screenX = 0.0;
   float screenY = 0.0;
 
-  bool ok = task.WorldToViewport(actor.GetCurrentWorldPosition(), screenX, screenY);
+  bool ok = task.WorldToViewport(actor.GetCurrentProperty<Vector3>(Actor::Property::WORLD_POSITION), screenX, screenY);
   DALI_TEST_CHECK(ok == true);
 
-  DALI_TEST_EQUALS(screenX, screenSize.x/2, Math::MACHINE_EPSILON_10000, TEST_LOCATION);
-  DALI_TEST_EQUALS(screenY, screenSize.y/2, Math::MACHINE_EPSILON_10000, TEST_LOCATION);
+  DALI_TEST_EQUALS(screenX, screenSize.x / 2, Math::MACHINE_EPSILON_10000, TEST_LOCATION);
+  DALI_TEST_EQUALS(screenY, screenSize.y / 2, Math::MACHINE_EPSILON_10000, TEST_LOCATION);
 
-  Actor actor2 = Actor::New();
+  Actor actor2     = Actor::New();
   float actor2Size = 100.f;
-  actor2.SetSize( actor2Size, actor2Size );
-  actor2.SetPosition( Vector3(0.0, 0.0, 0.0) );
-  actor2.SetParentOrigin( Vector3(0.5, 0.5, 0.0) );
-  actor2.SetAnchorPoint( Vector3(0.5, 0.5, 0.0) );
-  Stage::GetCurrent().Add( actor2 );
+  actor2.SetProperty(Actor::Property::SIZE, Vector2(actor2Size, actor2Size));
+  actor2.SetProperty(Actor::Property::POSITION, Vector3(0.0, 0.0, 0.0));
+  actor2.SetProperty(Actor::Property::PARENT_ORIGIN, Vector3(0.5, 0.5, 0.0));
+  actor2.SetProperty(Actor::Property::ANCHOR_POINT, Vector3(0.5, 0.5, 0.0));
+  application.GetScene().Add(actor2);
   actor2.Add(actor);
-  actor.SetParentOrigin( Vector3(0,0,0) );
+  actor.SetProperty(Actor::Property::PARENT_ORIGIN, Vector3(0, 0, 0));
 
   application.SendNotification();
   application.Render();
   application.SendNotification();
 
-  ok = task.WorldToViewport(actor.GetCurrentWorldPosition(), screenX, screenY);
+  ok = task.WorldToViewport(actor.GetCurrentProperty<Vector3>(Actor::Property::WORLD_POSITION), screenX, screenY);
   DALI_TEST_CHECK(ok == true);
 
-  DALI_TEST_EQUALS(screenX, screenSize.x/2 - actor2Size/2, Math::MACHINE_EPSILON_10000, TEST_LOCATION);
-  DALI_TEST_EQUALS(screenY, screenSize.y/2 - actor2Size/2, Math::MACHINE_EPSILON_10000, TEST_LOCATION);
+  DALI_TEST_EQUALS(screenX, screenSize.x / 2 - actor2Size / 2, Math::MACHINE_EPSILON_10000, TEST_LOCATION);
+  DALI_TEST_EQUALS(screenY, screenSize.y / 2 - actor2Size / 2, Math::MACHINE_EPSILON_10000, TEST_LOCATION);
 
   END_TEST;
 }
 
-
 int UtcDaliRenderTaskViewportToLocal(void)
 {
   TestApplication application;
-  Actor actor = Actor::New();
-  actor.SetAnchorPoint(AnchorPoint::TOP_LEFT);
-  actor.SetSize(100.0f, 100.0f);
-  actor.SetPosition(10.0f, 10.0f);
-  Stage::GetCurrent().Add(actor);
+  Actor           actor = Actor::New();
+  actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
+  actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f));
+  actor.SetProperty(Actor::Property::POSITION, Vector2(10.0f, 10.0f));
+  application.GetScene().Add(actor);
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
-  RenderTask task = taskList.GetTask( 0u );
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
+  RenderTask     task     = taskList.GetTask(0u);
 
   // flush the queue and render once
   application.SendNotification();
@@ -2695,37 +2670,36 @@ int UtcDaliRenderTaskViewportToLocal(void)
   float screenX = 50.0f;
   float screenY = 50.0f;
 
-  DALI_TEST_CHECK( actor.ScreenToLocal(localX, localY, screenX, screenY) );
+  DALI_TEST_CHECK(actor.ScreenToLocal(localX, localY, screenX, screenY));
 
-  DALI_TEST_CHECK( task.ViewportToLocal(actor, screenX, screenY, rtLocalX, rtLocalY ) );
+  DALI_TEST_CHECK(task.ViewportToLocal(actor, screenX, screenY, rtLocalX, rtLocalY));
 
   DALI_TEST_EQUALS(localX, rtLocalX, 0.01f, TEST_LOCATION);
   DALI_TEST_EQUALS(localY, rtLocalY, 0.01f, TEST_LOCATION);
 
   END_TEST;
-
 }
 
 int UtcDaliRenderTaskOffscreenViewportToLocal(void)
 {
   TestApplication application;
-  Actor actor = Actor::New();
-  actor.SetAnchorPoint( AnchorPoint::TOP_LEFT );
-  actor.SetSize( 100.0f, 100.0f );
-  actor.SetPosition( 10.0f, 10.0f );
-  Stage::GetCurrent().Add( actor );
+  Actor           actor = Actor::New();
+  actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
+  actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f));
+  actor.SetProperty(Actor::Property::POSITION, Vector2(10.0f, 10.0f));
+  application.GetScene().Add(actor);
 
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
-  RenderTask task = taskList.CreateTask();
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
+  RenderTask     task     = taskList.CreateTask();
 
-  FrameBufferImage newFrameBuffer = FrameBufferImage::New( 10, 10 );
-  task.SetTargetFrameBuffer( newFrameBuffer );
-  task.SetSourceActor( actor );
-  task.SetScreenToFrameBufferMappingActor( actor );
+  FrameBuffer newFrameBuffer = FrameBuffer::New(10, 10);
+  task.SetFrameBuffer(newFrameBuffer);
+  task.SetSourceActor(actor);
+  task.SetScreenToFrameBufferMappingActor(actor);
 
-  CameraActor offscreenCameraActor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) );
-  Stage::GetCurrent().Add( offscreenCameraActor );
-  task.SetCameraActor( offscreenCameraActor );
+  CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+  application.GetScene().Add(offscreenCameraActor);
+  task.SetCameraActor(offscreenCameraActor);
 
   // flush the queue and render once
   application.SendNotification();
@@ -2742,9 +2716,9 @@ int UtcDaliRenderTaskOffscreenViewportToLocal(void)
   float screenX = 50.0f;
   float screenY = 50.0f;
 
-  DALI_TEST_CHECK( actor.ScreenToLocal(localX, localY, screenX, screenY) );
+  DALI_TEST_CHECK(actor.ScreenToLocal(localX, localY, screenX, screenY));
 
-  DALI_TEST_CHECK( task.ViewportToLocal(actor, screenX, screenY, rtLocalX, rtLocalY ) );
+  DALI_TEST_CHECK(task.ViewportToLocal(actor, screenX, screenY, rtLocalX, rtLocalY));
 
   DALI_TEST_EQUALS(localX, rtLocalX, 0.01f, TEST_LOCATION);
   DALI_TEST_EQUALS(localY, rtLocalY, 0.01f, TEST_LOCATION);
@@ -2755,18 +2729,799 @@ int UtcDaliRenderTaskOffscreenViewportToLocal(void)
 int UtcDaliRenderTaskRequiresSync(void)
 {
   TestApplication application;
-  RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+  RenderTaskList  taskList = application.GetScene().GetRenderTaskList();
 
   RenderTask newTask = taskList.CreateTask();
-  newTask.SetProperty( RenderTask::Property::REQUIRES_SYNC, false );
+  newTask.SetProperty(RenderTask::Property::REQUIRES_SYNC, false);
+
+  DALI_TEST_EQUALS(newTask.GetProperty<bool>(RenderTask::Property::REQUIRES_SYNC), false, TEST_LOCATION);
+  DALI_TEST_EQUALS(newTask.GetCurrentProperty<bool>(RenderTask::Property::REQUIRES_SYNC), false, TEST_LOCATION);
+
+  newTask.SetProperty(RenderTask::Property::REQUIRES_SYNC, true);
+
+  DALI_TEST_EQUALS(newTask.GetProperty<bool>(RenderTask::Property::REQUIRES_SYNC), true, TEST_LOCATION);
+  DALI_TEST_EQUALS(newTask.GetCurrentProperty<bool>(RenderTask::Property::REQUIRES_SYNC), true, TEST_LOCATION);
+
+  END_TEST;
+}
+
+int UtcDaliRenderTaskSetClearEnabled(void)
+{
+  TestApplication application;
+
+  tet_infoline("UtcDaliRenderTaskSetClearEnabled");
+
+  application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
+  TestGlAbstraction& gl = application.GetGlAbstraction();
+
+  Actor renderableActor = CreateRenderableActorSuccess(application, "aFile.jpg");
+  application.GetScene().Add(renderableActor);
+
+  Actor rootActor = Actor::New();
+  application.GetScene().Add(rootActor);
+
+  CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+  application.GetScene().Add(offscreenCameraActor);
+
+  Actor sourceActor = CreateRenderableActorSuccess(application, "aFile.jpg");
+  application.GetScene().Add(sourceActor);
+
+  RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, sourceActor, RenderTask::REFRESH_ALWAYS, false);
+
+  DALI_TEST_EQUALS(gl.GetClearCountCalled(), 0, TEST_LOCATION);
+
+  application.SendNotification();
+  application.Render();
+
+  // glClear should be called twice - default task and the new task.
+  DALI_TEST_EQUALS(gl.GetClearCountCalled(), 2, TEST_LOCATION);
+
+  newTask.SetClearEnabled(false);
+
+  application.SendNotification();
+  application.Render();
+
+  // The count should increase by 1 - default task only.
+  DALI_TEST_EQUALS(gl.GetClearCountCalled(), 3, TEST_LOCATION);
+
+  END_TEST;
+}
+
+int UtcDaliRenderTaskMoveConstrctor(void)
+{
+  TestApplication application;
+
+  Vector4 testColor(1.0f, 2.0f, 3.0f, 4.0f);
+
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
+  RenderTask     task     = taskList.GetTask(0u);
+  DALI_TEST_CHECK(task);
+  DALI_TEST_EQUALS(2, task.GetBaseObject().ReferenceCount(), TEST_LOCATION);
+  DALI_TEST_CHECK(task.GetClearColor() != testColor);
+
+  task.SetClearColor(testColor);
+
+  // Wait a frame.
+  Wait(application);
+
+  DALI_TEST_EQUALS(task.GetClearColor(), testColor, TEST_LOCATION);
+
+  RenderTask move = std::move(task);
+  DALI_TEST_CHECK(move);
+  DALI_TEST_EQUALS(2, move.GetBaseObject().ReferenceCount(), TEST_LOCATION);
+  DALI_TEST_EQUALS(move.GetClearColor(), testColor, TEST_LOCATION);
+  DALI_TEST_CHECK(!task);
+
+  END_TEST;
+}
+
+int UtcDaliRenderTaskMoveAssignment(void)
+{
+  TestApplication application;
+
+  Vector4 testColor(1.0f, 2.0f, 3.0f, 4.0f);
+
+  RenderTaskList taskList = application.GetScene().GetRenderTaskList();
+  RenderTask     task     = taskList.GetTask(0u);
+  DALI_TEST_CHECK(task);
+  DALI_TEST_EQUALS(2, task.GetBaseObject().ReferenceCount(), TEST_LOCATION);
+  DALI_TEST_CHECK(task.GetClearColor() != testColor);
+
+  task.SetClearColor(testColor);
+
+  // Wait a frame.
+  Wait(application);
+
+  DALI_TEST_EQUALS(task.GetClearColor(), testColor, TEST_LOCATION);
+
+  RenderTask move;
+  move = std::move(task);
+  DALI_TEST_CHECK(move);
+  DALI_TEST_EQUALS(2, move.GetBaseObject().ReferenceCount(), TEST_LOCATION);
+  DALI_TEST_EQUALS(move.GetClearColor(), testColor, TEST_LOCATION);
+  DALI_TEST_CHECK(!task);
+
+  END_TEST;
+}
+
+int UtcDaliRenderTaskSetCullModeNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    bool arg1(false);
+    instance.SetCullMode(arg1);
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskSetViewportNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    Dali::Rect<int> arg1;
+    instance.SetViewport(arg1);
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
 
-  DALI_TEST_EQUALS( newTask.GetProperty< bool >( RenderTask::Property::REQUIRES_SYNC ), false, TEST_LOCATION );
-  DALI_TEST_EQUALS( newTask.GetCurrentProperty< bool >( RenderTask::Property::REQUIRES_SYNC ), false, TEST_LOCATION );
+int UtcDaliRenderTaskSetExclusiveNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    bool arg1(false);
+    instance.SetExclusive(arg1);
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
 
-  newTask.SetProperty( RenderTask::Property::REQUIRES_SYNC, true );
+int UtcDaliRenderTaskSetClearColorNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    Dali::Vector4 arg1;
+    instance.SetClearColor(arg1);
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
 
-  DALI_TEST_EQUALS( newTask.GetProperty< bool >( RenderTask::Property::REQUIRES_SYNC ), true, TEST_LOCATION );
-  DALI_TEST_EQUALS( newTask.GetCurrentProperty< bool >( RenderTask::Property::REQUIRES_SYNC ), true, TEST_LOCATION );
+int UtcDaliRenderTaskFinishedSignalNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    instance.FinishedSignal();
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
 
+int UtcDaliRenderTaskSetCameraActorNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    Dali::CameraActor arg1;
+    instance.SetCameraActor(arg1);
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
   END_TEST;
 }
+
+int UtcDaliRenderTaskSetFrameBufferNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    Dali::FrameBuffer arg1;
+    instance.SetFrameBuffer(arg1);
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskSetRefreshRateNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    unsigned int arg1(0u);
+    instance.SetRefreshRate(arg1);
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskSetSourceActorNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    Dali::Actor arg1;
+    instance.SetSourceActor(arg1);
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskSetClearEnabledNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    bool arg1(false);
+    instance.SetClearEnabled(arg1);
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskSetInputEnabledNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    bool arg1(false);
+    instance.SetInputEnabled(arg1);
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskSetViewportSizeNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    Dali::Vector2 arg1;
+    instance.SetViewportSize(arg1);
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskSetViewportPositionNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    Dali::Vector2 arg1;
+    instance.SetViewportPosition(arg1);
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskSetScreenToFrameBufferFunctionNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    RenderTask::ScreenToFrameBufferFunction arg1(nullptr);
+    instance.SetScreenToFrameBufferFunction(arg1);
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskSetScreenToFrameBufferMappingActorNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    Dali::Actor arg1;
+    instance.SetScreenToFrameBufferMappingActor(arg1);
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskGetCullModeNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    instance.GetCullMode();
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskGetViewportNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    instance.GetViewport();
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskIsExclusiveNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    instance.IsExclusive();
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskGetClearColorNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    instance.GetClearColor();
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskGetCameraActorNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    instance.GetCameraActor();
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskGetFrameBufferNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    instance.GetFrameBuffer();
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskGetRefreshRateNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    instance.GetRefreshRate();
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskGetSourceActorNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    instance.GetSourceActor();
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskGetClearEnabledNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    instance.GetClearEnabled();
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskGetInputEnabledNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    instance.GetInputEnabled();
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskViewportToLocalNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    Dali::Actor arg1(Actor::New());
+    float       arg2(0.0f);
+    float       arg3(0.0f);
+    float       arg4(0.0f);
+    float       arg5(0.0f);
+    instance.ViewportToLocal(arg1, arg2, arg3, arg4, arg5);
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskWorldToViewportNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    Dali::Vector3 arg1;
+    float         arg2(0.0f);
+    float         arg3(0.0f);
+    instance.WorldToViewport(arg1, arg2, arg3);
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskGetCurrentViewportSizeNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    instance.GetCurrentViewportSize();
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskGetCurrentViewportPositionNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    instance.GetCurrentViewportPosition();
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskGetScreenToFrameBufferFunctionNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    instance.GetScreenToFrameBufferFunction();
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskGetScreenToFrameBufferMappingActorNegative(void)
+{
+  TestApplication  application;
+  Dali::RenderTask instance;
+  try
+  {
+    instance.GetScreenToFrameBufferMappingActor();
+    DALI_TEST_CHECK(false); // Should not get here
+  }
+  catch(...)
+  {
+    DALI_TEST_CHECK(true); // We expect an assert
+  }
+  END_TEST;
+}
+
+int UtcDaliRenderTaskClippingMode01(void)
+{
+  TestApplication application;
+
+  tet_infoline("Testing clipping mode: CLIP_TO_BOUNDING_BOX.\n");
+
+  TestGlAbstraction& glAbstraction       = application.GetGlAbstraction();
+  TraceCallStack&    enabledDisableTrace = glAbstraction.GetEnableDisableTrace();
+  TraceCallStack&    scissorTrace        = glAbstraction.GetScissorTrace();
+
+  enabledDisableTrace.Enable(true);
+  scissorTrace.Enable(true);
+
+  // SETUP AN OFFSCREEN RENDER TASK
+  Actor rootActor = Actor::New();
+  application.GetScene().Add(rootActor);
+
+  CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+  offscreenCameraActor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
+  offscreenCameraActor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
+  application.GetScene().Add(offscreenCameraActor);
+
+  Shader     shader     = CreateShader();
+  Texture    image      = CreateTexture();
+  TextureSet textureSet = CreateTextureSet(image);
+
+  Geometry geometry = CreateQuadGeometry();
+  Renderer renderer = Renderer::New(geometry, shader);
+  renderer.SetTextures(textureSet);
+
+  Vector2 position(100.0f, 100.0f);
+  Vector2 size(200.0f, 200.0f);
+  Actor   secondRootActor = Actor::New();
+  secondRootActor.AddRenderer(renderer);
+  secondRootActor.SetProperty(Actor::Property::POSITION, position);
+  secondRootActor.SetProperty(Actor::Property::SIZE, size);
+  secondRootActor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
+  secondRootActor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
+  secondRootActor.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_TO_BOUNDING_BOX);
+  application.GetScene().Add(secondRootActor);
+
+  RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ONCE, true, TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT);
+
+  application.SendNotification();
+  application.Render();
+
+  std::ostringstream scissor;
+  scissor << std::hex << GL_SCISSOR_TEST;
+  DALI_TEST_CHECK(enabledDisableTrace.FindMethodAndParams("Enable", scissor.str()));
+
+  // Check the scissor was set, and the coordinates are correct.
+  Vector4           expectResults(position.x, TestApplication::DEFAULT_SURFACE_HEIGHT - size.height - position.y, size.width, size.height); // (100, 500, 200, 200)
+  std::stringstream compareParametersString;
+  compareParametersString << expectResults.x << ", " << expectResults.y << ", " << expectResults.z << ", " << expectResults.w;
+  DALI_TEST_CHECK(scissorTrace.FindMethodAndParams("Scissor", compareParametersString.str())); // Compare with the expected result
+
+  END_TEST;
+}
+
+int UtcDaliRenderTaskClippingMode02(void)
+{
+  TestApplication application;
+
+  tet_infoline("Testing clipping mode with the inverted camera: CLIP_TO_BOUNDING_BOX.\n");
+
+  TestGlAbstraction& glAbstraction       = application.GetGlAbstraction();
+  TraceCallStack&    enabledDisableTrace = glAbstraction.GetEnableDisableTrace();
+  TraceCallStack&    scissorTrace        = glAbstraction.GetScissorTrace();
+
+  enabledDisableTrace.Enable(true);
+  scissorTrace.Enable(true);
+
+  // SETUP AN OFFSCREEN RENDER TASK
+  Actor rootActor = Actor::New();
+  application.GetScene().Add(rootActor);
+
+  CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+  offscreenCameraActor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
+  offscreenCameraActor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
+  offscreenCameraActor.SetInvertYAxis(true);
+  application.GetScene().Add(offscreenCameraActor);
+
+  Shader     shader     = CreateShader();
+  Texture    image      = CreateTexture();
+  TextureSet textureSet = CreateTextureSet(image);
+
+  Geometry geometry = CreateQuadGeometry();
+  Renderer renderer = Renderer::New(geometry, shader);
+  renderer.SetTextures(textureSet);
+
+  Vector2 position(100.0f, 100.0f);
+  Vector2 size(200.0f, 200.0f);
+  Actor   secondRootActor = Actor::New();
+  secondRootActor.AddRenderer(renderer);
+  secondRootActor.SetProperty(Actor::Property::POSITION, position);
+  secondRootActor.SetProperty(Actor::Property::SIZE, size);
+  secondRootActor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
+  secondRootActor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
+  secondRootActor.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_TO_BOUNDING_BOX);
+  application.GetScene().Add(secondRootActor);
+
+  RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ONCE, true, TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT);
+
+  application.SendNotification();
+  application.Render();
+
+  std::ostringstream scissor;
+  scissor << std::hex << GL_SCISSOR_TEST;
+  DALI_TEST_CHECK(enabledDisableTrace.FindMethodAndParams("Enable", scissor.str()));
+
+  // Check the scissor was set, and the coordinates are correct.
+  Vector4           expectResults(position.x, position.y, size.width, size.height); // (100, 100, 200, 200)
+  std::stringstream compareParametersString;
+  compareParametersString << expectResults.x << ", " << expectResults.y << ", " << expectResults.z << ", " << expectResults.w;
+  DALI_TEST_CHECK(scissorTrace.FindMethodAndParams("Scissor", compareParametersString.str())); // Compare with the expected result
+
+  END_TEST;
+}
+
+int UtcDaliRenderTaskUploadOnly(void)
+{
+  TestApplication application;
+
+  tet_infoline("Testing RenderTask Render Once GlSync, using loaded image");
+
+  // SETUP AN OFFSCREEN RENDER TASK
+  application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
+  auto&           sync      = application.GetGraphicsSyncImpl();
+  TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
+  drawTrace.Enable(true);
+
+  Actor rootActor = Actor::New();
+  application.GetScene().Add(rootActor);
+
+  CameraActor offscreenCameraActor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT));
+  application.GetScene().Add(offscreenCameraActor);
+  Actor secondRootActor = CreateRenderableActorSuccess(application, "aFile.jpg");
+
+  application.GetScene().Add(secondRootActor);
+
+  RenderTask         newTask  = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ONCE, true);
+  bool               finished = false;
+  RenderTaskFinished renderTaskFinished(finished);
+  newTask.FinishedSignal().Connect(&application, renderTaskFinished);
+  application.SendNotification();
+
+  DALI_TEST_CHECK(UpdateRender(application, drawTrace, true, finished, false, true, __LINE__));
+
+  Integration::GraphicsSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
+  DALI_TEST_CHECK(lastSyncObj != NULL);
+  sync.SetObjectSynced(lastSyncObj, true);
+
+  application.SendNotification();
+  application.Render(16, nullptr, true);
+
+  DALI_TEST_CHECK(!finished);
+
+  application.Render(16, nullptr, true);
+  application.SendNotification();
+
+  DALI_TEST_CHECK(!finished);
+  END_TEST;
+}
\ No newline at end of file