X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali%2Futc-Dali-Scene.cpp;h=96302a2547dc85ce1e41ab0d1e1cec572448284a;hb=0cd1a8fc3c33c64edd9f6bde954b90508e2374bc;hp=688f7c36105ed9268f0c0b06721a1cbae0a95c29;hpb=3089b50ce759a73de9598fb1c59106711d4dd107;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/automated-tests/src/dali/utc-Dali-Scene.cpp b/automated-tests/src/dali/utc-Dali-Scene.cpp index 688f7c3..96302a2 100644 --- a/automated-tests/src/dali/utc-Dali-Scene.cpp +++ b/automated-tests/src/dali/utc-Dali-Scene.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 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. @@ -921,10 +921,20 @@ int UtcDaliSceneSurfaceResizedDefaultSceneViewport(void) auto defaultScene = application.GetScene(); DALI_TEST_CHECK(defaultScene); + // consume the resize flag by first rendering + defaultScene.IsSurfaceRectChanged(); + // Ensure stage size matches the scene size auto stage = Stage::GetCurrent(); DALI_TEST_EQUALS(stage.GetSize(), defaultScene.GetSize(), TEST_LOCATION); + Rect surfaceRect = defaultScene.GetCurrentSurfaceRect(); + + bool surfaceResized; + // check resized flag before surface is resized. + surfaceResized = defaultScene.IsSurfaceRectChanged(); + DALI_TEST_EQUALS(surfaceResized, false, TEST_LOCATION); + // Resize the scene Vector2 newSize(1000.0f, 2000.0f); std::string viewportParams("0, 0, 1000, 2000"); // to match newSize @@ -934,13 +944,31 @@ int UtcDaliSceneSurfaceResizedDefaultSceneViewport(void) DALI_TEST_EQUALS(stage.GetSize(), newSize, TEST_LOCATION); DALI_TEST_EQUALS(defaultScene.GetSize(), newSize, TEST_LOCATION); + // Check current surface rect + Rect newSurfaceRect = defaultScene.GetCurrentSurfaceRect(); + + // It should not be changed yet. + DALI_TEST_CHECK(surfaceRect == newSurfaceRect); + // Render after resizing surface application.SendNotification(); application.Render(0); + surfaceResized = defaultScene.IsSurfaceRectChanged(); + DALI_TEST_EQUALS(surfaceResized, true, TEST_LOCATION); + // Check that the viewport is handled properly DALI_TEST_CHECK(callStack.FindMethodAndGetParameters("Viewport", viewportParams)); + // Check current surface rect + newSurfaceRect = defaultScene.GetCurrentSurfaceRect(); + + // It should be changed + DALI_TEST_EQUALS(newSurfaceRect.x, 0, TEST_LOCATION); + DALI_TEST_EQUALS(newSurfaceRect.y, 0, TEST_LOCATION); + DALI_TEST_EQUALS(newSurfaceRect.width, 1000, TEST_LOCATION); + DALI_TEST_EQUALS(newSurfaceRect.height, 2000, TEST_LOCATION); + END_TEST; } @@ -1050,10 +1078,10 @@ int UtcDaliSceneSurfaceResizedAdditionalScene(void) END_TEST; } -#define CLIPPING_RECT_X (16) -#define CLIPPING_RECT_Y (768) -#define CLIPPING_RECT_WIDTH (32) -#define CLIPPING_RECT_HEIGHT (32) +#define CLIPPING_RECT_X (16) +#define CLIPPING_RECT_Y (768) +#define CLIPPING_RECT_WIDTH (32) +#define CLIPPING_RECT_HEIGHT (32) int UtcDaliSceneSurfaceRotatedWithAngle0(void) { @@ -1088,7 +1116,15 @@ int UtcDaliSceneSurfaceRotatedWithAngle0(void) damagedRects.clear(); application.GetScene().SurfaceRotated(TestApplication::DEFAULT_SURFACE_WIDTH, - TestApplication::DEFAULT_SURFACE_HEIGHT, 0); + TestApplication::DEFAULT_SURFACE_HEIGHT, + 0); + + // Check current surface orientation + int32_t orientation = application.GetScene().GetCurrentSurfaceOrientation(); + + // It should not be changed yet. + DALI_TEST_EQUALS(orientation, 0, TEST_LOCATION); + application.SendNotification(); application.PreRenderWithPartialUpdate(TestApplication::RENDER_FRAME_INTERVAL, nullptr, damagedRects); DALI_TEST_EQUALS(damagedRects.size(), 1, TEST_LOCATION); @@ -1102,6 +1138,12 @@ int UtcDaliSceneSurfaceRotatedWithAngle0(void) DALI_TEST_EQUALS(clippingRect.width, glScissorParams.width, TEST_LOCATION); DALI_TEST_EQUALS(clippingRect.height, glScissorParams.height, TEST_LOCATION); + // Check current surface orientation + orientation = application.GetScene().GetCurrentSurfaceOrientation(); + + // It should be changed. + DALI_TEST_EQUALS(orientation, 0, TEST_LOCATION); + END_TEST; } @@ -1138,7 +1180,15 @@ int UtcDaliSceneSurfaceRotatedWithAngle90(void) damagedRects.clear(); application.GetScene().SurfaceRotated(TestApplication::DEFAULT_SURFACE_WIDTH, - TestApplication::DEFAULT_SURFACE_HEIGHT, 90); + TestApplication::DEFAULT_SURFACE_HEIGHT, + 90); + + // Check current surface orientation + int32_t orientation = application.GetScene().GetCurrentSurfaceOrientation(); + + // It should not be changed yet. + DALI_TEST_EQUALS(orientation, 0, TEST_LOCATION); + application.SendNotification(); application.PreRenderWithPartialUpdate(TestApplication::RENDER_FRAME_INTERVAL, nullptr, damagedRects); DALI_TEST_EQUALS(damagedRects.size(), 1, TEST_LOCATION); @@ -1149,9 +1199,9 @@ int UtcDaliSceneSurfaceRotatedWithAngle90(void) // It is recalculation for glScissor. // Because surface is rotated and glScissor is called with recalcurated value. - clippingRect.x = TestApplication::DEFAULT_SURFACE_HEIGHT - (CLIPPING_RECT_Y + CLIPPING_RECT_HEIGHT); - clippingRect.y = CLIPPING_RECT_X; - clippingRect.width = CLIPPING_RECT_HEIGHT; + clippingRect.x = TestApplication::DEFAULT_SURFACE_HEIGHT - (CLIPPING_RECT_Y + CLIPPING_RECT_HEIGHT); + clippingRect.y = CLIPPING_RECT_X; + clippingRect.width = CLIPPING_RECT_HEIGHT; clippingRect.height = CLIPPING_RECT_WIDTH; DALI_TEST_EQUALS(clippingRect.x, glScissorParams.x, TEST_LOCATION); @@ -1159,6 +1209,12 @@ int UtcDaliSceneSurfaceRotatedWithAngle90(void) DALI_TEST_EQUALS(clippingRect.width, glScissorParams.width, TEST_LOCATION); DALI_TEST_EQUALS(clippingRect.height, glScissorParams.height, TEST_LOCATION); + // Check current surface orientation + orientation = application.GetScene().GetCurrentSurfaceOrientation(); + + // It should be changed. + DALI_TEST_EQUALS(orientation, 90, TEST_LOCATION); + END_TEST; } @@ -1195,7 +1251,15 @@ int UtcDaliSceneSurfaceRotatedWithAngle180(void) damagedRects.clear(); application.GetScene().SurfaceRotated(TestApplication::DEFAULT_SURFACE_WIDTH, - TestApplication::DEFAULT_SURFACE_HEIGHT, 180); + TestApplication::DEFAULT_SURFACE_HEIGHT, + 180); + + // Check current surface orientation + int32_t orientation = application.GetScene().GetCurrentSurfaceOrientation(); + + // It should not be changed yet. + DALI_TEST_EQUALS(orientation, 0, TEST_LOCATION); + application.SendNotification(); application.PreRenderWithPartialUpdate(TestApplication::RENDER_FRAME_INTERVAL, nullptr, damagedRects); DALI_TEST_EQUALS(damagedRects.size(), 1, TEST_LOCATION); @@ -1206,9 +1270,9 @@ int UtcDaliSceneSurfaceRotatedWithAngle180(void) // It is recalculation for glScissor. // Because surface is rotated and glScissor is called with recalcurated value. - clippingRect.x = TestApplication::DEFAULT_SURFACE_WIDTH - (CLIPPING_RECT_X + CLIPPING_RECT_WIDTH); - clippingRect.y = TestApplication::DEFAULT_SURFACE_HEIGHT - (CLIPPING_RECT_Y +CLIPPING_RECT_HEIGHT); - clippingRect.width = CLIPPING_RECT_WIDTH; + clippingRect.x = TestApplication::DEFAULT_SURFACE_WIDTH - (CLIPPING_RECT_X + CLIPPING_RECT_WIDTH); + clippingRect.y = TestApplication::DEFAULT_SURFACE_HEIGHT - (CLIPPING_RECT_Y + CLIPPING_RECT_HEIGHT); + clippingRect.width = CLIPPING_RECT_WIDTH; clippingRect.height = CLIPPING_RECT_HEIGHT; DALI_TEST_EQUALS(clippingRect.x, glScissorParams.x, TEST_LOCATION); @@ -1216,6 +1280,12 @@ int UtcDaliSceneSurfaceRotatedWithAngle180(void) DALI_TEST_EQUALS(clippingRect.width, glScissorParams.width, TEST_LOCATION); DALI_TEST_EQUALS(clippingRect.height, glScissorParams.height, TEST_LOCATION); + // Check current surface orientation + orientation = application.GetScene().GetCurrentSurfaceOrientation(); + + // It should be changed. + DALI_TEST_EQUALS(orientation, 180, TEST_LOCATION); + END_TEST; } @@ -1252,7 +1322,15 @@ int UtcDaliSceneSurfaceRotatedWithAngle270(void) damagedRects.clear(); application.GetScene().SurfaceRotated(TestApplication::DEFAULT_SURFACE_WIDTH, - TestApplication::DEFAULT_SURFACE_HEIGHT, 270); + TestApplication::DEFAULT_SURFACE_HEIGHT, + 270); + + // Check current surface orientation + int32_t orientation = application.GetScene().GetCurrentSurfaceOrientation(); + + // It should not be changed yet. + DALI_TEST_EQUALS(orientation, 0, TEST_LOCATION); + application.SendNotification(); application.PreRenderWithPartialUpdate(TestApplication::RENDER_FRAME_INTERVAL, nullptr, damagedRects); DALI_TEST_EQUALS(damagedRects.size(), 1, TEST_LOCATION); @@ -1263,9 +1341,9 @@ int UtcDaliSceneSurfaceRotatedWithAngle270(void) // It is recalculation for glScissor. // Because surface is rotated and glScissor is called with recalcurated value. - clippingRect.x = CLIPPING_RECT_Y; - clippingRect.y = TestApplication::DEFAULT_SURFACE_WIDTH - (CLIPPING_RECT_X + CLIPPING_RECT_WIDTH); - clippingRect.width = CLIPPING_RECT_HEIGHT; + clippingRect.x = CLIPPING_RECT_Y; + clippingRect.y = TestApplication::DEFAULT_SURFACE_WIDTH - (CLIPPING_RECT_X + CLIPPING_RECT_WIDTH); + clippingRect.width = CLIPPING_RECT_HEIGHT; clippingRect.height = CLIPPING_RECT_WIDTH; DALI_TEST_EQUALS(clippingRect.x, glScissorParams.x, TEST_LOCATION); @@ -1273,6 +1351,12 @@ int UtcDaliSceneSurfaceRotatedWithAngle270(void) DALI_TEST_EQUALS(clippingRect.width, glScissorParams.width, TEST_LOCATION); DALI_TEST_EQUALS(clippingRect.height, glScissorParams.height, TEST_LOCATION); + // Check current surface orientation + orientation = application.GetScene().GetCurrentSurfaceOrientation(); + + // It should be changed. + DALI_TEST_EQUALS(orientation, 270, TEST_LOCATION); + END_TEST; } @@ -1372,7 +1456,9 @@ int UtcDaliSceneEnsureReplacedSurfaceKeepsClearColor(void) application.Render(); // Check scissor test was enabled. - DALI_TEST_CHECK(enabledDisableTrace.FindMethodAndParams("Enable", "3089")); // 3089 = 0xC11 (GL_SCISSOR_TEST) + 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. DALI_TEST_CHECK(scissorTrace.FindMethodAndParams("Scissor", "0, 700, 100, 100")); @@ -1409,6 +1495,14 @@ int UtcDaliSceneEmptySceneRendering(void) Shader shader = CreateShader(); Renderer renderer = Renderer::New(geometry, shader); + // Render before adding 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); + Actor actor = Actor::New(); actor.AddRenderer(renderer);