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