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/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/overlay-effect.h>
39 #include <dali-toolkit/devel-api/shader-effects/quadratic-bezier.h>
40 #include <dali-toolkit/devel-api/shader-effects/ripple-effect.h>
41 #include <dali-toolkit/devel-api/shader-effects/ripple2d-effect.h>
42 #include <dali-toolkit/devel-api/shader-effects/shear-effect.h>
43 #include <dali-toolkit/devel-api/shader-effects/soft-button-effect.h>
44 #include <dali-toolkit/devel-api/shader-effects/spot-effect.h>
45 #include <dali-toolkit/devel-api/shader-effects/square-dissolve-effect.h>
46 #include <dali-toolkit/devel-api/shader-effects/swirl-effect.h>
49 using namespace Dali::Toolkit;
51 int UtcDaliCreateAlphaDiscardEffect(void)
53 ToolkitTestApplication application;
55 Property::Map effect = Toolkit::CreateAlphaDiscardEffect();
56 DALI_TEST_CHECK( !effect.Empty() );
58 Property::Value* customShaderValue = effect.Find( Visual::Property::SHADER );
59 DALI_TEST_CHECK( customShaderValue );
61 Property::Map customShader;
62 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
64 Property::Value* vertexShaderValue = customShader.Find( Visual::Shader::Property::VERTEX_SHADER );
65 DALI_TEST_CHECK( !vertexShaderValue );
67 Property::Value* fragmentShaderValue = customShader.Find( Visual::Shader::Property::FRAGMENT_SHADER );
68 DALI_TEST_CHECK( fragmentShaderValue );
70 std::string fragmentShader;
71 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
72 DALI_TEST_CHECK( !fragmentShader.empty() );
74 Property::Value* gridXValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_X );
75 DALI_TEST_CHECK( !gridXValue );
77 Property::Value* gridYValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_Y );
78 DALI_TEST_CHECK( !gridYValue );
80 Property::Value* hintsValue = customShader.Find( Visual::Shader::Property::HINTS );
81 DALI_TEST_CHECK( !hintsValue );
86 int UtcDaliCreateBendyEffect(void)
88 ToolkitTestApplication application;
90 ShaderEffect effect = Toolkit::CreateBendyEffect();
91 DALI_TEST_CHECK( effect );
96 int UtcDaliCreateBlindEffect(void)
98 ToolkitTestApplication application;
100 ShaderEffect effect = Toolkit::CreateBlindEffect();
101 DALI_TEST_CHECK( effect );
106 int UtcDaliCreateBouncingEffect(void)
108 ToolkitTestApplication application;
110 Vector4 color(1.0f,1.0f,1.0f,1.0f);
112 ShaderEffect effect = Toolkit::CreateBouncingEffect(color);
113 DALI_TEST_CHECK( effect );
115 Property::Value value = effect.GetProperty( effect.GetPropertyIndex("uAssignedColor"));
116 DALI_TEST_EQUALS( value.Get<Vector4>(), color, TEST_LOCATION );
121 int UtcDaliCreateCarouselEffect(void)
123 ToolkitTestApplication application;
125 ShaderEffect effect = Toolkit::CreateCarouselEffect();
126 DALI_TEST_CHECK( effect );
131 int UtcDaliCreateDisplacementEffectDisplaced(void)
133 ToolkitTestApplication application;
135 ShaderEffect effect = Toolkit::CreateDisplacementEffect(Toolkit::DISPLACEMENT_EFFECT_DISPLACED);
136 DALI_TEST_CHECK( effect );
141 int UtcDaliCreateDisplacementEffectFixed(void)
143 ToolkitTestApplication application;
145 ShaderEffect effect = Toolkit::CreateDisplacementEffect(Toolkit::DISPLACEMENT_EFFECT_FIXED);
146 DALI_TEST_CHECK( effect );
151 int UtcDaliCreateDissolveEffect( bool highPrecision )
153 ToolkitTestApplication application;
155 Property::Map effect = Toolkit::CreateDissolveEffect( highPrecision );
156 DALI_TEST_CHECK( !effect.Empty() );
158 Property::Value* customShaderValue = effect.Find( Visual::Property::SHADER );
159 DALI_TEST_CHECK( customShaderValue );
161 Property::Map customShader;
162 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
164 Property::Value* vertexShaderValue = customShader.Find( Visual::Shader::Property::VERTEX_SHADER );
165 DALI_TEST_CHECK( vertexShaderValue );
167 std::string vertexShader;
168 DALI_TEST_CHECK( vertexShaderValue->Get( vertexShader ) );
169 DALI_TEST_CHECK( !vertexShader.empty() );
171 Property::Value* fragmentShaderValue = customShader.Find( Visual::Shader::Property::FRAGMENT_SHADER );
172 DALI_TEST_CHECK( fragmentShaderValue );
174 std::string fragmentShader;
175 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
176 DALI_TEST_CHECK( !fragmentShader.empty() );
178 Property::Value* gridXValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_X );
179 DALI_TEST_CHECK( gridXValue );
182 DALI_TEST_CHECK( gridXValue->Get( gridX ) );
183 DALI_TEST_CHECK( gridX > 1 );
185 Property::Value* gridYValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_Y );
186 DALI_TEST_CHECK( gridYValue );
189 DALI_TEST_CHECK( gridYValue->Get( gridY ) );
190 DALI_TEST_CHECK( gridY > 1 );
192 Property::Value* hintsValue = customShader.Find( Visual::Shader::Property::HINTS );
193 DALI_TEST_CHECK( hintsValue );
196 DALI_TEST_CHECK( hintsValue->Get( hints ) );
197 DALI_TEST_CHECK( hints == Shader::Hint::OUTPUT_IS_TRANSPARENT );
199 Actor actor = Actor::New();
200 Toolkit::DissolveEffectSetCentralLine( actor, Vector2::ONE, Vector2::ONE, 0.0f );
201 DALI_TEST_CHECK( actor.GetPropertyIndex( "uPercentage" ) != Property::INVALID_INDEX );
206 int UtcDaliCreateDissolveEffectHighPrecision(void)
208 return UtcDaliCreateDissolveEffect(true);
211 int UtcDaliCreateDissolveEffectMediumPrecision(void)
213 return UtcDaliCreateDissolveEffect(false);
216 int UtcDaliCreateDissolveLocalEffect(void)
218 ToolkitTestApplication application;
220 ShaderEffect effect = Toolkit::CreateDissolveLocalEffect(0);
221 DALI_TEST_CHECK( effect );
226 int UtcDaliCreateDissolveEffect(void)
228 ToolkitTestApplication application;
230 Property::Map effect = Toolkit::CreateDistanceFieldEffect();
231 DALI_TEST_CHECK( !effect.Empty() );
233 Property::Value* customShaderValue = effect.Find( Visual::Property::SHADER );
234 DALI_TEST_CHECK( customShaderValue );
236 Property::Map customShader;
237 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
239 Property::Value* vertexShaderValue = customShader.Find( Visual::Shader::Property::VERTEX_SHADER );
240 DALI_TEST_CHECK( !vertexShaderValue );
242 Property::Value* fragmentShaderValue = customShader.Find( Visual::Shader::Property::FRAGMENT_SHADER );
243 DALI_TEST_CHECK( fragmentShaderValue );
245 std::string fragmentShader;
246 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
247 DALI_TEST_CHECK( !fragmentShader.empty() );
249 Property::Value* gridXValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_X );
250 DALI_TEST_CHECK( !gridXValue );
252 Property::Value* hintsValue = customShader.Find( Visual::Shader::Property::HINTS );
253 DALI_TEST_CHECK( hintsValue );
256 DALI_TEST_CHECK( hintsValue->Get( hints ) );
257 DALI_TEST_CHECK( hints == Shader::Hint::OUTPUT_IS_TRANSPARENT );
262 int UtcDaliCreateImageRegionEffect(void)
264 ToolkitTestApplication application;
266 Property::Map effect = Toolkit::CreateImageRegionEffect();
267 DALI_TEST_CHECK( !effect.Empty() );
269 Property::Value* customShaderValue = effect.Find( Visual::Property::SHADER );
270 DALI_TEST_CHECK( customShaderValue );
272 Property::Map customShader;
273 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
275 Property::Value* vertexShaderValue = customShader.Find( Visual::Shader::Property::VERTEX_SHADER );
276 DALI_TEST_CHECK( vertexShaderValue );
278 std::string vertexShader;
279 DALI_TEST_CHECK( vertexShaderValue->Get( vertexShader ) );
280 DALI_TEST_CHECK( !vertexShader.empty() );
282 Property::Value* fragmentShaderValue = customShader.Find( Visual::Shader::Property::FRAGMENT_SHADER );
283 DALI_TEST_CHECK( !fragmentShaderValue );
285 Property::Value* gridXValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_X );
286 DALI_TEST_CHECK( !gridXValue );
288 Property::Value* gridYValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_Y );
289 DALI_TEST_CHECK( !gridYValue );
291 Property::Value* hintsValue = customShader.Find( Visual::Shader::Property::HINTS );
292 DALI_TEST_CHECK( !hintsValue );
297 int UtcDaliCreateIrisEffect(void)
299 ToolkitTestApplication application;
301 ShaderEffect effect = Toolkit::CreateIrisEffect();
302 DALI_TEST_CHECK( effect );
307 int UtcDaliCreateMaskEffect(void)
309 ToolkitTestApplication application;
311 BufferImage image = CreateBufferImage();
312 ShaderEffect effect = Toolkit::CreateMaskEffect(image);
313 DALI_TEST_CHECK( effect );
318 int UtcDaliCreateMirrorEffect(void)
320 ToolkitTestApplication application;
322 BufferImage image = CreateBufferImage();
323 ShaderEffect effect = Toolkit::CreateMirrorEffect();
324 DALI_TEST_CHECK( effect );
329 int UtcDaliCreateMotionBlurEffect(void)
331 ToolkitTestApplication application;
333 Property::Map effect = Toolkit::CreateMotionBlurEffect();
334 DALI_TEST_CHECK( !effect.Empty() );
336 Property::Value* customShaderValue = effect.Find( Visual::Property::SHADER );
337 DALI_TEST_CHECK( customShaderValue );
339 Property::Map customShader;
340 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
342 Property::Value* vertexShaderValue = customShader.Find( Visual::Shader::Property::VERTEX_SHADER );
343 DALI_TEST_CHECK( vertexShaderValue );
345 std::string vertexShader;
346 DALI_TEST_CHECK( vertexShaderValue->Get( vertexShader ) );
347 DALI_TEST_CHECK( !vertexShader.empty() );
349 Property::Value* fragmentShaderValue = customShader.Find( Visual::Shader::Property::FRAGMENT_SHADER );
350 DALI_TEST_CHECK( fragmentShaderValue );
352 std::string fragmentShader;
353 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
354 DALI_TEST_CHECK( !fragmentShader.empty() );
356 Property::Value* gridXValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_X );
357 DALI_TEST_CHECK( gridXValue );
360 DALI_TEST_CHECK( gridXValue->Get( gridX ) );
361 DALI_TEST_CHECK( gridX > 1 );
363 Property::Value* gridYValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_Y );
364 DALI_TEST_CHECK( gridYValue );
367 DALI_TEST_CHECK( gridYValue->Get( gridY ) );
368 DALI_TEST_CHECK( gridY > 1 );
370 Property::Value* hintsValue = customShader.Find( Visual::Shader::Property::HINTS );
371 DALI_TEST_CHECK( hintsValue );
374 DALI_TEST_CHECK( hintsValue->Get( hints ) );
375 DALI_TEST_CHECK( hints == Shader::Hint::OUTPUT_IS_TRANSPARENT );
377 unsigned int sampleCount( 4 );
378 Actor actor = Actor::New();
379 Toolkit::SetMotionBlurProperties( actor, sampleCount );
380 DALI_TEST_CHECK( actor.GetPropertyIndex( "uBlurTexCoordScale" ) != Property::INVALID_INDEX );
381 DALI_TEST_CHECK( actor.GetPropertyIndex( "uGeometryStretchFactor" ) != Property::INVALID_INDEX );
382 DALI_TEST_CHECK( actor.GetPropertyIndex( "uSpeedScalingFactor" ) != Property::INVALID_INDEX );
383 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeStart" ) != Property::INVALID_INDEX );
384 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeEnd" ) != Property::INVALID_INDEX );
385 DALI_TEST_CHECK( actor.GetPropertyIndex( "uAlphaScale" ) != Property::INVALID_INDEX );
386 DALI_TEST_CHECK( actor.GetPropertyIndex( "uNumSamples" ) != Property::INVALID_INDEX );
387 DALI_TEST_CHECK( actor.GetPropertyIndex( "uModelLastFrame" ) != Property::INVALID_INDEX );
392 int UtcDaliCreateMotionStretchEffect(void)
394 ToolkitTestApplication application;
396 Property::Map effect = Toolkit::CreateMotionStretchEffect();
397 DALI_TEST_CHECK( !effect.Empty() );
399 Property::Value* customShaderValue = effect.Find( Visual::Property::SHADER );
400 DALI_TEST_CHECK( customShaderValue );
402 Property::Map customShader;
403 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
405 Property::Value* vertexShaderValue = customShader.Find( Visual::Shader::Property::VERTEX_SHADER );
406 DALI_TEST_CHECK( vertexShaderValue );
408 std::string vertexShader;
409 DALI_TEST_CHECK( vertexShaderValue->Get( vertexShader ) );
410 DALI_TEST_CHECK( !vertexShader.empty() );
412 Property::Value* fragmentShaderValue = customShader.Find( Visual::Shader::Property::FRAGMENT_SHADER );
413 DALI_TEST_CHECK( fragmentShaderValue );
415 std::string fragmentShader;
416 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
417 DALI_TEST_CHECK( !fragmentShader.empty() );
419 Property::Value* gridXValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_X );
420 DALI_TEST_CHECK( gridXValue );
423 DALI_TEST_CHECK( gridXValue->Get( gridX ) );
424 DALI_TEST_CHECK( gridX > 1 );
426 Property::Value* gridYValue = customShader.Find( Visual::Shader::Property::SUBDIVIDE_GRID_Y );
427 DALI_TEST_CHECK( gridYValue );
430 DALI_TEST_CHECK( gridYValue->Get( gridY ) );
431 DALI_TEST_CHECK( gridY > 1 );
433 Property::Value* hintsValue = customShader.Find( Visual::Shader::Property::HINTS );
434 DALI_TEST_CHECK( hintsValue );
437 DALI_TEST_CHECK( hintsValue->Get( hints ) );
438 DALI_TEST_CHECK( hints == Shader::Hint::OUTPUT_IS_TRANSPARENT );
440 Actor actor = Actor::New();
441 Toolkit::SetMotionStretchProperties( actor );
442 DALI_TEST_CHECK( actor.GetPropertyIndex( "uGeometryStretchFactor" ) != Property::INVALID_INDEX );
443 DALI_TEST_CHECK( actor.GetPropertyIndex( "uSpeedScalingFactor" ) != Property::INVALID_INDEX );
444 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeStart" ) != Property::INVALID_INDEX );
445 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeEnd" ) != Property::INVALID_INDEX );
446 DALI_TEST_CHECK( actor.GetPropertyIndex( "uAlphaScale" ) != Property::INVALID_INDEX );
447 DALI_TEST_CHECK( actor.GetPropertyIndex( "uModelLastFrame" ) != Property::INVALID_INDEX );
452 int UtcDaliCreateOverlayEffect(void)
454 ToolkitTestApplication application;
456 BufferImage image = CreateBufferImage();
457 ShaderEffect effect = Toolkit::CreateOverlayEffect(image);
458 DALI_TEST_CHECK( effect );
463 int UtcDaliCreateQuadraticBezier(void)
465 ToolkitTestApplication application;
467 ShaderEffect effect = Toolkit::CreateQuadraticBezier(3,false);
468 DALI_TEST_CHECK( effect );
473 int UtcDaliCreateQuadraticBezierFilled(void)
475 ToolkitTestApplication application;
477 ShaderEffect effect = Toolkit::CreateQuadraticBezier(3,true);
478 DALI_TEST_CHECK( effect );
483 int UtcDaliCreateRipple2DEffect(void)
485 ToolkitTestApplication application;
487 ShaderEffect effect = Toolkit::CreateRipple2DEffect();
488 DALI_TEST_CHECK( effect );
493 int UtcDaliCreateRippleEffect(void)
495 ToolkitTestApplication application;
497 ShaderEffect effect = Toolkit::CreateRippleEffect();
498 DALI_TEST_CHECK( effect );
503 int UtcDaliCreateShearEffect(void)
505 ToolkitTestApplication application;
507 ShaderEffect effect = Toolkit::CreateShearEffect();
508 DALI_TEST_CHECK( effect );
513 int UtcDaliSoftButtonEffectElliptical(void)
515 ToolkitTestApplication application;
517 ShaderEffect effect = Toolkit::CreateSoftButtonEffect(Toolkit::SOFT_BUTTON_ELLIPTICAL);
518 DALI_TEST_CHECK( effect );
523 int UtcDaliSoftButtonEffectRectangular(void)
525 ToolkitTestApplication application;
527 ShaderEffect effect = Toolkit::CreateSoftButtonEffect(Toolkit::SOFT_BUTTON_RECTANGULAR);
528 DALI_TEST_CHECK( effect );
533 int UtcDaliSoftButtonEffectFixed(void)
535 ToolkitTestApplication application;
537 ShaderEffect effect = Toolkit::CreateSoftButtonEffect(Toolkit::SOFT_BUTTON_FIXED);
538 DALI_TEST_CHECK( effect );
543 int UtcDaliCreateSpotEffect(void)
545 ToolkitTestApplication application;
547 ShaderEffect effect = Toolkit::CreateSpotEffect();
548 DALI_TEST_CHECK( effect );
553 int UtcDaliCreateSquareDissolveEffect(void)
555 ToolkitTestApplication application;
557 ShaderEffect effect = Toolkit::CreateSquareDissolveEffect();
558 DALI_TEST_CHECK( effect );
563 int UtcDaliSwirlEffect(void)
565 ToolkitTestApplication application;
567 ShaderEffect effect = Toolkit::CreateSwirlEffect(false);
568 DALI_TEST_CHECK( effect );
573 int UtcDaliSwirlEffectWrap(void)
575 ToolkitTestApplication application;
577 ShaderEffect effect = Toolkit::CreateSwirlEffect(true);
578 DALI_TEST_CHECK( effect );