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