Conversion to Apache 2.0 license
[platform/core/uifw/dali-toolkit.git] / automated-tests / TET / dali-test-suite / shader-effects / utc-Dali-GaussianBlurView.cpp
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 #include <iostream>
19
20 #include <stdlib.h>
21 #include <tet_api.h>
22
23 #include <dali/public-api/dali-core.h>
24 #include <dali-toolkit/dali-toolkit.h>
25
26 #include <dali-toolkit-test-suite-utils.h>
27
28 using namespace Dali;
29 using namespace Dali::Toolkit;
30
31 namespace
32 {
33 const char* TEST_IMAGE_FILE_NAME = DALI_IMAGE_DIR "gallery_image_01.jpg";
34 } // namespace
35
36 static void Startup();
37 static void Cleanup();
38
39 extern "C" {
40   void (*tet_startup)() = Startup;
41   void (*tet_cleanup)() = Cleanup;
42 }
43
44 static void UtcDaliGaussianBlurViewUninitialized();
45 static void UtcDaliGaussianBlurViewNew();
46 static void UtcDaliGaussianBlurViewDownCast();
47 static void UtcDaliGaussianBlurViewPropertyNames();
48 static void UtcDaliGaussianBlurViewAddRemove();
49 static void UtcDaliGaussianBlurActivateDeactivate();
50 static void UtcDaliGaussianBlurViewSetGetBackgroundColor();
51 static void UtcDaliGaussianBlurViewSetGetRenderTarget();
52
53 enum {
54   POSITIVE_TC_IDX = 0x01,
55   NEGATIVE_TC_IDX,
56 };
57
58 // Add test functionality for all APIs in the class (Positive and Negative)
59 extern "C" {
60   struct tet_testlist tet_testlist[] = {
61       { UtcDaliGaussianBlurViewUninitialized, NEGATIVE_TC_IDX },
62       { UtcDaliGaussianBlurViewNew, POSITIVE_TC_IDX },
63       { UtcDaliGaussianBlurViewDownCast, POSITIVE_TC_IDX },
64       { UtcDaliGaussianBlurViewPropertyNames, POSITIVE_TC_IDX },
65       { UtcDaliGaussianBlurViewAddRemove, POSITIVE_TC_IDX },
66       { UtcDaliGaussianBlurActivateDeactivate, POSITIVE_TC_IDX },
67       { UtcDaliGaussianBlurViewSetGetBackgroundColor, POSITIVE_TC_IDX },
68       { UtcDaliGaussianBlurViewSetGetRenderTarget, POSITIVE_TC_IDX },
69     { NULL, 0 }
70   };
71 }
72
73 // Called only once before first test is run.
74 static void Startup()
75 {
76 }
77
78 // Called only once after last test is run
79 static void Cleanup()
80 {
81 }
82
83 // Negative test case for a method
84 static void UtcDaliGaussianBlurViewUninitialized()
85 {
86   ToolkitTestApplication application;
87   tet_infoline("UtcDaliGaussianBlurViewUninitialized");
88
89   Toolkit::GaussianBlurView view;
90
91   try
92   {
93     // New() must be called to create a GaussianBlurView or it wont be valid.
94     Actor a = Actor::New();
95     view.Add( a );
96     DALI_TEST_CHECK( false );
97   }
98   catch (Dali::DaliException& e)
99   {
100     // Tests that a negative test of an assertion succeeds
101     tet_printf("Assertion %s failed at %s\n", e.mCondition.c_str(), e.mLocation.c_str());
102     DALI_TEST_CHECK(!view);
103   }
104 }
105
106 // Positive test case for a method
107 static void UtcDaliGaussianBlurViewNew()
108 {
109   ToolkitTestApplication application;
110   tet_infoline("UtcDaliGaussianBlurViewNew");
111
112   Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
113   DALI_TEST_CHECK( view );
114
115   Toolkit::GaussianBlurView view2 = Toolkit::GaussianBlurView::New(5, 1.5f, Pixel::RGB888, 0.5f, 0.5f, false);
116   DALI_TEST_CHECK( view2 );
117 }
118
119 // Positive test case for a method
120 static void UtcDaliGaussianBlurViewDownCast()
121 {
122   ToolkitTestApplication application;
123   tet_infoline("UtcDaliGaussianBlurViewDownCast");
124
125   Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
126   BaseHandle handle(view);
127
128   Toolkit::GaussianBlurView gaussianBlurView = Toolkit::GaussianBlurView::DownCast( handle );
129   DALI_TEST_CHECK( view );
130   DALI_TEST_CHECK( gaussianBlurView );
131   DALI_TEST_CHECK( gaussianBlurView == view );
132 }
133
134
135 // Positive test case for a method
136 static void UtcDaliGaussianBlurViewPropertyNames()
137 {
138   ToolkitTestApplication application;
139   tet_infoline("UtcDaliGaussianBlurViewPropertyNames");
140
141   Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
142   DALI_TEST_CHECK( view );
143
144   // Check the names, this names are used in the shader code,
145   // if they change in the shader code, then it has to be updated here.
146   DALI_TEST_EQUALS( view.GetBlurStrengthPropertyIndex(), view.GetPropertyIndex("GaussianBlurStrengthPropertyName"), TEST_LOCATION );
147 }
148
149 // Positive test case for a method
150 static void UtcDaliGaussianBlurViewAddRemove()
151 {
152   ToolkitTestApplication application;
153   tet_infoline("UtcDaliGaussianBlurViewAddRemove");
154
155   Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
156   DALI_TEST_CHECK( view );
157
158   Actor actor = Actor::New();
159   DALI_TEST_CHECK( !actor.OnStage() );
160
161
162   view.SetParentOrigin(ParentOrigin::CENTER);
163   view.SetSize(Stage::GetCurrent().GetSize());
164   view.Add(actor);
165   Stage::GetCurrent().Add(view);
166
167   DALI_TEST_CHECK( actor.OnStage() );
168
169   view.Remove(actor);
170
171   DALI_TEST_CHECK( !actor.OnStage() );
172 }
173
174 // Positive test case for a method
175 static void UtcDaliGaussianBlurActivateDeactivate()
176 {
177   ToolkitTestApplication application;
178   tet_infoline("UtcDaliGaussianBlurActivateDeactivate");
179
180   Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
181   DALI_TEST_CHECK( view );
182
183   RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
184   DALI_TEST_CHECK( 1u == taskList.GetTaskCount() );
185
186   view.SetParentOrigin(ParentOrigin::CENTER);
187   view.SetSize(Stage::GetCurrent().GetSize());
188   view.Add(Actor::New());
189   Stage::GetCurrent().Add(view);
190   view.Activate();
191
192   RenderTaskList taskList2 = Stage::GetCurrent().GetRenderTaskList();
193   DALI_TEST_CHECK( 1u != taskList2.GetTaskCount() );
194
195   view.Deactivate();
196
197   RenderTaskList taskList3 = Stage::GetCurrent().GetRenderTaskList();
198   DALI_TEST_CHECK( 1u == taskList3.GetTaskCount() );
199 }
200
201 // Positive test case for a method
202 static void UtcDaliGaussianBlurViewSetGetBackgroundColor()
203 {
204   ToolkitTestApplication application;
205   tet_infoline("UtcDaliGaussianBlurViewSetGetBackgroundColor");
206
207   Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New();
208   DALI_TEST_CHECK( view );
209
210   view.SetBackgroundColor(Dali::Color::RED);
211   Vector4 color = view.GetBackgroundColor();
212   DALI_TEST_CHECK( color == Dali::Color::RED );
213 }
214
215 // Positive test case for a method
216 static void UtcDaliGaussianBlurViewSetGetRenderTarget()
217 {
218   ToolkitTestApplication application;
219   tet_infoline("UtcDaliGaussianBlurViewSetGetRenderTarget");
220
221   Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New(5, 1.5f, Pixel::RGB888, 0.5f, 0.5f, true);
222   DALI_TEST_CHECK( view );
223
224   view.SetParentOrigin(ParentOrigin::CENTER);
225   view.SetSize(Stage::GetCurrent().GetSize());
226   view.Add(Actor::New());
227   Stage::GetCurrent().Add(view);
228   view.Activate();
229
230   FrameBufferImage renderTarget = FrameBufferImage::New( 480.0f, 800.0f, Pixel::RGB888 );
231   view.SetUserImageAndOutputRenderTarget(Image::New(TEST_IMAGE_FILE_NAME), renderTarget);
232   DALI_TEST_CHECK( view.GetBlurredRenderTarget() == renderTarget );
233 }