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 tet_printf("Assertion %s failed at %s\n", e.mCondition.c_str(), e.mLocation.c_str());
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 tet_printf("Assertion %s failed at %s\n", e.mCondition.c_str(), e.mLocation.c_str());
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 BitmapImage image = CreateBitmapImage();
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 BitmapImage image = CreateBitmapImage();
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 BitmapImage image = CreateBitmapImage();
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 BitmapImage image = CreateBitmapImage();
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& exception)
222 if (exception.mCondition == "index < mNumberOfWaves")
224 tet_result(TET_PASS);
230 int UtcDaliWaterEffectGetCenterPositive(void)
232 ToolkitTestApplication application;
234 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
235 DALI_TEST_CHECK( effect );
237 BitmapImage image = CreateBitmapImage();
239 ImageActor actor = ImageActor::New( image );
240 actor.SetSize( 100.0f, 100.0f );
241 actor.SetShaderEffect( effect );
242 Stage::GetCurrent().Add( actor );
244 Vector2 center(10.0f, 20.0f);
245 DALI_TEST_CHECK(effect.GetCenter(0) != center);
246 effect.SetCenter( 0, center );
248 application.SendNotification();
249 application.Render();
251 DALI_TEST_EQUALS(center, effect.GetCenter(0), TEST_LOCATION);
255 int UtcDaliWaterEffectGetCenterNegative(void)
257 ToolkitTestApplication application;
259 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
260 DALI_TEST_CHECK( effect );
262 BitmapImage image = CreateBitmapImage();
264 ImageActor actor = ImageActor::New( image );
265 actor.SetSize( 100.0f, 100.0f );
266 actor.SetShaderEffect( effect );
267 Stage::GetCurrent().Add( actor );
271 effect.GetCenter(9999);
272 tet_result(TET_FAIL);
274 catch(DaliException& exception)
276 if (exception.mCondition == "index < mNumberOfWaves")
278 tet_result(TET_PASS);
284 int UtcDaliWaterEffectGetPropagationPositive(void)
286 ToolkitTestApplication application;
288 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
289 DALI_TEST_CHECK( effect );
291 BitmapImage image = CreateBitmapImage();
293 ImageActor actor = ImageActor::New( image );
294 actor.SetSize( 100.0f, 100.0f );
295 actor.SetShaderEffect( effect );
296 Stage::GetCurrent().Add( actor );
298 float propagation(0.5f);
299 DALI_TEST_CHECK(effect.GetPropagation(0) != propagation);
300 effect.SetPropagation( 0, propagation );
302 application.SendNotification();
303 application.Render();
305 DALI_TEST_EQUALS(propagation, effect.GetPropagation(0), TEST_LOCATION);
309 int UtcDaliWaterEffectGetPropagationNegative(void)
311 ToolkitTestApplication application;
313 Toolkit::WaterEffect effect = Toolkit::WaterEffect::New(4);
314 DALI_TEST_CHECK( effect );
316 BitmapImage image = CreateBitmapImage();
318 ImageActor actor = ImageActor::New( image );
319 actor.SetSize( 100.0f, 100.0f );
320 actor.SetShaderEffect( effect );
321 Stage::GetCurrent().Add( actor );
325 effect.GetPropagation(9999);
326 tet_result(TET_FAIL);
328 catch(DaliException& exception)
330 if (exception.mCondition == "index < mNumberOfWaves")
332 tet_result(TET_PASS);