2 * Copyright (c) 2020 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.
20 #include <dali-toolkit-test-suite-utils.h>
21 #include <dali-toolkit/dali-toolkit.h>
22 #include <dali-toolkit/devel-api/controls/gaussian-blur-view/gaussian-blur-view.h>
25 using namespace Dali::Toolkit;
29 const char* TEST_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/gallery-small-1.jpg";
32 void utc_gaussian_blur_view_startup(void)
34 test_return_value = TET_UNDEF;
37 void utc_gaussian_blur_view_cleanup(void)
39 test_return_value = TET_PASS;
42 class TestCallback : public ConnectionTracker
45 TestCallback( Dali::Toolkit::GaussianBlurView& blurView )
46 : mBlurView( blurView )
53 mBlurView.FinishedSignal().Connect( this, &TestCallback::OnFinished );
56 void OnFinished( Dali::Toolkit::GaussianBlurView source )
62 Dali::Toolkit::GaussianBlurView& mBlurView;
65 // Negative test case for a method
66 int UtcDaliGaussianBlurViewUninitialized(void)
68 ToolkitTestApplication application;
69 tet_infoline("UtcDaliGaussianBlurViewUninitialized");
71 Toolkit::GaussianBlurView view;
75 // New() must be called to create a GaussianBlurView or it wont be valid.
76 Actor a = Actor::New();
78 DALI_TEST_CHECK( false );
80 catch (Dali::DaliException& e)
82 // Tests that a negative test of an assertion succeeds
83 DALI_TEST_PRINT_ASSERT( e );
84 DALI_TEST_CHECK(!view);
89 // Positive test case for a method
90 int UtcDaliGaussianBlurViewNew(void)
92 ToolkitTestApplication application;
93 tet_infoline("UtcDaliGaussianBlurViewNew");
95 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
96 DALI_TEST_CHECK( view );
98 Toolkit::GaussianBlurView view2 = Toolkit::GaussianBlurView::New(5, 1.5f, Pixel::RGB888, 0.5f, 0.5f, false);
99 DALI_TEST_CHECK( view2 );
103 // Positive test case for a method
104 int UtcDaliGaussianBlurViewDownCast(void)
106 ToolkitTestApplication application;
107 tet_infoline("UtcDaliGaussianBlurViewDownCast");
109 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
110 BaseHandle handle(view);
112 Toolkit::GaussianBlurView gaussianBlurView = Toolkit::GaussianBlurView::DownCast( handle );
113 DALI_TEST_CHECK( view );
114 DALI_TEST_CHECK( gaussianBlurView );
115 DALI_TEST_CHECK( gaussianBlurView == view );
120 // Positive test case for a method
121 int UtcDaliGaussianBlurViewPropertyNames(void)
123 ToolkitTestApplication application;
124 tet_infoline("UtcDaliGaussianBlurViewPropertyNames");
126 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
127 DALI_TEST_CHECK( view );
129 // Check the names, this names are used in the shader code,
130 // if they change in the shader code, then it has to be updated here.
131 DALI_TEST_EQUALS( view.GetBlurStrengthPropertyIndex(), view.GetPropertyIndex("GaussianBlurStrengthPropertyName"), TEST_LOCATION );
135 // Positive test case for a method
136 int UtcDaliGaussianBlurViewAddRemove(void)
138 ToolkitTestApplication application;
139 tet_infoline("UtcDaliGaussianBlurViewAddRemove");
141 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
142 DALI_TEST_CHECK( view );
144 Actor actor = Actor::New();
145 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_CHECK( gl.GetLastGenTextureId() == 3 );
217 application.SendNotification();
218 application.Render(20);
220 DALI_TEST_CHECK( gl.GetLastGenTextureId() == 3 );
224 application.SendNotification();
225 application.Render(20);
227 DALI_TEST_CHECK( gl.GetLastGenTextureId() == 6 );
232 // Positive test case for a method
233 int UtcDaliGaussianBlurViewSetGetBackgroundColor(void)
235 ToolkitTestApplication application;
236 tet_infoline("UtcDaliGaussianBlurViewSetGetBackgroundColor");
238 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
239 DALI_TEST_CHECK( view );
241 view.SetBackgroundColor(Dali::Color::RED);
242 Vector4 color = view.GetBackgroundColor();
243 DALI_TEST_CHECK( color == Dali::Color::RED );
247 // Positive test case for a method
248 int UtcDaliGaussianBlurViewSetGetRenderTarget(void)
250 ToolkitTestApplication application;
251 tet_infoline("UtcDaliGaussianBlurViewSetGetRenderTarget");
253 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New(5, 1.5f, Pixel::RGB888, 0.5f, 0.5f, true);
254 DALI_TEST_CHECK( view );
256 view.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
257 view.SetProperty( Actor::Property::SIZE, application.GetScene().GetSize());
258 view.Add(Actor::New());
259 application.GetScene().Add(view);
262 PixelData pixels = Toolkit::SyncImageLoader::Load( TEST_IMAGE_FILE_NAME );
263 Texture texture = Texture::New( TextureType::TEXTURE_2D, pixels.GetPixelFormat(), pixels.GetWidth(), pixels.GetHeight() );
264 texture.Upload( pixels, 0, 0, 0, 0, pixels.GetWidth(), pixels.GetHeight() );
266 FrameBuffer renderTarget = FrameBuffer::New( 480, 800, FrameBuffer::Attachment::NONE );
267 view.SetUserImageAndOutputRenderTarget(texture, renderTarget);
268 DALI_TEST_CHECK( view.GetBlurredRenderTarget() == renderTarget );
272 int UtcDaliGaussianBlurViewActivateOnce1(void)
274 ToolkitTestApplication application;
275 tet_infoline("UtcDaliGaussianBlurActivateOnce1");
277 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New(5, 1.5f, Pixel::RGB888, 0.5f, 0.5f, true);
278 DALI_TEST_CHECK( view );
280 RenderTaskList taskList = application.GetScene().GetRenderTaskList();
281 DALI_TEST_CHECK( 1u == taskList.GetTaskCount() );
283 view.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
284 view.SetProperty( Actor::Property::SIZE, application.GetScene().GetSize());
285 view.Add(Actor::New());
286 application.GetScene().Add(view);
289 RenderTaskList taskList2 = application.GetScene().GetRenderTaskList();
290 DALI_TEST_CHECK( 1u != taskList2.GetTaskCount() );
291 application.Render();
296 // Positive test case for a method
297 int UtcDaliGaussianBlurActivateOnce2(void)
299 ToolkitTestApplication application;
300 TestGlAbstraction& gl = application.GetGlAbstraction();
301 TraceCallStack& textureTrace = gl.GetTextureTrace();
302 textureTrace.Enable(true);
303 tet_infoline("UtcDaliGaussianBlurActivateOnce2");
305 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
306 DALI_TEST_CHECK( view );
308 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
309 view.SetProperty( Actor::Property::SIZE, application.GetScene().GetSize());
310 view.Add(Actor::New());
311 application.GetScene().Add(view);
314 application.SendNotification();
315 application.Render(20);
317 DALI_TEST_CHECK( gl.GetLastGenTextureId() == 3 );
321 application.SendNotification();
322 application.Render(20);
324 DALI_TEST_CHECK( gl.GetLastGenTextureId() == 6 );
329 int UtcDaliGaussianBlurViewFinishedSignalN(void)
331 ToolkitTestApplication application;
332 tet_infoline("UtcDaliGaussianBlurViewFinishedSignalN");
334 Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New(5, 1.5f, Pixel::RGB888, 0.5f, 0.5f, true);
335 DALI_TEST_CHECK( view );
337 view.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
338 view.SetProperty( Actor::Property::SIZE, application.GetScene().GetSize());
339 view.Add(Actor::New());
340 application.GetScene().Add(view);
343 TestCallback callback( view );
344 DALI_TEST_CHECK( callback.mFinished == false );
349 application.SendNotification();
351 // FinishedSignal is only for ActivateOnce()
352 DALI_TEST_CHECK( callback.mFinished == false );