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 Property::Map effect = Toolkit::CreateAlphaDiscardEffect();
55 DALI_TEST_CHECK( !effect.Empty() );
57 Property::Value* customShaderValue = effect.Find( "shader" );
58 DALI_TEST_CHECK( customShaderValue );
60 Property::Map customShader;
61 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
63 Property::Value* vertexShaderValue = customShader.Find( "vertexShader" );
64 DALI_TEST_CHECK( !vertexShaderValue );
66 Property::Value* fragmentShaderValue = customShader.Find( "fragmentShader" );
67 DALI_TEST_CHECK( fragmentShaderValue );
69 std::string fragmentShader;
70 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
71 DALI_TEST_CHECK( !fragmentShader.empty() );
73 Property::Value* gridXValue = customShader.Find( "subdivideGridX" );
74 DALI_TEST_CHECK( !gridXValue );
76 Property::Value* gridYValue = customShader.Find( "subdivideGridY" );
77 DALI_TEST_CHECK( !gridYValue );
79 Property::Value* hintsValue = customShader.Find( "hints" );
80 DALI_TEST_CHECK( !hintsValue );
85 int UtcDaliCreateBendyEffect(void)
87 ToolkitTestApplication application;
89 ShaderEffect effect = Toolkit::CreateBendyEffect();
90 DALI_TEST_CHECK( effect );
95 int UtcDaliCreateBlindEffect(void)
97 ToolkitTestApplication application;
99 ShaderEffect effect = Toolkit::CreateBlindEffect();
100 DALI_TEST_CHECK( effect );
105 int UtcDaliCreateBouncingEffect(void)
107 ToolkitTestApplication application;
109 Vector4 color(1.0f,1.0f,1.0f,1.0f);
111 ShaderEffect effect = Toolkit::CreateBouncingEffect(color);
112 DALI_TEST_CHECK( effect );
114 Property::Value value = effect.GetProperty( effect.GetPropertyIndex("uAssignedColor"));
115 DALI_TEST_EQUALS( value.Get<Vector4>(), color, TEST_LOCATION );
120 int UtcDaliCreateCarouselEffect(void)
122 ToolkitTestApplication application;
124 ShaderEffect effect = Toolkit::CreateCarouselEffect();
125 DALI_TEST_CHECK( effect );
130 int UtcDaliCreateDisplacementEffectDisplaced(void)
132 ToolkitTestApplication application;
134 ShaderEffect effect = Toolkit::CreateDisplacementEffect(Toolkit::DISPLACEMENT_EFFECT_DISPLACED);
135 DALI_TEST_CHECK( effect );
140 int UtcDaliCreateDisplacementEffectFixed(void)
142 ToolkitTestApplication application;
144 ShaderEffect effect = Toolkit::CreateDisplacementEffect(Toolkit::DISPLACEMENT_EFFECT_FIXED);
145 DALI_TEST_CHECK( effect );
150 int UtcDaliCreateDissolveEffect( bool highPrecision )
152 ToolkitTestApplication application;
154 Property::Map effect = Toolkit::CreateDissolveEffect( highPrecision );
155 DALI_TEST_CHECK( !effect.Empty() );
157 Property::Value* customShaderValue = effect.Find( "shader" );
158 DALI_TEST_CHECK( customShaderValue );
160 Property::Map customShader;
161 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
163 Property::Value* vertexShaderValue = customShader.Find( "vertexShader" );
164 DALI_TEST_CHECK( vertexShaderValue );
166 std::string vertexShader;
167 DALI_TEST_CHECK( vertexShaderValue->Get( vertexShader ) );
168 DALI_TEST_CHECK( !vertexShader.empty() );
170 Property::Value* fragmentShaderValue = customShader.Find( "fragmentShader" );
171 DALI_TEST_CHECK( fragmentShaderValue );
173 std::string fragmentShader;
174 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
175 DALI_TEST_CHECK( !fragmentShader.empty() );
177 Property::Value* gridXValue = customShader.Find( "subdivideGridX" );
178 DALI_TEST_CHECK( gridXValue );
181 DALI_TEST_CHECK( gridXValue->Get( gridX ) );
182 DALI_TEST_CHECK( gridX > 1 );
184 Property::Value* gridYValue = customShader.Find( "subdivideGridY" );
185 DALI_TEST_CHECK( gridYValue );
188 DALI_TEST_CHECK( gridYValue->Get( gridY ) );
189 DALI_TEST_CHECK( gridY > 1 );
191 Property::Value* hintsValue = customShader.Find( "hints" );
192 DALI_TEST_CHECK( hintsValue );
195 DALI_TEST_CHECK( hintsValue->Get( hints ) );
196 DALI_TEST_CHECK( hints == "outputIsTransparent" );
198 Actor actor = Actor::New();
199 Toolkit::DissolveEffectSetCentralLine( actor, Vector2::ONE, Vector2::ONE, 0.0f );
200 DALI_TEST_CHECK( actor.GetPropertyIndex( "uPercentage" ) != Property::INVALID_INDEX );
205 int UtcDaliCreateDissolveEffectHighPrecision(void)
207 return UtcDaliCreateDissolveEffect(true);
210 int UtcDaliCreateDissolveEffectMediumPrecision(void)
212 return UtcDaliCreateDissolveEffect(false);
215 int UtcDaliCreateDissolveLocalEffect(void)
217 ToolkitTestApplication application;
219 ShaderEffect effect = Toolkit::CreateDissolveLocalEffect(0);
220 DALI_TEST_CHECK( effect );
225 int UtcDaliCreateDissolveEffect(void)
227 ToolkitTestApplication application;
229 Property::Map effect = Toolkit::CreateDistanceFieldEffect();
230 DALI_TEST_CHECK( !effect.Empty() );
232 Property::Value* customShaderValue = effect.Find( "shader" );
233 DALI_TEST_CHECK( customShaderValue );
235 Property::Map customShader;
236 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
238 Property::Value* vertexShaderValue = customShader.Find( "vertexShader" );
239 DALI_TEST_CHECK( !vertexShaderValue );
241 Property::Value* fragmentShaderValue = customShader.Find( "fragmentShader" );
242 DALI_TEST_CHECK( fragmentShaderValue );
244 std::string fragmentShader;
245 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
246 DALI_TEST_CHECK( !fragmentShader.empty() );
248 Property::Value* gridXValue = customShader.Find( "subdivideGridX" );
249 DALI_TEST_CHECK( !gridXValue );
251 Property::Value* hintsValue = customShader.Find( "hints" );
252 DALI_TEST_CHECK( hintsValue );
255 DALI_TEST_CHECK( hintsValue->Get( hints ) );
256 DALI_TEST_CHECK( hints == "outputIsTransparent" );
261 int UtcDaliCreateImageRegionEffect(void)
263 ToolkitTestApplication application;
265 Property::Map effect = Toolkit::CreateImageRegionEffect();
266 DALI_TEST_CHECK( !effect.Empty() );
268 Property::Value* customShaderValue = effect.Find( "shader" );
269 DALI_TEST_CHECK( customShaderValue );
271 Property::Map customShader;
272 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
274 Property::Value* vertexShaderValue = customShader.Find( "vertexShader" );
275 DALI_TEST_CHECK( vertexShaderValue );
277 std::string vertexShader;
278 DALI_TEST_CHECK( vertexShaderValue->Get( vertexShader ) );
279 DALI_TEST_CHECK( !vertexShader.empty() );
281 Property::Value* fragmentShaderValue = customShader.Find( "fragmentShader" );
282 DALI_TEST_CHECK( !fragmentShaderValue );
284 Property::Value* gridXValue = customShader.Find( "subdivideGridX" );
285 DALI_TEST_CHECK( !gridXValue );
287 Property::Value* gridYValue = customShader.Find( "subdivideGridY" );
288 DALI_TEST_CHECK( !gridYValue );
290 Property::Value* hintsValue = customShader.Find( "hints" );
291 DALI_TEST_CHECK( !hintsValue );
296 int UtcDaliCreateIrisEffect(void)
298 ToolkitTestApplication application;
300 ShaderEffect effect = Toolkit::CreateIrisEffect();
301 DALI_TEST_CHECK( effect );
306 int UtcDaliCreateMaskEffect(void)
308 ToolkitTestApplication application;
310 BufferImage image = CreateBufferImage();
311 ShaderEffect effect = Toolkit::CreateMaskEffect(image);
312 DALI_TEST_CHECK( effect );
317 int UtcDaliCreateMirrorEffect(void)
319 ToolkitTestApplication application;
321 BufferImage image = CreateBufferImage();
322 ShaderEffect effect = Toolkit::CreateMirrorEffect();
323 DALI_TEST_CHECK( effect );
328 int UtcDaliCreateMotionBlurEffect(void)
330 ToolkitTestApplication application;
332 Property::Map effect = Toolkit::CreateMotionBlurEffect();
333 DALI_TEST_CHECK( !effect.Empty() );
335 Property::Value* customShaderValue = effect.Find( "shader" );
336 DALI_TEST_CHECK( customShaderValue );
338 Property::Map customShader;
339 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
341 Property::Value* vertexShaderValue = customShader.Find( "vertexShader" );
342 DALI_TEST_CHECK( vertexShaderValue );
344 std::string vertexShader;
345 DALI_TEST_CHECK( vertexShaderValue->Get( vertexShader ) );
346 DALI_TEST_CHECK( !vertexShader.empty() );
348 Property::Value* fragmentShaderValue = customShader.Find( "fragmentShader" );
349 DALI_TEST_CHECK( fragmentShaderValue );
351 std::string fragmentShader;
352 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
353 DALI_TEST_CHECK( !fragmentShader.empty() );
355 Property::Value* gridXValue = customShader.Find( "subdivideGridX" );
356 DALI_TEST_CHECK( gridXValue );
359 DALI_TEST_CHECK( gridXValue->Get( gridX ) );
360 DALI_TEST_CHECK( gridX > 1 );
362 Property::Value* gridYValue = customShader.Find( "subdivideGridY" );
363 DALI_TEST_CHECK( gridYValue );
366 DALI_TEST_CHECK( gridYValue->Get( gridY ) );
367 DALI_TEST_CHECK( gridY > 1 );
369 Property::Value* hintsValue = customShader.Find( "hints" );
370 DALI_TEST_CHECK( hintsValue );
373 DALI_TEST_CHECK( hintsValue->Get( hints ) );
374 DALI_TEST_CHECK( hints == "outputIsTransparent" );
376 unsigned int sampleCount( 4 );
377 Actor actor = Actor::New();
378 Toolkit::SetMotionBlurProperties( actor, sampleCount );
379 DALI_TEST_CHECK( actor.GetPropertyIndex( "uBlurTexCoordScale" ) != Property::INVALID_INDEX );
380 DALI_TEST_CHECK( actor.GetPropertyIndex( "uGeometryStretchFactor" ) != Property::INVALID_INDEX );
381 DALI_TEST_CHECK( actor.GetPropertyIndex( "uSpeedScalingFactor" ) != Property::INVALID_INDEX );
382 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeStart" ) != Property::INVALID_INDEX );
383 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeEnd" ) != Property::INVALID_INDEX );
384 DALI_TEST_CHECK( actor.GetPropertyIndex( "uAlphaScale" ) != Property::INVALID_INDEX );
385 DALI_TEST_CHECK( actor.GetPropertyIndex( "uNumSamples" ) != Property::INVALID_INDEX );
386 DALI_TEST_CHECK( actor.GetPropertyIndex( "uModelLastFrame" ) != Property::INVALID_INDEX );
391 int UtcDaliCreateMotionStretchEffect(void)
393 ToolkitTestApplication application;
395 Property::Map effect = Toolkit::CreateMotionStretchEffect();
396 DALI_TEST_CHECK( !effect.Empty() );
398 Property::Value* customShaderValue = effect.Find( "shader" );
399 DALI_TEST_CHECK( customShaderValue );
401 Property::Map customShader;
402 DALI_TEST_CHECK( customShaderValue->Get( customShader ) );
404 Property::Value* vertexShaderValue = customShader.Find( "vertexShader" );
405 DALI_TEST_CHECK( vertexShaderValue );
407 std::string vertexShader;
408 DALI_TEST_CHECK( vertexShaderValue->Get( vertexShader ) );
409 DALI_TEST_CHECK( !vertexShader.empty() );
411 Property::Value* fragmentShaderValue = customShader.Find( "fragmentShader" );
412 DALI_TEST_CHECK( fragmentShaderValue );
414 std::string fragmentShader;
415 DALI_TEST_CHECK( fragmentShaderValue->Get( fragmentShader ) );
416 DALI_TEST_CHECK( !fragmentShader.empty() );
418 Property::Value* gridXValue = customShader.Find( "subdivideGridX" );
419 DALI_TEST_CHECK( gridXValue );
422 DALI_TEST_CHECK( gridXValue->Get( gridX ) );
423 DALI_TEST_CHECK( gridX > 1 );
425 Property::Value* gridYValue = customShader.Find( "subdivideGridY" );
426 DALI_TEST_CHECK( gridYValue );
429 DALI_TEST_CHECK( gridYValue->Get( gridY ) );
430 DALI_TEST_CHECK( gridY > 1 );
432 Property::Value* hintsValue = customShader.Find( "hints" );
433 DALI_TEST_CHECK( hintsValue );
436 DALI_TEST_CHECK( hintsValue->Get( hints ) );
437 DALI_TEST_CHECK( hints == "outputIsTransparent" );
439 Actor actor = Actor::New();
440 Toolkit::SetMotionStretchProperties( actor );
441 DALI_TEST_CHECK( actor.GetPropertyIndex( "uGeometryStretchFactor" ) != Property::INVALID_INDEX );
442 DALI_TEST_CHECK( actor.GetPropertyIndex( "uSpeedScalingFactor" ) != Property::INVALID_INDEX );
443 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeStart" ) != Property::INVALID_INDEX );
444 DALI_TEST_CHECK( actor.GetPropertyIndex( "uObjectFadeEnd" ) != Property::INVALID_INDEX );
445 DALI_TEST_CHECK( actor.GetPropertyIndex( "uAlphaScale" ) != Property::INVALID_INDEX );
446 DALI_TEST_CHECK( actor.GetPropertyIndex( "uModelLastFrame" ) != Property::INVALID_INDEX );
451 int UtcDaliCreateOverlayEffect(void)
453 ToolkitTestApplication application;
455 BufferImage image = CreateBufferImage();
456 ShaderEffect effect = Toolkit::CreateOverlayEffect(image);
457 DALI_TEST_CHECK( effect );
462 int UtcDaliCreateQuadraticBezier(void)
464 ToolkitTestApplication application;
466 ShaderEffect effect = Toolkit::CreateQuadraticBezier(3,false);
467 DALI_TEST_CHECK( effect );
472 int UtcDaliCreateQuadraticBezierFilled(void)
474 ToolkitTestApplication application;
476 ShaderEffect effect = Toolkit::CreateQuadraticBezier(3,true);
477 DALI_TEST_CHECK( effect );
482 int UtcDaliCreateRipple2DEffect(void)
484 ToolkitTestApplication application;
486 ShaderEffect effect = Toolkit::CreateRipple2DEffect();
487 DALI_TEST_CHECK( effect );
492 int UtcDaliCreateRippleEffect(void)
494 ToolkitTestApplication application;
496 ShaderEffect effect = Toolkit::CreateRippleEffect();
497 DALI_TEST_CHECK( effect );
502 int UtcDaliCreateShearEffect(void)
504 ToolkitTestApplication application;
506 ShaderEffect effect = Toolkit::CreateShearEffect();
507 DALI_TEST_CHECK( effect );
512 int UtcDaliSoftButtonEffectElliptical(void)
514 ToolkitTestApplication application;
516 ShaderEffect effect = Toolkit::CreateSoftButtonEffect(Toolkit::SOFT_BUTTON_ELLIPTICAL);
517 DALI_TEST_CHECK( effect );
522 int UtcDaliSoftButtonEffectRectangular(void)
524 ToolkitTestApplication application;
526 ShaderEffect effect = Toolkit::CreateSoftButtonEffect(Toolkit::SOFT_BUTTON_RECTANGULAR);
527 DALI_TEST_CHECK( effect );
532 int UtcDaliSoftButtonEffectFixed(void)
534 ToolkitTestApplication application;
536 ShaderEffect effect = Toolkit::CreateSoftButtonEffect(Toolkit::SOFT_BUTTON_FIXED);
537 DALI_TEST_CHECK( effect );
542 int UtcDaliCreateSpotEffect(void)
544 ToolkitTestApplication application;
546 ShaderEffect effect = Toolkit::CreateSpotEffect();
547 DALI_TEST_CHECK( effect );
552 int UtcDaliCreateSquareDissolveEffect(void)
554 ToolkitTestApplication application;
556 ShaderEffect effect = Toolkit::CreateSquareDissolveEffect();
557 DALI_TEST_CHECK( effect );
562 int UtcDaliSwirlEffect(void)
564 ToolkitTestApplication application;
566 ShaderEffect effect = Toolkit::CreateSwirlEffect(false);
567 DALI_TEST_CHECK( effect );
572 int UtcDaliSwirlEffectWrap(void)
574 ToolkitTestApplication application;
576 ShaderEffect effect = Toolkit::CreateSwirlEffect(true);
577 DALI_TEST_CHECK( effect );