Updated Renderer lifecycle test case to test all objects. 16/128116/2
authorDavid Steele <david.steele@samsung.com>
Fri, 5 May 2017 14:13:19 +0000 (15:13 +0100)
committerDavid Steele <david.steele@samsung.com>
Mon, 8 May 2017 12:21:04 +0000 (13:21 +0100)
Renderer Add/Remove positive test case doesn't actually test the
renderer lifecycle. Added extra scoping and calls to Application.Render
to test the lifecyle of scenegraph and render objects as well.

Change-Id: Ib3f423f527de85d60069482fc635a2b95a6e0637
Signed-off-by: David Steele <david.steele@samsung.com>
automated-tests/src/dali/utc-Dali-Actor.cpp

index 9a41831..f4a6071 100644 (file)
@@ -3859,17 +3859,33 @@ int UtcDaliActorRemoveRendererP1(void)
 
   DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION );
 
-  Geometry geometry = CreateQuadGeometry();
-  Shader shader = CreateShader();
-  Renderer renderer = Renderer::New(geometry, shader);
+  {
+    Geometry geometry = CreateQuadGeometry();
+    Shader shader = CreateShader();
+    Renderer renderer = Renderer::New(geometry, shader);
 
-  actor.AddRenderer( renderer );
-  DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION );
-  DALI_TEST_EQUALS( actor.GetRendererAt(0), renderer, TEST_LOCATION );
+    actor.AddRenderer( renderer );
+    DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION );
+    DALI_TEST_EQUALS( actor.GetRendererAt(0), renderer, TEST_LOCATION );
 
-  actor.RemoveRenderer(renderer);
-  DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION );
+    application.SendNotification();
+    application.Render();
+  }
+
+  {
+    Renderer renderer = actor.GetRendererAt(0);
+    actor.RemoveRenderer(renderer);
+    DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION );
 
+    application.SendNotification();
+    application.Render();
+  }
+
+  // Call one final time to ensure that the renderer is actually removed after
+  // the handle goes out of scope, and excercises the deletion code path in
+  // scene graph and render.
+  application.SendNotification();
+  application.Render();
 
   END_TEST;
 }
@@ -3888,13 +3904,19 @@ int UtcDaliActorRemoveRendererP2(void)
   Renderer renderer = Renderer::New(geometry, shader);
 
   actor.AddRenderer( renderer );
+  application.SendNotification();
+  application.Render();
+
   DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION );
   DALI_TEST_EQUALS( actor.GetRendererAt(0), renderer, TEST_LOCATION );
 
   actor.RemoveRenderer(0);
-  DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION );
+  application.SendNotification();
+  application.Render();
 
+  DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION );
 
+  // Shut down whilst holding onto the renderer handle.
   END_TEST;
 }