2 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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.
19 #include <dali-toolkit-test-suite-utils.h>
20 #include <dali-toolkit/dali-toolkit.h>
24 void dali_water_effect_startup(void)
26 test_return_value = TET_UNDEF;
29 void dali_water_effect_cleanup(void)
31 test_return_value = TET_PASS;
36 int UtcDaliWaterEffectUninitialized(void)
38 ToolkitTestApplication application;
40 Toolkit::WaterEffect effect;
44 // New() must be called to create a RippleEffect or it wont be valid.
45 effect.SetAmplitude( 0, 0.5f );
46 DALI_TEST_CHECK( false );
48 catch (Dali::DaliException& e)
50 // Tests that a negative test of an assertion succeeds
51 tet_printf("Assertion %s failed at %s\n", e.mCondition.c_str(), e.mLocation.c_str());
52 DALI_TEST_CHECK(!effect);
57 int UtcDaliWaterEffectPropertyNames(void)
59 ToolkitTestApplication application;
61 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
62 DALI_TEST_CHECK( effect );
64 // Check the names, this names are used in the shaders code,
65 // if they change the shader code has to be updated
66 DALI_TEST_EQUALS( effect.GetAmplitudePropertyName( 0 ), "uDrops[0].amplitude", TEST_LOCATION );
67 DALI_TEST_EQUALS( effect.GetCenterPropertyName( 0 ), "uDrops[0].center", TEST_LOCATION );
68 DALI_TEST_EQUALS( effect.GetPropagationPropertyName( 0 ), "uDrops[0].radius", TEST_LOCATION );
72 int UtcDaliWaterEffectOutOfBounds(void)
74 ToolkitTestApplication application;
76 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
77 DALI_TEST_CHECK( effect );
81 // the highest index acceptable is (GetNumberOfWaves() - 1)
82 effect.SetAmplitude( effect.GetNumberOfWaves(), 0 );
83 DALI_TEST_CHECK( false );
85 catch (Dali::DaliException& e)
87 // Tests that a negative test of an assertion succeeds
88 tet_printf("Assertion %s failed at %s\n", e.mCondition.c_str(), e.mLocation.c_str());
89 DALI_TEST_CHECK( true );
94 int UtcDaliWaterEffectDefaultValues(void)
96 ToolkitTestApplication application;
98 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
99 DALI_TEST_CHECK( effect );
101 // Check that the effect has the number of waves it was requested
102 DALI_TEST_CHECK( effect.GetNumberOfWaves() == 4 );
104 BitmapImage image = CreateBitmapImage();
106 ImageActor actor = ImageActor::New( image );
107 actor.SetSize( 100.0f, 100.0f );
108 actor.SetShaderEffect( effect );
109 Stage::GetCurrent().Add( actor );
111 application.SendNotification();
112 application.Render();
114 Vector2 topLeft( Stage::GetCurrent().GetSize() * 0.5f );
115 topLeft.y = -topLeft.y;
117 for ( unsigned int i = 0; i < effect.GetNumberOfWaves(); ++i )
120 application.GetGlAbstraction().CheckUniformValue(
121 effect.GetAmplitudePropertyName(i).c_str(),
124 application.GetGlAbstraction().CheckUniformValue(
125 effect.GetCenterPropertyName(i).c_str(),
128 application.GetGlAbstraction().CheckUniformValue(
129 effect.GetPropagationPropertyName(i).c_str(),
135 int UtcDaliWaterEffectCustomValues(void)
137 ToolkitTestApplication application;
139 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
140 DALI_TEST_CHECK( effect );
142 BitmapImage image = CreateBitmapImage();
144 ImageActor actor = ImageActor::New( image );
145 actor.SetSize( 100.0f, 100.0f );
146 actor.SetShaderEffect( effect );
147 Stage::GetCurrent().Add( actor );
149 effect.SetAmplitude( 0, 0.5f );
150 effect.SetCenter( 0, Vector2 ( 10.0f, 10.0f ) );
151 effect.SetPropagation( 0, 2.0f );
153 application.SendNotification();
154 application.Render();
157 application.GetGlAbstraction().CheckUniformValue(
158 effect.GetAmplitudePropertyName(0).c_str(),
161 Vector2 centerPoint( Stage::GetCurrent().GetSize() * 0.5f );
162 centerPoint.y = -centerPoint.y;
165 application.GetGlAbstraction().CheckUniformValue(
166 effect.GetCenterPropertyName(0).c_str(),
167 Vector2( centerPoint.x - 10.0f, centerPoint.y + 10.0f ) ) );
169 application.GetGlAbstraction().CheckUniformValue(
170 effect.GetPropagationPropertyName(0).c_str(),
175 int UtcDaliWaterEffectGetAmplitudePositive(void)
177 ToolkitTestApplication application;
179 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
180 DALI_TEST_CHECK( effect );
182 BitmapImage image = CreateBitmapImage();
184 ImageActor actor = ImageActor::New( image );
185 actor.SetSize( 100.0f, 100.0f );
186 actor.SetShaderEffect( effect );
187 Stage::GetCurrent().Add( actor );
189 float amplitude(0.5f);
190 DALI_TEST_CHECK(effect.GetAmplitude(0) != amplitude);
191 effect.SetAmplitude( 0, amplitude );
193 application.SendNotification();
194 application.Render();
196 DALI_TEST_EQUALS(amplitude, effect.GetAmplitude(0), TEST_LOCATION);
200 int UtcDaliWaterEffectGetAmplitudeNegative(void)
202 ToolkitTestApplication application;
204 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
205 DALI_TEST_CHECK( effect );
207 BitmapImage image = CreateBitmapImage();
209 ImageActor actor = ImageActor::New( image );
210 actor.SetSize( 100.0f, 100.0f );
211 actor.SetShaderEffect( effect );
212 Stage::GetCurrent().Add( actor );
216 effect.GetAmplitude(9999);
217 tet_result(TET_FAIL);
219 catch(DaliException& exception)
221 if (exception.mCondition == "index < mNumberOfWaves")
223 tet_result(TET_PASS);
229 int UtcDaliWaterEffectGetCenterPositive(void)
231 ToolkitTestApplication application;
233 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
234 DALI_TEST_CHECK( effect );
236 BitmapImage image = CreateBitmapImage();
238 ImageActor actor = ImageActor::New( image );
239 actor.SetSize( 100.0f, 100.0f );
240 actor.SetShaderEffect( effect );
241 Stage::GetCurrent().Add( actor );
243 Vector2 center(10.0f, 20.0f);
244 DALI_TEST_CHECK(effect.GetCenter(0) != center);
245 effect.SetCenter( 0, center );
247 application.SendNotification();
248 application.Render();
250 DALI_TEST_EQUALS(center, effect.GetCenter(0), TEST_LOCATION);
254 int UtcDaliWaterEffectGetCenterNegative(void)
256 ToolkitTestApplication application;
258 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
259 DALI_TEST_CHECK( effect );
261 BitmapImage image = CreateBitmapImage();
263 ImageActor actor = ImageActor::New( image );
264 actor.SetSize( 100.0f, 100.0f );
265 actor.SetShaderEffect( effect );
266 Stage::GetCurrent().Add( actor );
270 effect.GetCenter(9999);
271 tet_result(TET_FAIL);
273 catch(DaliException& exception)
275 if (exception.mCondition == "index < mNumberOfWaves")
277 tet_result(TET_PASS);
283 int UtcDaliWaterEffectGetPropagationPositive(void)
285 ToolkitTestApplication application;
287 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
288 DALI_TEST_CHECK( effect );
290 BitmapImage image = CreateBitmapImage();
292 ImageActor actor = ImageActor::New( image );
293 actor.SetSize( 100.0f, 100.0f );
294 actor.SetShaderEffect( effect );
295 Stage::GetCurrent().Add( actor );
297 float propagation(0.5f);
298 DALI_TEST_CHECK(effect.GetPropagation(0) != propagation);
299 effect.SetPropagation( 0, propagation );
301 application.SendNotification();
302 application.Render();
304 DALI_TEST_EQUALS(propagation, effect.GetPropagation(0), TEST_LOCATION);
308 int UtcDaliWaterEffectGetPropagationNegative(void)
310 ToolkitTestApplication application;
312 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
313 DALI_TEST_CHECK( effect );
315 BitmapImage image = CreateBitmapImage();
317 ImageActor actor = ImageActor::New( image );
318 actor.SetSize( 100.0f, 100.0f );
319 actor.SetShaderEffect( effect );
320 Stage::GetCurrent().Add( actor );
324 effect.GetPropagation(9999);
325 tet_result(TET_FAIL);
327 catch(DaliException& exception)
329 if (exception.mCondition == "index < mNumberOfWaves")
331 tet_result(TET_PASS);