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/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>
50 int UtcDaliCreateAlphaDiscardEffect(void)
52 ToolkitTestApplication application;
54 ShaderEffect effect = Toolkit::CreateAlphaDiscardEffect();
55 DALI_TEST_CHECK( effect );
60 int UtcDaliCreateBendyEffect(void)
62 ToolkitTestApplication application;
64 ShaderEffect effect = Toolkit::CreateBendyEffect();
65 DALI_TEST_CHECK( effect );
70 int UtcDaliCreateBlindEffect(void)
72 ToolkitTestApplication application;
74 ShaderEffect effect = Toolkit::CreateBlindEffect();
75 DALI_TEST_CHECK( effect );
80 int UtcDaliCreateBouncingEffect(void)
82 ToolkitTestApplication application;
84 Vector4 color(1.0f,1.0f,1.0f,1.0f);
86 ShaderEffect effect = Toolkit::CreateBouncingEffect(color);
87 DALI_TEST_CHECK( effect );
89 Property::Value value = effect.GetProperty( effect.GetPropertyIndex("uAssignedColor"));
90 DALI_TEST_EQUALS( value.Get<Vector4>(), color, TEST_LOCATION );
95 int UtcDaliCreateCarouselEffect(void)
97 ToolkitTestApplication application;
99 ShaderEffect effect = Toolkit::CreateCarouselEffect();
100 DALI_TEST_CHECK( effect );
105 int UtcDaliCreateDisplacementEffectDisplaced(void)
107 ToolkitTestApplication application;
109 ShaderEffect effect = Toolkit::CreateDisplacementEffect(Toolkit::DISPLACEMENT_EFFECT_DISPLACED);
110 DALI_TEST_CHECK( effect );
115 int UtcDaliCreateDisplacementEffectFixed(void)
117 ToolkitTestApplication application;
119 ShaderEffect effect = Toolkit::CreateDisplacementEffect(Toolkit::DISPLACEMENT_EFFECT_FIXED);
120 DALI_TEST_CHECK( effect );
125 int UtcDaliCreateDissolveEffect( bool highPrecision )
127 ToolkitTestApplication application;
129 Property::Map effect = Toolkit::CreateDissolveEffect( highPrecision );
130 DALI_TEST_CHECK( !effect.Empty() );
132 Property::Value* customShaderValue = effect.Find( "shader" );
133 DALI_TEST_CHECK( customShaderValue );
135 Property::Map customShader;
136 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
138 Property::Value* vertexShaderValue = customShader.Find( "vertexShader" );
139 DALI_TEST_CHECK( vertexShaderValue );
141 std::string vertexShader;
142 DALI_TEST_CHECK( vertexShaderValue->Get( vertexShader ) );
143 DALI_TEST_CHECK( !vertexShader.empty() );
145 Property::Value* fragmentShaderValue = customShader.Find( "fragmentShader" );
146 DALI_TEST_CHECK( fragmentShaderValue );
148 std::string fragmentShader;
149 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
150 DALI_TEST_CHECK( !fragmentShader.empty() );
152 Property::Value* gridXValue = customShader.Find( "subdivideGridX" );
153 DALI_TEST_CHECK( gridXValue );
156 DALI_TEST_CHECK( gridXValue->Get( gridX ) );
157 DALI_TEST_CHECK( gridX > 1 );
159 Property::Value* gridYValue = customShader.Find( "subdivideGridY" );
160 DALI_TEST_CHECK( gridYValue );
163 DALI_TEST_CHECK( gridYValue->Get( gridY ) );
164 DALI_TEST_CHECK( gridY > 1 );
166 Property::Value* hintsValue = customShader.Find( "hints" );
167 DALI_TEST_CHECK( hintsValue );
170 DALI_TEST_CHECK( hintsValue->Get( hints ) );
171 DALI_TEST_CHECK( hints == "outputIsTransparent" );
173 Actor actor = Actor::New();
174 Toolkit::DissolveEffectSetCentralLine( actor, Vector2::ONE, Vector2::ONE, 0.0f );
175 DALI_TEST_CHECK( actor.GetPropertyIndex( "uPercentage" ) != Property::INVALID_INDEX );
180 int UtcDaliCreateDissolveEffectHighPrecision(void)
182 return UtcDaliCreateDissolveEffect(true);
185 int UtcDaliCreateDissolveEffectMediumPrecision(void)
187 return UtcDaliCreateDissolveEffect(false);
190 int UtcDaliCreateDissolveLocalEffect(void)
192 ToolkitTestApplication application;
194 ShaderEffect effect = Toolkit::CreateDissolveLocalEffect(0);
195 DALI_TEST_CHECK( effect );
200 int UtcDaliCreateDissolveEffect(void)
202 ToolkitTestApplication application;
204 Property::Map effect = Toolkit::CreateDistanceFieldEffect();
205 DALI_TEST_CHECK( !effect.Empty() );
207 Property::Value* customShaderValue = effect.Find( "shader" );
208 DALI_TEST_CHECK( customShaderValue );
210 Property::Map customShader;
211 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
213 Property::Value* vertexShaderValue = customShader.Find( "vertexShader" );
214 DALI_TEST_CHECK( !vertexShaderValue );
216 Property::Value* fragmentShaderValue = customShader.Find( "fragmentShader" );
217 DALI_TEST_CHECK( fragmentShaderValue );
219 std::string fragmentShader;
220 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
221 DALI_TEST_CHECK( !fragmentShader.empty() );
223 Property::Value* gridXValue = customShader.Find( "subdivideGridX" );
224 DALI_TEST_CHECK( !gridXValue );
226 Property::Value* hintsValue = customShader.Find( "hints" );
227 DALI_TEST_CHECK( hintsValue );
230 DALI_TEST_CHECK( hintsValue->Get( hints ) );
231 DALI_TEST_CHECK( hints == "outputIsTransparent" );
236 int UtcDaliCreateImageRegionEffect(void)
238 ToolkitTestApplication application;
240 ShaderEffect effect = Toolkit::CreateImageRegionEffect();
241 DALI_TEST_CHECK( effect );
246 int UtcDaliCreateIrisEffect(void)
248 ToolkitTestApplication application;
250 ShaderEffect effect = Toolkit::CreateIrisEffect();
251 DALI_TEST_CHECK( effect );
256 int UtcDaliCreateMaskEffect(void)
258 ToolkitTestApplication application;
260 BufferImage image = CreateBufferImage();
261 ShaderEffect effect = Toolkit::CreateMaskEffect(image);
262 DALI_TEST_CHECK( effect );
267 int UtcDaliCreateMirrorEffect(void)
269 ToolkitTestApplication application;
271 BufferImage image = CreateBufferImage();
272 ShaderEffect effect = Toolkit::CreateMirrorEffect();
273 DALI_TEST_CHECK( effect );
278 int UtcDaliCreateMotionBlurEffect(void)
280 ToolkitTestApplication application;
282 Property::Map effect = Toolkit::CreateMotionBlurEffect();
283 DALI_TEST_CHECK( !effect.Empty() );
285 Property::Value* customShaderValue = effect.Find( "shader" );
286 DALI_TEST_CHECK( customShaderValue );
288 Property::Map customShader;
289 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
291 Property::Value* vertexShaderValue = customShader.Find( "vertexShader" );
292 DALI_TEST_CHECK( vertexShaderValue );
294 std::string vertexShader;
295 DALI_TEST_CHECK( vertexShaderValue->Get( vertexShader ) );
296 DALI_TEST_CHECK( !vertexShader.empty() );
298 Property::Value* fragmentShaderValue = customShader.Find( "fragmentShader" );
299 DALI_TEST_CHECK( fragmentShaderValue );
301 std::string fragmentShader;
302 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
303 DALI_TEST_CHECK( !fragmentShader.empty() );
305 Property::Value* gridXValue = customShader.Find( "subdivideGridX" );
306 DALI_TEST_CHECK( gridXValue );
309 DALI_TEST_CHECK( gridXValue->Get( gridX ) );
310 DALI_TEST_CHECK( gridX > 1 );
312 Property::Value* gridYValue = customShader.Find( "subdivideGridY" );
313 DALI_TEST_CHECK( gridYValue );
316 DALI_TEST_CHECK( gridYValue->Get( gridY ) );
317 DALI_TEST_CHECK( gridY > 1 );
319 Property::Value* hintsValue = customShader.Find( "hints" );
320 DALI_TEST_CHECK( hintsValue );
323 DALI_TEST_CHECK( hintsValue->Get( hints ) );
324 DALI_TEST_CHECK( hints == "outputIsTransparent" );
326 unsigned int sampleCount( 4 );
327 Actor actor = Actor::New();
328 Toolkit::SetMotionBlurProperties( actor, sampleCount );
329 DALI_TEST_CHECK( actor.GetPropertyIndex( "uBlurTexCoordScale" ) != Property::INVALID_INDEX );
330 DALI_TEST_CHECK( actor.GetPropertyIndex( "uGeometryStretchFactor" ) != Property::INVALID_INDEX );
331 DALI_TEST_CHECK( actor.GetPropertyIndex( "uSpeedScalingFactor" ) != Property::INVALID_INDEX );
332 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeStart" ) != Property::INVALID_INDEX );
333 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeEnd" ) != Property::INVALID_INDEX );
334 DALI_TEST_CHECK( actor.GetPropertyIndex( "uAlphaScale" ) != Property::INVALID_INDEX );
335 DALI_TEST_CHECK( actor.GetPropertyIndex( "uNumSamples" ) != Property::INVALID_INDEX );
336 DALI_TEST_CHECK( actor.GetPropertyIndex( "uModelLastFrame" ) != Property::INVALID_INDEX );
341 int UtcDaliCreateMotionStretchEffect(void)
343 ToolkitTestApplication application;
345 Property::Map effect = Toolkit::CreateMotionStretchEffect();
346 DALI_TEST_CHECK( !effect.Empty() );
348 Property::Value* customShaderValue = effect.Find( "shader" );
349 DALI_TEST_CHECK( customShaderValue );
351 Property::Map customShader;
352 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
354 Property::Value* vertexShaderValue = customShader.Find( "vertexShader" );
355 DALI_TEST_CHECK( vertexShaderValue );
357 std::string vertexShader;
358 DALI_TEST_CHECK( vertexShaderValue->Get( vertexShader ) );
359 DALI_TEST_CHECK( !vertexShader.empty() );
361 Property::Value* fragmentShaderValue = customShader.Find( "fragmentShader" );
362 DALI_TEST_CHECK( fragmentShaderValue );
364 std::string fragmentShader;
365 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
366 DALI_TEST_CHECK( !fragmentShader.empty() );
368 Property::Value* gridXValue = customShader.Find( "subdivideGridX" );
369 DALI_TEST_CHECK( gridXValue );
372 DALI_TEST_CHECK( gridXValue->Get( gridX ) );
373 DALI_TEST_CHECK( gridX > 1 );
375 Property::Value* gridYValue = customShader.Find( "subdivideGridY" );
376 DALI_TEST_CHECK( gridYValue );
379 DALI_TEST_CHECK( gridYValue->Get( gridY ) );
380 DALI_TEST_CHECK( gridY > 1 );
382 Property::Value* hintsValue = customShader.Find( "hints" );
383 DALI_TEST_CHECK( hintsValue );
386 DALI_TEST_CHECK( hintsValue->Get( hints ) );
387 DALI_TEST_CHECK( hints == "outputIsTransparent" );
389 Actor actor = Actor::New();
390 Toolkit::SetMotionStretchProperties( actor );
391 DALI_TEST_CHECK( actor.GetPropertyIndex( "uGeometryStretchFactor" ) != Property::INVALID_INDEX );
392 DALI_TEST_CHECK( actor.GetPropertyIndex( "uSpeedScalingFactor" ) != Property::INVALID_INDEX );
393 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeStart" ) != Property::INVALID_INDEX );
394 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeEnd" ) != Property::INVALID_INDEX );
395 DALI_TEST_CHECK( actor.GetPropertyIndex( "uAlphaScale" ) != Property::INVALID_INDEX );
396 DALI_TEST_CHECK( actor.GetPropertyIndex( "uModelLastFrame" ) != Property::INVALID_INDEX );
401 int UtcDaliCreateOverlayEffect(void)
403 ToolkitTestApplication application;
405 BufferImage image = CreateBufferImage();
406 ShaderEffect effect = Toolkit::CreateOverlayEffect(image);
407 DALI_TEST_CHECK( effect );
412 int UtcDaliCreateQuadraticBezier(void)
414 ToolkitTestApplication application;
416 ShaderEffect effect = Toolkit::CreateQuadraticBezier(3,false);
417 DALI_TEST_CHECK( effect );
422 int UtcDaliCreateQuadraticBezierFilled(void)
424 ToolkitTestApplication application;
426 ShaderEffect effect = Toolkit::CreateQuadraticBezier(3,true);
427 DALI_TEST_CHECK( effect );
432 int UtcDaliCreateRipple2DEffect(void)
434 ToolkitTestApplication application;
436 ShaderEffect effect = Toolkit::CreateRipple2DEffect();
437 DALI_TEST_CHECK( effect );
442 int UtcDaliCreateRippleEffect(void)
444 ToolkitTestApplication application;
446 ShaderEffect effect = Toolkit::CreateRippleEffect();
447 DALI_TEST_CHECK( effect );
452 int UtcDaliCreateShearEffect(void)
454 ToolkitTestApplication application;
456 ShaderEffect effect = Toolkit::CreateShearEffect();
457 DALI_TEST_CHECK( effect );
462 int UtcDaliSoftButtonEffectElliptical(void)
464 ToolkitTestApplication application;
466 ShaderEffect effect = Toolkit::CreateSoftButtonEffect(Toolkit::SOFT_BUTTON_ELLIPTICAL);
467 DALI_TEST_CHECK( effect );
472 int UtcDaliSoftButtonEffectRectangular(void)
474 ToolkitTestApplication application;
476 ShaderEffect effect = Toolkit::CreateSoftButtonEffect(Toolkit::SOFT_BUTTON_RECTANGULAR);
477 DALI_TEST_CHECK( effect );
482 int UtcDaliSoftButtonEffectFixed(void)
484 ToolkitTestApplication application;
486 ShaderEffect effect = Toolkit::CreateSoftButtonEffect(Toolkit::SOFT_BUTTON_FIXED);
487 DALI_TEST_CHECK( effect );
492 int UtcDaliCreateSpotEffect(void)
494 ToolkitTestApplication application;
496 ShaderEffect effect = Toolkit::CreateSpotEffect();
497 DALI_TEST_CHECK( effect );
502 int UtcDaliCreateSquareDissolveEffect(void)
504 ToolkitTestApplication application;
506 ShaderEffect effect = Toolkit::CreateSquareDissolveEffect();
507 DALI_TEST_CHECK( effect );
512 int UtcDaliSwirlEffect(void)
514 ToolkitTestApplication application;
516 ShaderEffect effect = Toolkit::CreateSwirlEffect(false);
517 DALI_TEST_CHECK( effect );
522 int UtcDaliSwirlEffectWrap(void)
524 ToolkitTestApplication application;
526 ShaderEffect effect = Toolkit::CreateSwirlEffect(true);
527 DALI_TEST_CHECK( effect );