2 * Copyright (c) 2016 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>
23 #include <dali-toolkit/devel-api/shader-effects/alpha-discard-effect.h>
24 #include <dali-toolkit/devel-api/shader-effects/dissolve-effect.h>
25 #include <dali-toolkit/devel-api/shader-effects/distance-field-effect.h>
26 #include <dali-toolkit/devel-api/shader-effects/image-region-effect.h>
27 #include <dali-toolkit/devel-api/shader-effects/motion-blur-effect.h>
28 #include <dali-toolkit/devel-api/shader-effects/motion-stretch-effect.h>
31 using namespace Dali::Toolkit;
33 int UtcDaliCreateAlphaDiscardEffect(void)
35 ToolkitTestApplication application;
37 Property::Map effect = Toolkit::CreateAlphaDiscardEffect();
38 DALI_TEST_CHECK( !effect.Empty() );
40 Property::Value* customShaderValue = effect.Find( Visual::Property::SHADER );
41 DALI_TEST_CHECK( customShaderValue );
43 Property::Map customShader;
44 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
46 Property::Value* vertexShaderValue = customShader.Find( Visual::Shader::Property::VERTEX_SHADER );
47 DALI_TEST_CHECK( !vertexShaderValue );
49 Property::Value* fragmentShaderValue = customShader.Find( Visual::Shader::Property::FRAGMENT_SHADER );
50 DALI_TEST_CHECK( fragmentShaderValue );
52 std::string fragmentShader;
53 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
54 DALI_TEST_CHECK( !fragmentShader.empty() );
56 Property::Value* gridXValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_X );
57 DALI_TEST_CHECK( !gridXValue );
59 Property::Value* gridYValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_Y );
60 DALI_TEST_CHECK( !gridYValue );
62 Property::Value* hintsValue = customShader.Find( Visual::Shader::Property::HINTS );
63 DALI_TEST_CHECK( !hintsValue );
68 int UtcDaliCreateDissolveEffect( bool highPrecision )
70 ToolkitTestApplication application;
72 Property::Map effect = Toolkit::CreateDissolveEffect( highPrecision );
73 DALI_TEST_CHECK( !effect.Empty() );
75 Property::Value* customShaderValue = effect.Find( Visual::Property::SHADER );
76 DALI_TEST_CHECK( customShaderValue );
78 Property::Map customShader;
79 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
81 Property::Value* vertexShaderValue = customShader.Find( Visual::Shader::Property::VERTEX_SHADER );
82 DALI_TEST_CHECK( vertexShaderValue );
84 std::string vertexShader;
85 DALI_TEST_CHECK( vertexShaderValue->Get( vertexShader ) );
86 DALI_TEST_CHECK( !vertexShader.empty() );
88 Property::Value* fragmentShaderValue = customShader.Find( Visual::Shader::Property::FRAGMENT_SHADER );
89 DALI_TEST_CHECK( fragmentShaderValue );
91 std::string fragmentShader;
92 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
93 DALI_TEST_CHECK( !fragmentShader.empty() );
95 Property::Value* gridXValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_X );
96 DALI_TEST_CHECK( gridXValue );
99 DALI_TEST_CHECK( gridXValue->Get( gridX ) );
100 DALI_TEST_CHECK( gridX > 1 );
102 Property::Value* gridYValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_Y );
103 DALI_TEST_CHECK( gridYValue );
106 DALI_TEST_CHECK( gridYValue->Get( gridY ) );
107 DALI_TEST_CHECK( gridY > 1 );
109 Property::Value* hintsValue = customShader.Find( Visual::Shader::Property::HINTS );
110 DALI_TEST_CHECK( hintsValue );
113 DALI_TEST_CHECK( hintsValue->Get( hints ) );
114 DALI_TEST_CHECK( hints == Shader::Hint::OUTPUT_IS_TRANSPARENT );
116 Actor actor = Actor::New();
117 Toolkit::DissolveEffectSetCentralLine( actor, Vector2::ONE, Vector2::ONE, 0.0f );
118 DALI_TEST_CHECK( actor.GetPropertyIndex( "uPercentage" ) != Property::INVALID_INDEX );
123 int UtcDaliCreateDissolveEffectHighPrecision(void)
125 return UtcDaliCreateDissolveEffect(true);
128 int UtcDaliCreateDissolveEffectMediumPrecision(void)
130 return UtcDaliCreateDissolveEffect(false);
133 int UtcDaliCreateDissolveEffect(void)
135 ToolkitTestApplication application;
137 Property::Map effect = Toolkit::CreateDistanceFieldEffect();
138 DALI_TEST_CHECK( !effect.Empty() );
140 Property::Value* customShaderValue = effect.Find( Visual::Property::SHADER );
141 DALI_TEST_CHECK( customShaderValue );
143 Property::Map customShader;
144 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
146 Property::Value* vertexShaderValue = customShader.Find( Visual::Shader::Property::VERTEX_SHADER );
147 DALI_TEST_CHECK( !vertexShaderValue );
149 Property::Value* fragmentShaderValue = customShader.Find( Visual::Shader::Property::FRAGMENT_SHADER );
150 DALI_TEST_CHECK( fragmentShaderValue );
152 std::string fragmentShader;
153 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
154 DALI_TEST_CHECK( !fragmentShader.empty() );
156 Property::Value* gridXValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_X );
157 DALI_TEST_CHECK( !gridXValue );
159 Property::Value* hintsValue = customShader.Find( Visual::Shader::Property::HINTS );
160 DALI_TEST_CHECK( hintsValue );
163 DALI_TEST_CHECK( hintsValue->Get( hints ) );
164 DALI_TEST_CHECK( hints == Shader::Hint::OUTPUT_IS_TRANSPARENT );
169 int UtcDaliCreateImageRegionEffect(void)
171 ToolkitTestApplication application;
173 Property::Map effect = Toolkit::CreateImageRegionEffect();
174 DALI_TEST_CHECK( !effect.Empty() );
176 Property::Value* customShaderValue = effect.Find( Visual::Property::SHADER );
177 DALI_TEST_CHECK( customShaderValue );
179 Property::Map customShader;
180 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
182 Property::Value* vertexShaderValue = customShader.Find( Visual::Shader::Property::VERTEX_SHADER );
183 DALI_TEST_CHECK( vertexShaderValue );
185 std::string vertexShader;
186 DALI_TEST_CHECK( vertexShaderValue->Get( vertexShader ) );
187 DALI_TEST_CHECK( !vertexShader.empty() );
189 Property::Value* fragmentShaderValue = customShader.Find( Visual::Shader::Property::FRAGMENT_SHADER );
190 DALI_TEST_CHECK( !fragmentShaderValue );
192 Property::Value* gridXValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_X );
193 DALI_TEST_CHECK( !gridXValue );
195 Property::Value* gridYValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_Y );
196 DALI_TEST_CHECK( !gridYValue );
198 Property::Value* hintsValue = customShader.Find( Visual::Shader::Property::HINTS );
199 DALI_TEST_CHECK( !hintsValue );
204 int UtcDaliCreateMotionBlurEffect(void)
206 ToolkitTestApplication application;
208 Property::Map effect = Toolkit::CreateMotionBlurEffect();
209 DALI_TEST_CHECK( !effect.Empty() );
211 Property::Value* customShaderValue = effect.Find( Visual::Property::SHADER );
212 DALI_TEST_CHECK( customShaderValue );
214 Property::Map customShader;
215 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
217 Property::Value* vertexShaderValue = customShader.Find( Visual::Shader::Property::VERTEX_SHADER );
218 DALI_TEST_CHECK( vertexShaderValue );
220 std::string vertexShader;
221 DALI_TEST_CHECK( vertexShaderValue->Get( vertexShader ) );
222 DALI_TEST_CHECK( !vertexShader.empty() );
224 Property::Value* fragmentShaderValue = customShader.Find( Visual::Shader::Property::FRAGMENT_SHADER );
225 DALI_TEST_CHECK( fragmentShaderValue );
227 std::string fragmentShader;
228 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
229 DALI_TEST_CHECK( !fragmentShader.empty() );
231 Property::Value* gridXValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_X );
232 DALI_TEST_CHECK( gridXValue );
235 DALI_TEST_CHECK( gridXValue->Get( gridX ) );
236 DALI_TEST_CHECK( gridX > 1 );
238 Property::Value* gridYValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_Y );
239 DALI_TEST_CHECK( gridYValue );
242 DALI_TEST_CHECK( gridYValue->Get( gridY ) );
243 DALI_TEST_CHECK( gridY > 1 );
245 Property::Value* hintsValue = customShader.Find( Visual::Shader::Property::HINTS );
246 DALI_TEST_CHECK( hintsValue );
249 DALI_TEST_CHECK( hintsValue->Get( hints ) );
250 DALI_TEST_CHECK( hints == Shader::Hint::OUTPUT_IS_TRANSPARENT );
252 unsigned int sampleCount( 4 );
253 Actor actor = Actor::New();
254 Toolkit::SetMotionBlurProperties( actor, sampleCount );
255 DALI_TEST_CHECK( actor.GetPropertyIndex( "uBlurTexCoordScale" ) != Property::INVALID_INDEX );
256 DALI_TEST_CHECK( actor.GetPropertyIndex( "uGeometryStretchFactor" ) != Property::INVALID_INDEX );
257 DALI_TEST_CHECK( actor.GetPropertyIndex( "uSpeedScalingFactor" ) != Property::INVALID_INDEX );
258 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeStart" ) != Property::INVALID_INDEX );
259 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeEnd" ) != Property::INVALID_INDEX );
260 DALI_TEST_CHECK( actor.GetPropertyIndex( "uAlphaScale" ) != Property::INVALID_INDEX );
261 DALI_TEST_CHECK( actor.GetPropertyIndex( "uNumSamples" ) != Property::INVALID_INDEX );
262 DALI_TEST_CHECK( actor.GetPropertyIndex( "uModelLastFrame" ) != Property::INVALID_INDEX );
267 int UtcDaliCreateMotionStretchEffect(void)
269 ToolkitTestApplication application;
271 Property::Map effect = Toolkit::CreateMotionStretchEffect();
272 DALI_TEST_CHECK( !effect.Empty() );
274 Property::Value* customShaderValue = effect.Find( Visual::Property::SHADER );
275 DALI_TEST_CHECK( customShaderValue );
277 Property::Map customShader;
278 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
280 Property::Value* vertexShaderValue = customShader.Find( Visual::Shader::Property::VERTEX_SHADER );
281 DALI_TEST_CHECK( vertexShaderValue );
283 std::string vertexShader;
284 DALI_TEST_CHECK( vertexShaderValue->Get( vertexShader ) );
285 DALI_TEST_CHECK( !vertexShader.empty() );
287 Property::Value* fragmentShaderValue = customShader.Find( Visual::Shader::Property::FRAGMENT_SHADER );
288 DALI_TEST_CHECK( fragmentShaderValue );
290 std::string fragmentShader;
291 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
292 DALI_TEST_CHECK( !fragmentShader.empty() );
294 Property::Value* gridXValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_X );
295 DALI_TEST_CHECK( gridXValue );
298 DALI_TEST_CHECK( gridXValue->Get( gridX ) );
299 DALI_TEST_CHECK( gridX > 1 );
301 Property::Value* gridYValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_Y );
302 DALI_TEST_CHECK( gridYValue );
305 DALI_TEST_CHECK( gridYValue->Get( gridY ) );
306 DALI_TEST_CHECK( gridY > 1 );
308 Property::Value* hintsValue = customShader.Find( Visual::Shader::Property::HINTS );
309 DALI_TEST_CHECK( hintsValue );
312 DALI_TEST_CHECK( hintsValue->Get( hints ) );
313 DALI_TEST_CHECK( hints == Shader::Hint::OUTPUT_IS_TRANSPARENT );
315 Actor actor = Actor::New();
316 Toolkit::SetMotionStretchProperties( actor );
317 DALI_TEST_CHECK( actor.GetPropertyIndex( "uGeometryStretchFactor" ) != Property::INVALID_INDEX );
318 DALI_TEST_CHECK( actor.GetPropertyIndex( "uSpeedScalingFactor" ) != Property::INVALID_INDEX );
319 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeStart" ) != Property::INVALID_INDEX );
320 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeEnd" ) != Property::INVALID_INDEX );
321 DALI_TEST_CHECK( actor.GetPropertyIndex( "uAlphaScale" ) != Property::INVALID_INDEX );
322 DALI_TEST_CHECK( actor.GetPropertyIndex( "uModelLastFrame" ) != Property::INVALID_INDEX );