2 * Copyright (c) 2014 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>
25 void dali_water_effect_startup(void)
27 test_return_value = TET_UNDEF;
30 void dali_water_effect_cleanup(void)
32 test_return_value = TET_PASS;
37 int UtcDaliWaterEffectUninitialized(void)
39 ToolkitTestApplication application;
41 Toolkit::WaterEffect effect;
45 // New() must be called to create a RippleEffect or it wont be valid.
46 effect.SetAmplitude( 0, 0.5f );
47 DALI_TEST_CHECK( false );
49 catch (Dali::DaliException& e)
51 // Tests that a negative test of an assertion succeeds
52 DALI_TEST_PRINT_ASSERT( e );
53 DALI_TEST_CHECK(!effect);
58 int UtcDaliWaterEffectPropertyNames(void)
60 ToolkitTestApplication application;
62 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
63 DALI_TEST_CHECK( effect );
65 // Check the names, this names are used in the shaders code,
66 // if they change the shader code has to be updated
67 DALI_TEST_EQUALS( effect.GetAmplitudePropertyName( 0 ), "uDrops[0].amplitude", TEST_LOCATION );
68 DALI_TEST_EQUALS( effect.GetCenterPropertyName( 0 ), "uDrops[0].center", TEST_LOCATION );
69 DALI_TEST_EQUALS( effect.GetPropagationPropertyName( 0 ), "uDrops[0].radius", TEST_LOCATION );
73 int UtcDaliWaterEffectOutOfBounds(void)
75 ToolkitTestApplication application;
77 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
78 DALI_TEST_CHECK( effect );
82 // the highest index acceptable is (GetNumberOfWaves() - 1)
83 effect.SetAmplitude( effect.GetNumberOfWaves(), 0 );
84 DALI_TEST_CHECK( false );
86 catch (Dali::DaliException& e)
88 // Tests that a negative test of an assertion succeeds
89 DALI_TEST_PRINT_ASSERT( e );
90 DALI_TEST_CHECK( true );
95 int UtcDaliWaterEffectDefaultValues(void)
97 ToolkitTestApplication application;
99 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
100 DALI_TEST_CHECK( effect );
102 // Check that the effect has the number of waves it was requested
103 DALI_TEST_CHECK( effect.GetNumberOfWaves() == 4 );
105 BufferImage image = CreateBufferImage();
107 ImageActor actor = ImageActor::New( image );
108 actor.SetSize( 100.0f, 100.0f );
109 actor.SetShaderEffect( effect );
110 Stage::GetCurrent().Add( actor );
112 application.SendNotification();
113 application.Render();
115 Vector2 topLeft( Stage::GetCurrent().GetSize() * 0.5f );
116 topLeft.y = -topLeft.y;
118 for ( unsigned int i = 0; i < effect.GetNumberOfWaves(); ++i )
121 application.GetGlAbstraction().CheckUniformValue(
122 effect.GetAmplitudePropertyName(i).c_str(),
125 application.GetGlAbstraction().CheckUniformValue(
126 effect.GetCenterPropertyName(i).c_str(),
129 application.GetGlAbstraction().CheckUniformValue(
130 effect.GetPropagationPropertyName(i).c_str(),
136 int UtcDaliWaterEffectCustomValues(void)
138 ToolkitTestApplication application;
140 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
141 DALI_TEST_CHECK( effect );
143 BufferImage image = CreateBufferImage();
145 ImageActor actor = ImageActor::New( image );
146 actor.SetSize( 100.0f, 100.0f );
147 actor.SetShaderEffect( effect );
148 Stage::GetCurrent().Add( actor );
150 effect.SetAmplitude( 0, 0.5f );
151 effect.SetCenter( 0, Vector2 ( 10.0f, 10.0f ) );
152 effect.SetPropagation( 0, 2.0f );
154 application.SendNotification();
155 application.Render();
158 application.GetGlAbstraction().CheckUniformValue(
159 effect.GetAmplitudePropertyName(0).c_str(),
162 Vector2 centerPoint( Stage::GetCurrent().GetSize() * 0.5f );
163 centerPoint.y = -centerPoint.y;
166 application.GetGlAbstraction().CheckUniformValue(
167 effect.GetCenterPropertyName(0).c_str(),
168 Vector2( centerPoint.x - 10.0f, centerPoint.y + 10.0f ) ) );
170 application.GetGlAbstraction().CheckUniformValue(
171 effect.GetPropagationPropertyName(0).c_str(),
176 int UtcDaliWaterEffectGetAmplitudePositive(void)
178 ToolkitTestApplication application;
180 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
181 DALI_TEST_CHECK( effect );
183 BufferImage image = CreateBufferImage();
185 ImageActor actor = ImageActor::New( image );
186 actor.SetSize( 100.0f, 100.0f );
187 actor.SetShaderEffect( effect );
188 Stage::GetCurrent().Add( actor );
190 float amplitude(0.5f);
191 DALI_TEST_CHECK(effect.GetAmplitude(0) != amplitude);
192 effect.SetAmplitude( 0, amplitude );
194 application.SendNotification();
195 application.Render();
197 DALI_TEST_EQUALS(amplitude, effect.GetAmplitude(0), TEST_LOCATION);
201 int UtcDaliWaterEffectGetAmplitudeNegative(void)
203 ToolkitTestApplication application;
205 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
206 DALI_TEST_CHECK( effect );
208 BufferImage image = CreateBufferImage();
210 ImageActor actor = ImageActor::New( image );
211 actor.SetSize( 100.0f, 100.0f );
212 actor.SetShaderEffect( effect );
213 Stage::GetCurrent().Add( actor );
217 effect.GetAmplitude(9999);
218 tet_result(TET_FAIL);
220 catch(DaliException& e)
222 DALI_TEST_ASSERT(e, "index < mNumberOfWaves", TEST_LOCATION );
227 int UtcDaliWaterEffectGetCenterPositive(void)
229 ToolkitTestApplication application;
231 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
232 DALI_TEST_CHECK( effect );
234 BufferImage image = CreateBufferImage();
236 ImageActor actor = ImageActor::New( image );
237 actor.SetSize( 100.0f, 100.0f );
238 actor.SetShaderEffect( effect );
239 Stage::GetCurrent().Add( actor );
241 Vector2 center(10.0f, 20.0f);
242 DALI_TEST_CHECK(effect.GetCenter(0) != center);
243 effect.SetCenter( 0, center );
245 application.SendNotification();
246 application.Render();
248 DALI_TEST_EQUALS(center, effect.GetCenter(0), TEST_LOCATION);
252 int UtcDaliWaterEffectGetCenterNegative(void)
254 ToolkitTestApplication application;
256 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
257 DALI_TEST_CHECK( effect );
259 BufferImage image = CreateBufferImage();
261 ImageActor actor = ImageActor::New( image );
262 actor.SetSize( 100.0f, 100.0f );
263 actor.SetShaderEffect( effect );
264 Stage::GetCurrent().Add( actor );
268 effect.GetCenter(9999);
269 tet_result(TET_FAIL);
271 catch(DaliException& e)
273 DALI_TEST_ASSERT(e, "index < mNumberOfWaves", TEST_LOCATION );
278 int UtcDaliWaterEffectGetPropagationPositive(void)
280 ToolkitTestApplication application;
282 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
283 DALI_TEST_CHECK( effect );
285 BufferImage image = CreateBufferImage();
287 ImageActor actor = ImageActor::New( image );
288 actor.SetSize( 100.0f, 100.0f );
289 actor.SetShaderEffect( effect );
290 Stage::GetCurrent().Add( actor );
292 float propagation(0.5f);
293 DALI_TEST_CHECK(effect.GetPropagation(0) != propagation);
294 effect.SetPropagation( 0, propagation );
296 application.SendNotification();
297 application.Render();
299 DALI_TEST_EQUALS(propagation, effect.GetPropagation(0), TEST_LOCATION);
303 int UtcDaliWaterEffectGetPropagationNegative(void)
305 ToolkitTestApplication application;
307 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
308 DALI_TEST_CHECK( effect );
310 BufferImage image = CreateBufferImage();
312 ImageActor actor = ImageActor::New( image );
313 actor.SetSize( 100.0f, 100.0f );
314 actor.SetShaderEffect( effect );
315 Stage::GetCurrent().Add( actor );
319 effect.GetPropagation(9999);
320 tet_result(TET_FAIL);
322 catch(DaliException& e)
324 DALI_TEST_ASSERT(e, "index < mNumberOfWaves", TEST_LOCATION );