+
+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;
+}