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>
22 #include <dali-toolkit/devel-api/shader-effects/water-effect.h>
26 void dali_water_effect_startup(void)
28 test_return_value = TET_UNDEF;
31 void dali_water_effect_cleanup(void)
33 test_return_value = TET_PASS;
38 int UtcDaliWaterEffectUninitialized(void)
40 ToolkitTestApplication application;
42 Toolkit::WaterEffect effect;
46 // New() must be called to create a RippleEffect or it wont be valid.
47 effect.SetAmplitude( 0, 0.5f );
48 DALI_TEST_CHECK( false );
50 catch (Dali::DaliException& e)
52 // Tests that a negative test of an assertion succeeds
53 DALI_TEST_PRINT_ASSERT( e );
54 DALI_TEST_CHECK(!effect);
59 int UtcDaliWaterEffectPropertyNames(void)
61 ToolkitTestApplication application;
63 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
64 DALI_TEST_CHECK( effect );
66 // Check the names, this names are used in the shaders code,
67 // if they change the shader code has to be updated
68 DALI_TEST_EQUALS( effect.GetAmplitudePropertyName( 0 ), "uDrops[0].amplitude", TEST_LOCATION );
69 DALI_TEST_EQUALS( effect.GetCenterPropertyName( 0 ), "uDrops[0].center", TEST_LOCATION );
70 DALI_TEST_EQUALS( effect.GetPropagationPropertyName( 0 ), "uDrops[0].radius", TEST_LOCATION );
74 int UtcDaliWaterEffectOutOfBounds(void)
76 ToolkitTestApplication application;
78 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
79 DALI_TEST_CHECK( effect );
83 // the highest index acceptable is (GetNumberOfWaves() - 1)
84 effect.SetAmplitude( effect.GetNumberOfWaves(), 0 );
85 DALI_TEST_CHECK( false );
87 catch (Dali::DaliException& e)
89 // Tests that a negative test of an assertion succeeds
90 DALI_TEST_PRINT_ASSERT( e );
91 DALI_TEST_CHECK( true );
96 int UtcDaliWaterEffectDefaultValues(void)
98 ToolkitTestApplication application;
100 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
101 DALI_TEST_CHECK( effect );
103 // Check that the effect has the number of waves it was requested
104 DALI_TEST_CHECK( effect.GetNumberOfWaves() == 4 );
106 BufferImage image = CreateBufferImage();
108 ImageActor actor = ImageActor::New( image );
109 actor.SetSize( 100.0f, 100.0f );
110 actor.SetShaderEffect( effect );
111 Stage::GetCurrent().Add( actor );
113 application.SendNotification();
114 application.Render();
116 Vector2 topLeft( Stage::GetCurrent().GetSize() * 0.5f );
117 topLeft.y = -topLeft.y;
119 for ( unsigned int i = 0; i < effect.GetNumberOfWaves(); ++i )
122 application.GetGlAbstraction().CheckUniformValue(
123 effect.GetAmplitudePropertyName(i).c_str(),
126 application.GetGlAbstraction().CheckUniformValue(
127 effect.GetCenterPropertyName(i).c_str(),
130 application.GetGlAbstraction().CheckUniformValue(
131 effect.GetPropagationPropertyName(i).c_str(),
137 int UtcDaliWaterEffectCustomValues(void)
139 ToolkitTestApplication application;
141 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
142 DALI_TEST_CHECK( effect );
144 BufferImage image = CreateBufferImage();
146 ImageActor actor = ImageActor::New( image );
147 actor.SetSize( 100.0f, 100.0f );
148 actor.SetShaderEffect( effect );
149 Stage::GetCurrent().Add( actor );
151 effect.SetAmplitude( 0, 0.5f );
152 effect.SetCenter( 0, Vector2 ( 10.0f, 10.0f ) );
153 effect.SetPropagation( 0, 2.0f );
155 application.SendNotification();
156 application.Render();
159 application.GetGlAbstraction().CheckUniformValue(
160 effect.GetAmplitudePropertyName(0).c_str(),
163 Vector2 centerPoint( Stage::GetCurrent().GetSize() * 0.5f );
164 centerPoint.y = -centerPoint.y;
167 application.GetGlAbstraction().CheckUniformValue(
168 effect.GetCenterPropertyName(0).c_str(),
169 Vector2( centerPoint.x - 10.0f, centerPoint.y + 10.0f ) ) );
171 application.GetGlAbstraction().CheckUniformValue(
172 effect.GetPropagationPropertyName(0).c_str(),
177 int UtcDaliWaterEffectGetAmplitudePositive(void)
179 ToolkitTestApplication application;
181 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
182 DALI_TEST_CHECK( effect );
184 BufferImage image = CreateBufferImage();
186 ImageActor actor = ImageActor::New( image );
187 actor.SetSize( 100.0f, 100.0f );
188 actor.SetShaderEffect( effect );
189 Stage::GetCurrent().Add( actor );
191 float amplitude(0.5f);
192 DALI_TEST_CHECK(effect.GetAmplitude(0) != amplitude);
193 effect.SetAmplitude( 0, amplitude );
195 application.SendNotification();
196 application.Render();
198 DALI_TEST_EQUALS(amplitude, effect.GetAmplitude(0), TEST_LOCATION);
202 int UtcDaliWaterEffectGetAmplitudeNegative(void)
204 ToolkitTestApplication application;
206 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
207 DALI_TEST_CHECK( effect );
209 BufferImage image = CreateBufferImage();
211 ImageActor actor = ImageActor::New( image );
212 actor.SetSize( 100.0f, 100.0f );
213 actor.SetShaderEffect( effect );
214 Stage::GetCurrent().Add( actor );
218 effect.GetAmplitude(9999);
219 tet_result(TET_FAIL);
221 catch(DaliException& e)
223 DALI_TEST_ASSERT(e, "index < mNumberOfWaves", TEST_LOCATION );
228 int UtcDaliWaterEffectGetCenterPositive(void)
230 ToolkitTestApplication application;
232 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
233 DALI_TEST_CHECK( effect );
235 BufferImage image = CreateBufferImage();
237 ImageActor actor = ImageActor::New( image );
238 actor.SetSize( 100.0f, 100.0f );
239 actor.SetShaderEffect( effect );
240 Stage::GetCurrent().Add( actor );
242 Vector2 center(10.0f, 20.0f);
243 DALI_TEST_CHECK(effect.GetCenter(0) != center);
244 effect.SetCenter( 0, center );
246 application.SendNotification();
247 application.Render();
249 DALI_TEST_EQUALS(center, effect.GetCenter(0), TEST_LOCATION);
253 int UtcDaliWaterEffectGetCenterNegative(void)
255 ToolkitTestApplication application;
257 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
258 DALI_TEST_CHECK( effect );
260 BufferImage image = CreateBufferImage();
262 ImageActor actor = ImageActor::New( image );
263 actor.SetSize( 100.0f, 100.0f );
264 actor.SetShaderEffect( effect );
265 Stage::GetCurrent().Add( actor );
269 effect.GetCenter(9999);
270 tet_result(TET_FAIL);
272 catch(DaliException& e)
274 DALI_TEST_ASSERT(e, "index < mNumberOfWaves", TEST_LOCATION );
279 int UtcDaliWaterEffectGetPropagationPositive(void)
281 ToolkitTestApplication application;
283 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
284 DALI_TEST_CHECK( effect );
286 BufferImage image = CreateBufferImage();
288 ImageActor actor = ImageActor::New( image );
289 actor.SetSize( 100.0f, 100.0f );
290 actor.SetShaderEffect( effect );
291 Stage::GetCurrent().Add( actor );
293 float propagation(0.5f);
294 DALI_TEST_CHECK(effect.GetPropagation(0) != propagation);
295 effect.SetPropagation( 0, propagation );
297 application.SendNotification();
298 application.Render();
300 DALI_TEST_EQUALS(propagation, effect.GetPropagation(0), TEST_LOCATION);
304 int UtcDaliWaterEffectGetPropagationNegative(void)
306 ToolkitTestApplication application;
308 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
309 DALI_TEST_CHECK( effect );
311 BufferImage image = CreateBufferImage();
313 ImageActor actor = ImageActor::New( image );
314 actor.SetSize( 100.0f, 100.0f );
315 actor.SetShaderEffect( effect );
316 Stage::GetCurrent().Add( actor );
320 effect.GetPropagation(9999);
321 tet_result(TET_FAIL);
323 catch(DaliException& e)
325 DALI_TEST_ASSERT(e, "index < mNumberOfWaves", TEST_LOCATION );