+
+int UtcDaliSceneEmptySceneRendering(void)
+{
+ tet_infoline("Ensure not rendering before a Renderer is added");
+
+ TestApplication application;
+ TestGlAbstraction& glAbstraction = application.GetGlAbstraction();
+
+ // Render without any renderer
+ application.SendNotification();
+ application.Render();
+
+ // Check the clear count and the render status
+ DALI_TEST_EQUALS(glAbstraction.GetClearCountCalled(), 0, TEST_LOCATION);
+ DALI_TEST_EQUALS(application.GetRenderNeedsPostRender(), false, TEST_LOCATION);
+
+ // Add a Renderer
+ Geometry geometry = CreateQuadGeometry();
+ Shader shader = CreateShader();
+ Renderer renderer = Renderer::New(geometry, shader);
+
+ Actor actor = Actor::New();
+ actor.AddRenderer(renderer);
+
+ actor.SetProperty(Actor::Property::SIZE, Vector2(400, 400));
+ application.GetScene().Add(actor);
+
+ // Render
+ application.SendNotification();
+ application.Render();
+
+ // Check the clear count and the render status
+ DALI_TEST_EQUALS(glAbstraction.GetClearCountCalled(), 1, TEST_LOCATION);
+ DALI_TEST_EQUALS(application.GetRenderNeedsPostRender(), true, TEST_LOCATION);
+
+ // Remove the Renderer
+ application.GetScene().Remove(actor);
+ actor.Reset();
+ renderer.Reset();
+
+ // Render
+ application.SendNotification();
+ application.Render();
+
+ // Check the clear count and the render status
+ DALI_TEST_EQUALS(glAbstraction.GetClearCountCalled(), 2, TEST_LOCATION); // Should be cleared
+ DALI_TEST_EQUALS(application.GetRenderNeedsPostRender(), true, TEST_LOCATION);
+
+ END_TEST;
+}
+
+int UtcDaliSceneFrameRenderedPresentedCallback(void)
+{
+ tet_infoline("UtcDaliSceneFrameRenderedCallback");
+
+ TestApplication application;
+
+ // Add a Renderer
+ Geometry geometry = CreateQuadGeometry();
+ Shader shader = CreateShader();
+ Renderer renderer = Renderer::New(geometry, shader);
+
+ Actor actor = Actor::New();
+ actor.AddRenderer(renderer);
+ application.GetScene().Add(actor);
+
+ Dali::Integration::Scene scene = application.GetScene();
+
+ int frameId = 1;
+ scene.AddFrameRenderedCallback(std::unique_ptr<CallbackBase>(MakeCallback(&FrameCallback)), frameId);
+ scene.AddFramePresentedCallback(std::unique_ptr<CallbackBase>(MakeCallback(&FrameCallback)), frameId);
+
+ // Render
+ application.SendNotification();
+ application.Render();
+
+ Dali::Integration::Scene::FrameCallbackContainer callbackContainer;
+ scene.GetFrameRenderedCallback(callbackContainer);
+
+ DALI_TEST_EQUALS(callbackContainer.size(), 1, TEST_LOCATION);
+ DALI_TEST_EQUALS(callbackContainer[0].second, frameId, TEST_LOCATION);
+
+ callbackContainer.clear();
+
+ scene.GetFramePresentedCallback(callbackContainer);
+
+ DALI_TEST_EQUALS(callbackContainer.size(), 1, TEST_LOCATION);
+ DALI_TEST_EQUALS(callbackContainer[0].second, frameId, TEST_LOCATION);
+
+ END_TEST;
+}