2 * Copyright (c) 2015 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/bendy-effect.h>
25 #include <dali-toolkit/devel-api/shader-effects/blind-effect.h>
26 #include <dali-toolkit/devel-api/shader-effects/bouncing-effect.h>
27 #include <dali-toolkit/devel-api/shader-effects/carousel-effect.h>
28 #include <dali-toolkit/devel-api/shader-effects/displacement-effect.h>
29 #include <dali-toolkit/devel-api/shader-effects/dissolve-effect.h>
30 #include <dali-toolkit/devel-api/shader-effects/dissolve-local-effect.h>
31 #include <dali-toolkit/devel-api/shader-effects/distance-field-effect.h>
32 #include <dali-toolkit/devel-api/shader-effects/image-region-effect.h>
33 #include <dali-toolkit/devel-api/shader-effects/iris-effect.h>
34 #include <dali-toolkit/devel-api/shader-effects/mask-effect.h>
35 #include <dali-toolkit/devel-api/shader-effects/mirror-effect.h>
36 #include <dali-toolkit/devel-api/shader-effects/motion-blur-effect.h>
37 #include <dali-toolkit/devel-api/shader-effects/motion-stretch-effect.h>
38 #include <dali-toolkit/devel-api/shader-effects/nine-patch-mask-effect.h>
39 #include <dali-toolkit/devel-api/shader-effects/overlay-effect.h>
40 #include <dali-toolkit/devel-api/shader-effects/quadratic-bezier.h>
41 #include <dali-toolkit/devel-api/shader-effects/ripple-effect.h>
42 #include <dali-toolkit/devel-api/shader-effects/ripple2d-effect.h>
43 #include <dali-toolkit/devel-api/shader-effects/shear-effect.h>
44 #include <dali-toolkit/devel-api/shader-effects/soft-button-effect.h>
45 #include <dali-toolkit/devel-api/shader-effects/spot-effect.h>
46 #include <dali-toolkit/devel-api/shader-effects/square-dissolve-effect.h>
47 #include <dali-toolkit/devel-api/shader-effects/swirl-effect.h>
51 int UtcDaliCreateAlphaDiscardEffect(void)
53 ToolkitTestApplication application;
55 ShaderEffect effect = Toolkit::CreateAlphaDiscardEffect();
56 DALI_TEST_CHECK( effect );
61 int UtcDaliCreateBendyEffect(void)
63 ToolkitTestApplication application;
65 ShaderEffect effect = Toolkit::CreateBendyEffect();
66 DALI_TEST_CHECK( effect );
71 int UtcDaliCreateBlindEffect(void)
73 ToolkitTestApplication application;
75 ShaderEffect effect = Toolkit::CreateBlindEffect();
76 DALI_TEST_CHECK( effect );
81 int UtcDaliCreateBouncingEffect(void)
83 ToolkitTestApplication application;
85 Vector4 color(1.0f,1.0f,1.0f,1.0f);
87 ShaderEffect effect = Toolkit::CreateBouncingEffect(color);
88 DALI_TEST_CHECK( effect );
90 Property::Value value = effect.GetProperty( effect.GetPropertyIndex("uAssignedColor"));
91 DALI_TEST_EQUALS( value.Get<Vector4>(), color, TEST_LOCATION );
96 int UtcDaliCreateCarouselEffect(void)
98 ToolkitTestApplication application;
100 ShaderEffect effect = Toolkit::CreateCarouselEffect();
101 DALI_TEST_CHECK( effect );
106 int UtcDaliCreateDisplacementEffectDisplaced(void)
108 ToolkitTestApplication application;
110 ShaderEffect effect = Toolkit::CreateDisplacementEffect(Toolkit::DISPLACEMENT_EFFECT_DISPLACED);
111 DALI_TEST_CHECK( effect );
116 int UtcDaliCreateDisplacementEffectFixed(void)
118 ToolkitTestApplication application;
120 ShaderEffect effect = Toolkit::CreateDisplacementEffect(Toolkit::DISPLACEMENT_EFFECT_FIXED);
121 DALI_TEST_CHECK( effect );
126 int UtcDaliCreateDissolveEffect( bool highPrecision )
128 ToolkitTestApplication application;
130 Property::Map effect = Toolkit::CreateDissolveEffect( highPrecision );
131 DALI_TEST_CHECK( !effect.Empty() );
133 Property::Value* customShaderValue = effect.Find( "shader" );
134 DALI_TEST_CHECK( customShaderValue );
136 Property::Map customShader;
137 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
139 Property::Value* vertexShaderValue = customShader.Find( "vertex-shader" );
140 DALI_TEST_CHECK( vertexShaderValue );
142 std::string vertexShader;
143 DALI_TEST_CHECK( vertexShaderValue->Get( vertexShader ) );
144 DALI_TEST_CHECK( !vertexShader.empty() );
146 Property::Value* fragmentShaderValue = customShader.Find( "fragment-shader" );
147 DALI_TEST_CHECK( fragmentShaderValue );
149 std::string fragmentShader;
150 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
151 DALI_TEST_CHECK( !fragmentShader.empty() );
153 Property::Value* gridXValue = customShader.Find( "subdivide-grid-x" );
154 DALI_TEST_CHECK( gridXValue );
157 DALI_TEST_CHECK( gridXValue->Get( gridX ) );
158 DALI_TEST_CHECK( gridX > 1 );
160 Property::Value* gridYValue = customShader.Find( "subdivide-grid-y" );
161 DALI_TEST_CHECK( gridYValue );
164 DALI_TEST_CHECK( gridYValue->Get( gridY ) );
165 DALI_TEST_CHECK( gridY > 1 );
167 Property::Value* hintsValue = customShader.Find( "hints" );
168 DALI_TEST_CHECK( hintsValue );
171 DALI_TEST_CHECK( hintsValue->Get( hints ) );
172 DALI_TEST_CHECK( hints == "output-is-transparent" );
174 Actor actor = Actor::New();
175 Toolkit::DissolveEffectSetCentralLine( actor, Vector2::ONE, Vector2::ONE, 0.0f );
176 DALI_TEST_CHECK( actor.GetPropertyIndex( "uPercentage" ) != Property::INVALID_INDEX );
181 int UtcDaliCreateDissolveEffectHighPrecision(void)
183 return UtcDaliCreateDissolveEffect(true);
186 int UtcDaliCreateDissolveEffectMediumPrecision(void)
188 return UtcDaliCreateDissolveEffect(false);
191 int UtcDaliCreateDissolveLocalEffect(void)
193 ToolkitTestApplication application;
195 ShaderEffect effect = Toolkit::CreateDissolveLocalEffect(0);
196 DALI_TEST_CHECK( effect );
201 int UtcDaliCreateDissolveEffect(void)
203 ToolkitTestApplication application;
205 Property::Map effect = Toolkit::CreateDistanceFieldEffect();
206 DALI_TEST_CHECK( !effect.Empty() );
208 Property::Value* customShaderValue = effect.Find( "shader" );
209 DALI_TEST_CHECK( customShaderValue );
211 Property::Map customShader;
212 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
214 Property::Value* vertexShaderValue = customShader.Find( "vertex-shader" );
215 DALI_TEST_CHECK( !vertexShaderValue );
217 Property::Value* fragmentShaderValue = customShader.Find( "fragment-shader" );
218 DALI_TEST_CHECK( fragmentShaderValue );
220 std::string fragmentShader;
221 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
222 DALI_TEST_CHECK( !fragmentShader.empty() );
224 Property::Value* gridXValue = customShader.Find( "subdivide-grid-x" );
225 DALI_TEST_CHECK( !gridXValue );
227 Property::Value* hintsValue = customShader.Find( "hints" );
228 DALI_TEST_CHECK( hintsValue );
231 DALI_TEST_CHECK( hintsValue->Get( hints ) );
232 DALI_TEST_CHECK( hints == "output-is-transparent" );
237 int UtcDaliCreateImageRegionEffect(void)
239 ToolkitTestApplication application;
241 ShaderEffect effect = Toolkit::CreateImageRegionEffect();
242 DALI_TEST_CHECK( effect );
247 int UtcDaliCreateIrisEffect(void)
249 ToolkitTestApplication application;
251 ShaderEffect effect = Toolkit::CreateIrisEffect();
252 DALI_TEST_CHECK( effect );
257 int UtcDaliCreateMaskEffect(void)
259 ToolkitTestApplication application;
261 BufferImage image = CreateBufferImage();
262 ShaderEffect effect = Toolkit::CreateMaskEffect(image);
263 DALI_TEST_CHECK( effect );
268 int UtcDaliCreateMirrorEffect(void)
270 ToolkitTestApplication application;
272 BufferImage image = CreateBufferImage();
273 ShaderEffect effect = Toolkit::CreateMirrorEffect();
274 DALI_TEST_CHECK( effect );
279 int UtcDaliCreateMotionBlurEffect(void)
281 ToolkitTestApplication application;
283 Property::Map effect = Toolkit::CreateMotionBlurEffect();
284 DALI_TEST_CHECK( !effect.Empty() );
286 Property::Value* customShaderValue = effect.Find( "shader" );
287 DALI_TEST_CHECK( customShaderValue );
289 Property::Map customShader;
290 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
292 Property::Value* vertexShaderValue = customShader.Find( "vertex-shader" );
293 DALI_TEST_CHECK( vertexShaderValue );
295 std::string vertexShader;
296 DALI_TEST_CHECK( vertexShaderValue->Get( vertexShader ) );
297 DALI_TEST_CHECK( !vertexShader.empty() );
299 Property::Value* fragmentShaderValue = customShader.Find( "fragment-shader" );
300 DALI_TEST_CHECK( fragmentShaderValue );
302 std::string fragmentShader;
303 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
304 DALI_TEST_CHECK( !fragmentShader.empty() );
306 Property::Value* gridXValue = customShader.Find( "subdivide-grid-x" );
307 DALI_TEST_CHECK( gridXValue );
310 DALI_TEST_CHECK( gridXValue->Get( gridX ) );
311 DALI_TEST_CHECK( gridX > 1 );
313 Property::Value* gridYValue = customShader.Find( "subdivide-grid-y" );
314 DALI_TEST_CHECK( gridYValue );
317 DALI_TEST_CHECK( gridYValue->Get( gridY ) );
318 DALI_TEST_CHECK( gridY > 1 );
320 Property::Value* hintsValue = customShader.Find( "hints" );
321 DALI_TEST_CHECK( hintsValue );
324 DALI_TEST_CHECK( hintsValue->Get( hints ) );
325 DALI_TEST_CHECK( hints == "output-is-transparent" );
327 unsigned int sampleCount( 4 );
328 Actor actor = Actor::New();
329 Toolkit::SetMotionBlurProperties( actor, sampleCount );
330 DALI_TEST_CHECK( actor.GetPropertyIndex( "uBlurTexCoordScale" ) != Property::INVALID_INDEX );
331 DALI_TEST_CHECK( actor.GetPropertyIndex( "uGeometryStretchFactor" ) != Property::INVALID_INDEX );
332 DALI_TEST_CHECK( actor.GetPropertyIndex( "uSpeedScalingFactor" ) != Property::INVALID_INDEX );
333 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeStart" ) != Property::INVALID_INDEX );
334 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeEnd" ) != Property::INVALID_INDEX );
335 DALI_TEST_CHECK( actor.GetPropertyIndex( "uAlphaScale" ) != Property::INVALID_INDEX );
336 DALI_TEST_CHECK( actor.GetPropertyIndex( "uNumSamples" ) != Property::INVALID_INDEX );
337 DALI_TEST_CHECK( actor.GetPropertyIndex( "uModelLastFrame" ) != Property::INVALID_INDEX );
342 int UtcDaliCreateMotionStretchEffect(void)
344 ToolkitTestApplication application;
346 Property::Map effect = Toolkit::CreateMotionStretchEffect();
347 DALI_TEST_CHECK( !effect.Empty() );
349 Property::Value* customShaderValue = effect.Find( "shader" );
350 DALI_TEST_CHECK( customShaderValue );
352 Property::Map customShader;
353 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
355 Property::Value* vertexShaderValue = customShader.Find( "vertex-shader" );
356 DALI_TEST_CHECK( vertexShaderValue );
358 std::string vertexShader;
359 DALI_TEST_CHECK( vertexShaderValue->Get( vertexShader ) );
360 DALI_TEST_CHECK( !vertexShader.empty() );
362 Property::Value* fragmentShaderValue = customShader.Find( "fragment-shader" );
363 DALI_TEST_CHECK( fragmentShaderValue );
365 std::string fragmentShader;
366 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
367 DALI_TEST_CHECK( !fragmentShader.empty() );
369 Property::Value* gridXValue = customShader.Find( "subdivide-grid-x" );
370 DALI_TEST_CHECK( gridXValue );
373 DALI_TEST_CHECK( gridXValue->Get( gridX ) );
374 DALI_TEST_CHECK( gridX > 1 );
376 Property::Value* gridYValue = customShader.Find( "subdivide-grid-y" );
377 DALI_TEST_CHECK( gridYValue );
380 DALI_TEST_CHECK( gridYValue->Get( gridY ) );
381 DALI_TEST_CHECK( gridY > 1 );
383 Property::Value* hintsValue = customShader.Find( "hints" );
384 DALI_TEST_CHECK( hintsValue );
387 DALI_TEST_CHECK( hintsValue->Get( hints ) );
388 DALI_TEST_CHECK( hints == "output-is-transparent" );
390 Actor actor = Actor::New();
391 Toolkit::SetMotionStretchProperties( actor );
392 DALI_TEST_CHECK( actor.GetPropertyIndex( "uGeometryStretchFactor" ) != Property::INVALID_INDEX );
393 DALI_TEST_CHECK( actor.GetPropertyIndex( "uSpeedScalingFactor" ) != Property::INVALID_INDEX );
394 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeStart" ) != Property::INVALID_INDEX );
395 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeEnd" ) != Property::INVALID_INDEX );
396 DALI_TEST_CHECK( actor.GetPropertyIndex( "uAlphaScale" ) != Property::INVALID_INDEX );
397 DALI_TEST_CHECK( actor.GetPropertyIndex( "uModelLastFrame" ) != Property::INVALID_INDEX );
402 int UtcDaliCreateOverlayEffect(void)
404 ToolkitTestApplication application;
406 BufferImage image = CreateBufferImage();
407 ShaderEffect effect = Toolkit::CreateOverlayEffect(image);
408 DALI_TEST_CHECK( effect );
413 int UtcDaliCreateQuadraticBezier(void)
415 ToolkitTestApplication application;
417 ShaderEffect effect = Toolkit::CreateQuadraticBezier(3,false);
418 DALI_TEST_CHECK( effect );
423 int UtcDaliCreateQuadraticBezierFilled(void)
425 ToolkitTestApplication application;
427 ShaderEffect effect = Toolkit::CreateQuadraticBezier(3,true);
428 DALI_TEST_CHECK( effect );
433 int UtcDaliCreateRipple2DEffect(void)
435 ToolkitTestApplication application;
437 ShaderEffect effect = Toolkit::CreateRipple2DEffect();
438 DALI_TEST_CHECK( effect );
443 int UtcDaliCreateRippleEffect(void)
445 ToolkitTestApplication application;
447 ShaderEffect effect = Toolkit::CreateRippleEffect();
448 DALI_TEST_CHECK( effect );
453 int UtcDaliCreateShearEffect(void)
455 ToolkitTestApplication application;
457 ShaderEffect effect = Toolkit::CreateShearEffect();
458 DALI_TEST_CHECK( effect );
463 int UtcDaliSoftButtonEffectElliptical(void)
465 ToolkitTestApplication application;
467 ShaderEffect effect = Toolkit::CreateSoftButtonEffect(Toolkit::SOFT_BUTTON_ELLIPTICAL);
468 DALI_TEST_CHECK( effect );
473 int UtcDaliSoftButtonEffectRectangular(void)
475 ToolkitTestApplication application;
477 ShaderEffect effect = Toolkit::CreateSoftButtonEffect(Toolkit::SOFT_BUTTON_RECTANGULAR);
478 DALI_TEST_CHECK( effect );
483 int UtcDaliSoftButtonEffectFixed(void)
485 ToolkitTestApplication application;
487 ShaderEffect effect = Toolkit::CreateSoftButtonEffect(Toolkit::SOFT_BUTTON_FIXED);
488 DALI_TEST_CHECK( effect );
493 int UtcDaliCreateSpotEffect(void)
495 ToolkitTestApplication application;
497 ShaderEffect effect = Toolkit::CreateSpotEffect();
498 DALI_TEST_CHECK( effect );
503 int UtcDaliCreateSquareDissolveEffect(void)
505 ToolkitTestApplication application;
507 ShaderEffect effect = Toolkit::CreateSquareDissolveEffect();
508 DALI_TEST_CHECK( effect );
513 int UtcDaliSwirlEffect(void)
515 ToolkitTestApplication application;
517 ShaderEffect effect = Toolkit::CreateSwirlEffect(false);
518 DALI_TEST_CHECK( effect );
523 int UtcDaliSwirlEffectWrap(void)
525 ToolkitTestApplication application;
527 ShaderEffect effect = Toolkit::CreateSwirlEffect(true);
528 DALI_TEST_CHECK( effect );