2 * Copyright (c) 2022 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
21 #include <dali-toolkit-test-suite-utils.h>
23 #include <dali-toolkit/dali-toolkit.h>
24 #include <dali-toolkit/devel-api/controls/gaussian-blur-view/gaussian-blur-view.h>
27 using namespace Dali::Toolkit;
31 const char* TEST_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/gallery-small-1.jpg";
34 void utc_gaussian_blur_view_startup(void)
36 test_return_value = TET_UNDEF;
39 void utc_gaussian_blur_view_cleanup(void)
41 test_return_value = TET_PASS;
44 class TestCallback : public ConnectionTracker
47 TestCallback(Dali::Toolkit::GaussianBlurView& blurView)
55 mBlurView.FinishedSignal().Connect(this, &TestCallback::OnFinished);
58 void OnFinished(Dali::Toolkit::GaussianBlurView source)
64 Dali::Toolkit::GaussianBlurView& mBlurView;
67 // Negative test case for a method
68 int UtcDaliGaussianBlurViewUninitialized(void)
70 ToolkitTestApplication application;
71 tet_infoline("UtcDaliGaussianBlurViewUninitialized");
73 Toolkit::GaussianBlurView view;
77 // New() must be called to create a GaussianBlurView or it wont be valid.
78 Actor a = Actor::New();
80 DALI_TEST_CHECK(false);
82 catch(Dali::DaliException& e)
84 // Tests that a negative test of an assertion succeeds
85 DALI_TEST_PRINT_ASSERT(e);
86 DALI_TEST_CHECK(!view);
91 // Positive test case for a method
92 int UtcDaliGaussianBlurViewNew(void)
94 ToolkitTestApplication application;
95 tet_infoline("UtcDaliGaussianBlurViewNew");
97 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
98 DALI_TEST_CHECK(view);
100 Toolkit::GaussianBlurView view2 = Toolkit::GaussianBlurView::New(5, 1.5f, Pixel::RGB888, 0.5f, 0.5f, false);
101 DALI_TEST_CHECK(view2);
105 // Positive test case for a method
106 int UtcDaliGaussianBlurViewDownCast(void)
108 ToolkitTestApplication application;
109 tet_infoline("UtcDaliGaussianBlurViewDownCast");
111 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
112 BaseHandle handle(view);
114 Toolkit::GaussianBlurView gaussianBlurView = Toolkit::GaussianBlurView::DownCast(handle);
115 DALI_TEST_CHECK(view);
116 DALI_TEST_CHECK(gaussianBlurView);
117 DALI_TEST_CHECK(gaussianBlurView == view);
121 // Positive test case for a method
122 int UtcDaliGaussianBlurViewPropertyNames(void)
124 ToolkitTestApplication application;
125 tet_infoline("UtcDaliGaussianBlurViewPropertyNames");
127 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
128 DALI_TEST_CHECK(view);
130 // Check the names, this names are used in the shader code,
131 // if they change in the shader code, then it has to be updated here.
132 DALI_TEST_EQUALS(view.GetBlurStrengthPropertyIndex(), view.GetPropertyIndex("GaussianBlurStrengthPropertyName"), TEST_LOCATION);
136 // Positive test case for a method
137 int UtcDaliGaussianBlurViewAddRemove(void)
139 ToolkitTestApplication application;
140 tet_infoline("UtcDaliGaussianBlurViewAddRemove");
142 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
143 DALI_TEST_CHECK(view);
145 Actor actor = Actor::New();
146 DALI_TEST_CHECK(!actor.GetProperty<bool>(Actor::Property::CONNECTED_TO_SCENE));
148 view.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
149 view.SetProperty(Actor::Property::SIZE, application.GetScene().GetSize());
151 application.GetScene().Add(view);
153 DALI_TEST_CHECK(actor.GetProperty<bool>(Actor::Property::CONNECTED_TO_SCENE));
157 DALI_TEST_CHECK(!actor.GetProperty<bool>(Actor::Property::CONNECTED_TO_SCENE));
161 // Positive test case for a method
162 int UtcDaliGaussianBlurActivateDeactivate(void)
164 ToolkitTestApplication application;
165 tet_infoline("UtcDaliGaussianBlurActivateDeactivate");
167 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
168 DALI_TEST_CHECK(view);
170 RenderTaskList taskList = application.GetScene().GetRenderTaskList();
171 DALI_TEST_CHECK(1u == taskList.GetTaskCount());
173 view.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
174 view.SetProperty(Actor::Property::SIZE, application.GetScene().GetSize());
175 view.Add(Actor::New());
176 application.GetScene().Add(view);
179 RenderTaskList taskList2 = application.GetScene().GetRenderTaskList();
180 DALI_TEST_CHECK(1u != taskList2.GetTaskCount());
181 DALI_TEST_CHECK(2u == view.GetChildCount());
185 RenderTaskList taskList3 = application.GetScene().GetRenderTaskList();
186 DALI_TEST_CHECK(1u == taskList3.GetTaskCount());
187 DALI_TEST_CHECK(1u == view.GetChildCount());
192 // Positive test case for a method
193 int UtcDaliGaussianBlurActivateDeactivateRepeat(void)
195 ToolkitTestApplication application;
196 TestGlAbstraction& gl = application.GetGlAbstraction();
197 TraceCallStack& textureTrace = gl.GetTextureTrace();
198 textureTrace.Enable(true);
199 tet_infoline("UtcDaliGaussianBlurActivateDeactivateRepeat");
201 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
202 DALI_TEST_CHECK(view);
204 view.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
205 view.SetProperty(Actor::Property::SIZE, application.GetScene().GetSize());
206 view.Add(Actor::New());
207 application.GetScene().Add(view);
210 application.SendNotification();
211 application.Render(20);
213 DALI_TEST_EQUALS(gl.GetLastGenTextureId(), 3, TEST_LOCATION);
217 application.SendNotification();
218 application.Render(20);
220 DALI_TEST_EQUALS(gl.GetLastGenTextureId(), 3, TEST_LOCATION);
224 application.SendNotification();
225 application.Render(20);
227 DALI_TEST_EQUALS(gl.GetLastGenTextureId(), 6, TEST_LOCATION);
231 // Positive test case for a method
232 int UtcDaliGaussianBlurViewSetGetBackgroundColor(void)
234 ToolkitTestApplication application;
235 tet_infoline("UtcDaliGaussianBlurViewSetGetBackgroundColor");
237 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
238 DALI_TEST_CHECK(view);
240 view.SetBackgroundColor(Dali::Color::RED);
241 Vector4 color = view.GetBackgroundColor();
242 DALI_TEST_CHECK(color == Dali::Color::RED);
246 // Positive test case for a method
247 int UtcDaliGaussianBlurViewSetGetRenderTarget(void)
249 ToolkitTestApplication application;
250 tet_infoline("UtcDaliGaussianBlurViewSetGetRenderTarget");
252 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New(5, 1.5f, Pixel::RGB888, 0.5f, 0.5f, true);
253 DALI_TEST_CHECK(view);
255 view.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
256 view.SetProperty(Actor::Property::SIZE, application.GetScene().GetSize());
257 view.Add(Actor::New());
258 application.GetScene().Add(view);
261 PixelData pixels = Toolkit::SyncImageLoader::Load(TEST_IMAGE_FILE_NAME);
262 Texture texture = Texture::New(TextureType::TEXTURE_2D, pixels.GetPixelFormat(), pixels.GetWidth(), pixels.GetHeight());
263 texture.Upload(pixels, 0, 0, 0, 0, pixels.GetWidth(), pixels.GetHeight());
265 FrameBuffer renderTarget = FrameBuffer::New(480, 800, FrameBuffer::Attachment::NONE);
266 view.SetUserImageAndOutputRenderTarget(texture, renderTarget);
267 DALI_TEST_CHECK(view.GetBlurredRenderTarget() == renderTarget);
271 int UtcDaliGaussianBlurViewActivateOnce1(void)
273 ToolkitTestApplication application;
274 tet_infoline("UtcDaliGaussianBlurActivateOnce1");
276 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New(5, 1.5f, Pixel::RGB888, 0.5f, 0.5f, true);
277 DALI_TEST_CHECK(view);
279 RenderTaskList taskList = application.GetScene().GetRenderTaskList();
280 DALI_TEST_CHECK(1u == taskList.GetTaskCount());
282 view.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
283 view.SetProperty(Actor::Property::SIZE, application.GetScene().GetSize());
284 view.Add(Actor::New());
285 application.GetScene().Add(view);
288 RenderTaskList taskList2 = application.GetScene().GetRenderTaskList();
289 DALI_TEST_CHECK(1u != taskList2.GetTaskCount());
290 application.Render();
295 // Positive test case for a method
296 int UtcDaliGaussianBlurActivateOnce2(void)
298 ToolkitTestApplication application;
299 TestGlAbstraction& gl = application.GetGlAbstraction();
300 TraceCallStack& textureTrace = gl.GetTextureTrace();
301 textureTrace.Enable(true);
302 tet_infoline("UtcDaliGaussianBlurActivateOnce2");
304 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
305 DALI_TEST_CHECK(view);
307 view.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
308 view.SetProperty(Actor::Property::SIZE, application.GetScene().GetSize());
309 view.Add(Actor::New());
310 application.GetScene().Add(view);
313 application.SendNotification();
314 application.Render(20);
316 DALI_TEST_CHECK(gl.GetLastGenTextureId() == 3);
320 application.SendNotification();
321 application.Render(20);
323 DALI_TEST_CHECK(gl.GetLastGenTextureId() == 6);
328 int UtcDaliGaussianBlurViewFinishedSignalN(void)
330 ToolkitTestApplication application;
331 tet_infoline("UtcDaliGaussianBlurViewFinishedSignalN");
333 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New(5, 1.5f, Pixel::RGB888, 0.5f, 0.5f, true);
334 DALI_TEST_CHECK(view);
336 view.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
337 view.SetProperty(Actor::Property::SIZE, application.GetScene().GetSize());
338 view.Add(Actor::New());
339 application.GetScene().Add(view);
342 TestCallback callback(view);
343 DALI_TEST_CHECK(callback.mFinished == false);
348 application.SendNotification();
350 // FinishedSignal is only for ActivateOnce()
351 DALI_TEST_CHECK(callback.mFinished == false);