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.
20 #include <dali/dali.h>
21 #include <dali/public-api/dali-core.h>
22 #include <dali-test-suite-utils.h>
28 int UtcDaliDynamicsBodyConfigNew(void)
30 tet_infoline("UtcDaliDynamicsBodyConfigNew - DynamicsBodyConfig::New()");
32 TestApplication application;
35 application.SendNotification();
39 DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
40 DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
44 // cannot create dynamics world, log failure and exit
45 DALI_TEST_CHECK( false );
49 DynamicsBodyConfig config(DynamicsBodyConfig::New());
51 DALI_TEST_CHECK( config );
55 int UtcDaliDynamicsBodyConfigConstructor(void)
57 tet_infoline("UtcDaliDynamicsBodyConfigConstructor - DynamicsBodyConfig::DynamicsBodyConfig()");
59 TestApplication application;
62 application.SendNotification();
66 // Default constructor - create an uninitialized handle
67 DynamicsBodyConfig config;
69 DALI_TEST_CHECK( !config );
71 DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
72 DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
76 // cannot create dynamics world, log failure and exit
77 DALI_TEST_CHECK( false );
82 config = DynamicsBodyConfig::New();
84 DALI_TEST_CHECK( config );
88 int UtcDaliDynamicsBodyConfigType(void)
90 TestApplication application;
93 application.SendNotification();
97 DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
98 DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
102 // cannot create dynamics world, log failure and exit
103 DALI_TEST_CHECK( false );
107 DynamicsBodyConfig config(DynamicsBodyConfig::New());
109 tet_infoline("UtcDaliDynamicsBodyConfigType - DynamicsBodyConfig::GetType");
110 DALI_TEST_CHECK( DynamicsBodyConfig::RIGID == config.GetType() );
112 tet_infoline("UtcDaliDynamicsBodyConfigType - DynamicsBodyConfig::SetType(const BodyType)");
113 config.SetType( DynamicsBodyConfig::SOFT );
114 DALI_TEST_CHECK( DynamicsBodyConfig::SOFT == config.GetType() );
118 int UtcDaliDynamicsBodyConfigSetShape01(void)
120 tet_infoline("UtcDaliDynamicsBodyConfigSetShape01 - DynamicsBodyConfig::SetShape(const DynamicsShape::ShapeType,const Vector3&)");
122 TestApplication application;
125 application.SendNotification();
126 application.Render();
127 application.Render();
129 DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
130 DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
134 // cannot create dynamics world, log failure and exit
135 DALI_TEST_CHECK( false );
139 DynamicsBodyConfig config(DynamicsBodyConfig::New());
141 DALI_TEST_CHECK( DynamicsShape::CUBE == config.GetShape().GetType() );
143 const float radius(1.5f);
144 config.SetShape(DynamicsShape::SPHERE, Vector3(radius, 0.0f, 0.0f));
146 DALI_TEST_CHECK( DynamicsShape::SPHERE == config.GetShape().GetType() );
150 int UtcDaliDynamicsBodyConfigSetShape02(void)
152 tet_infoline("UtcDaliDynamicsBodyConfigSetShape02 - DynamicsBodyConfig::SetShape(DynamicsShape)");
154 TestApplication application;
157 application.SendNotification();
158 application.Render();
159 application.Render();
161 DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
162 DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
166 // cannot create dynamics world, log failure and exit
167 DALI_TEST_CHECK( false );
171 DynamicsBodyConfig config(DynamicsBodyConfig::New());
173 DALI_TEST_CHECK( DynamicsShape::CUBE == config.GetShape().GetType() );
175 const float radius(1.5f);
176 DynamicsShape shape(DynamicsShape::NewSphere(radius));
177 config.SetShape(shape);
179 DALI_TEST_CHECK( DynamicsShape::SPHERE == config.GetShape().GetType() );
183 int UtcDaliDynamicsBodyConfigGetShape(void)
185 tet_infoline("UtcDaliDynamicsBodyConfigGetShape - DynamicsBodyConfig::GetShape");
187 TestApplication application;
190 application.SendNotification();
191 application.Render();
192 application.Render();
194 DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
195 DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
199 // cannot create dynamics world, log failure and exit
200 DALI_TEST_CHECK( false );
204 DynamicsBodyConfig config(DynamicsBodyConfig::New());
206 DALI_TEST_CHECK( DynamicsShape::CUBE == config.GetShape().GetType() );
210 int UtcDaliDynamicsBodyConfigMass(void)
212 TestApplication application;
215 application.SendNotification();
216 application.Render();
217 application.Render();
219 const float testMass = 1.23f;
221 DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
222 DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
226 // cannot create dynamics world, log failure and exit
227 DALI_TEST_CHECK( false );
231 DynamicsBodyConfig config(DynamicsBodyConfig::New());
232 config.SetMass(testMass);
234 tet_infoline("UtcDaliDynamicsBodyConfigMass - DynamicsBodyConfig::GetMass");
235 DALI_TEST_EQUALS( testMass, config.GetMass(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
237 tet_infoline("UtcDaliDynamicsBodyConfigMass - DynamicsBodyConfig::SetMass");
238 const float mass = config.GetMass() + 0.1f;
239 config.SetMass(mass);
240 DALI_TEST_EQUALS( mass, config.GetMass(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
244 int UtcDaliDynamicsBodyConfigElasticity(void)
246 TestApplication application;
249 application.SendNotification();
250 application.Render();
251 application.Render();
253 const float testElasticity = 0.87f;
255 DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
256 DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
260 // cannot create dynamics world, log failure and exit
261 DALI_TEST_CHECK( false );
265 DynamicsBodyConfig config(DynamicsBodyConfig::New());
266 config.SetElasticity(testElasticity);
268 tet_infoline("UtcDaliDynamicsBodyConfigElasticity- DynamicsBodyConfig::GetElasticity");
269 DALI_TEST_EQUALS( testElasticity, config.GetElasticity(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
271 tet_infoline("UtcDaliDynamicsBodyConfigElasticity - DynamicsBodyConfig::SetElasticity");
272 const float elasticity = config.GetElasticity() + 0.1f;
273 config.SetElasticity(elasticity);
274 DALI_TEST_EQUALS( elasticity, config.GetElasticity(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
278 int UtcDaliDynamicsBodyConfigFriction(void)
280 TestApplication application;
283 application.SendNotification();
284 application.Render();
285 application.Render();
287 const float testFriction= 0.87f;
289 DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
290 DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
294 // cannot create dynamics world, log failure and exit
295 DALI_TEST_CHECK( false );
299 DynamicsBodyConfig config(DynamicsBodyConfig::New());
300 config.SetFriction(testFriction);
302 tet_infoline("UtcDaliDynamicsBodyConfigFriction - DynamicsBodyConfig::GetFriction");
303 DALI_TEST_EQUALS( testFriction, config.GetFriction(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
305 tet_infoline("UtcDaliDynamicsBodyConfigFriction - DynamicsBodyConfig::SetFriction");
306 const float friction = config.GetFriction() + 0.1f;
307 config.SetFriction(friction);
308 DALI_TEST_EQUALS( friction, config.GetFriction(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
312 int UtcDaliDynamicsBodyConfigLinearDamping(void)
314 TestApplication application;
317 application.SendNotification();
318 application.Render();
319 application.Render();
321 const float testDamping = 0.123f;
323 DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
324 DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
328 // cannot create dynamics world, log failure and exit
329 DALI_TEST_CHECK( false );
333 DynamicsBodyConfig config(DynamicsBodyConfig::New());
334 config.SetLinearDamping(testDamping);
336 tet_infoline("UtcDaliDynamicsBodyConfigLinearDamping- DynamicsBodyConfig::GetLinearDamping");
337 DALI_TEST_EQUALS( testDamping, config.GetLinearDamping(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
339 tet_infoline("UtcDaliDynamicsBodyConfigLinearDamping - DynamicsBodyConfig::SetLinearDamping");
340 const float damping = config.GetLinearDamping() + 0.1f;
341 config.SetLinearDamping(damping);
342 DALI_TEST_EQUALS( damping, config.GetLinearDamping(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
346 int UtcDaliDynamicsBodyConfigAngularDamping(void)
348 TestApplication application;
351 application.SendNotification();
352 application.Render();
353 application.Render();
355 const float testDamping = 0.123f;
357 DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
358 DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
362 // cannot create dynamics world, log failure and exit
363 DALI_TEST_CHECK( false );
367 DynamicsBodyConfig config(DynamicsBodyConfig::New());
368 config.SetAngularDamping(testDamping);
370 tet_infoline("UtcDaliDynamicsBodyConfigAngularDamping- DynamicsBodyConfig::GetAngularDamping");
371 DALI_TEST_EQUALS( testDamping, config.GetAngularDamping(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
373 tet_infoline("UtcDaliDynamicsBodyConfigAngularDamping - DynamicsBodyConfig::SetAngularDamping");
374 const float damping = config.GetAngularDamping() + 0.1f;
375 config.SetAngularDamping(damping);
376 DALI_TEST_EQUALS( damping, config.GetAngularDamping(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
380 int UtcDaliDynamicsBodyConfigLinearSleepVelocity(void)
382 TestApplication application;
385 application.SendNotification();
386 application.Render();
387 application.Render();
389 const float testSleepVelocity = 0.123f;
391 DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
392 DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
396 // cannot create dynamics world, log failure and exit
397 DALI_TEST_CHECK( false );
401 DynamicsBodyConfig config(DynamicsBodyConfig::New());
402 config.SetLinearSleepVelocity(testSleepVelocity);
404 tet_infoline("UtcDaliDynamicsBodyConfigLinearSleepVelocity - DynamicsBodyConfig::GetLinearSleepVelocity");
405 DALI_TEST_EQUALS( testSleepVelocity, config.GetLinearSleepVelocity(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
407 tet_infoline("UtcDaliDynamicsBodyConfigLinearSleepVelocity - DynamicsBodyConfig::SetLinearSleepVelocity");
408 const float sleepVelocity = config.GetLinearSleepVelocity() + 0.1f;
409 config.SetLinearSleepVelocity(sleepVelocity);
410 DALI_TEST_EQUALS( sleepVelocity, config.GetLinearSleepVelocity(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
414 int UtcDaliDynamicsBodyConfigAngularSleepVelocity(void)
416 TestApplication application;
419 application.SendNotification();
420 application.Render();
421 application.Render();
423 const float testSleepVelocity = 0.123f;
425 DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
426 DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
430 // cannot create dynamics world, log failure and exit
431 DALI_TEST_CHECK( false );
435 DynamicsBodyConfig config(DynamicsBodyConfig::New());
436 config.SetAngularSleepVelocity(testSleepVelocity);
438 tet_infoline("UtcDaliDynamicsBodyConfigAngularSleepVelocity - DynamicsBodyConfig::GetAngularSleepVelocity");
439 DALI_TEST_EQUALS( testSleepVelocity, config.GetAngularSleepVelocity(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
441 tet_infoline("UtcDaliDynamicsBodyConfigAngularSleepVelocity - DynamicsBodyConfig::SetAngularSleepVelocity");
442 const float sleepVelocity = config.GetAngularSleepVelocity() + 0.1f;
443 config.SetAngularSleepVelocity(sleepVelocity);
444 DALI_TEST_EQUALS( sleepVelocity, config.GetAngularSleepVelocity(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
448 int UtcDaliDynamicsBodyConfigCollisionGroup(void)
450 TestApplication application;
453 application.SendNotification();
454 application.Render();
455 application.Render();
457 const short int testGroup = 0x1234;
459 DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
460 DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
464 // cannot create dynamics world, log failure and exit
465 DALI_TEST_CHECK( false );
469 DynamicsBodyConfig config(DynamicsBodyConfig::New());
470 config.SetCollisionGroup(testGroup);
472 tet_infoline("UtcDaliDynamicsBodyConfigCollisionGroup- DynamicsBodyConfig::GetCollisionGroup");
473 DALI_TEST_EQUALS( testGroup, config.GetCollisionGroup(), TEST_LOCATION );
475 tet_infoline("UtcDaliDynamicsBodyConfigCollisionGroup - DynamicsBodyConfig::SetCollisionGroup");
476 const short int group = config.GetCollisionGroup() + 1;
477 config.SetCollisionGroup(group);
478 DALI_TEST_EQUALS( group, config.GetCollisionGroup(), TEST_LOCATION );
482 int UtcDaliDynamicsBodyConfigCollisionMask(void)
484 TestApplication application;
487 application.SendNotification();
488 application.Render();
489 application.Render();
491 const short int testMask = 0x7ffe;
493 DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
494 DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
498 // cannot create dynamics world, log failure and exit
499 DALI_TEST_CHECK( false );
503 DynamicsBodyConfig config(DynamicsBodyConfig::New());
504 config.SetCollisionMask(testMask);
506 tet_infoline("UtcDaliDynamicsBodyConfigCollisionMask- DynamicsBodyConfig::GetCollisionMask");
507 DALI_TEST_EQUALS( testMask, config.GetCollisionMask(), TEST_LOCATION );
509 tet_infoline("UtcDaliDynamicsBodyConfigCollisionMask - DynamicsBodyConfig::SetCollisionMask");
510 const short int mask = config.GetCollisionMask() + 1;
511 config.SetCollisionMask(mask);
512 DALI_TEST_EQUALS( mask, config.GetCollisionMask(), TEST_LOCATION );
516 int UtcDaliDynamicsBodyConfigAnchorHardness(void)
518 TestApplication application;
521 application.SendNotification();
522 application.Render();
523 application.Render();
525 const float testHardness = 0.87f;
527 DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
528 DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
532 // cannot create dynamics world, log failure and exit
533 DALI_TEST_CHECK( false );
537 DynamicsBodyConfig config(DynamicsBodyConfig::New());
538 config.SetAnchorHardness(testHardness);
540 tet_infoline("UtcDaliDynamicsBodyConfigAnchorHardness - DynamicsBodyConfig::GetAnchorHardness");
541 DALI_TEST_EQUALS( testHardness, config.GetAnchorHardness(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
543 tet_infoline("UtcDaliDynamicsBodyConfigAnchorHardness - DynamicsBodyConfig::SetAnchorHardness");
544 const float hardness = config.GetAnchorHardness() + 0.1f;
545 config.SetAnchorHardness(hardness);
546 DALI_TEST_EQUALS( hardness, config.GetAnchorHardness(), Math::MACHINE_EPSILON_1, TEST_LOCATION );
550 int UtcDaliDynamicsBodyConfigVolumeConservation(void)
552 tet_infoline("UtcDaliDynamicsBodyConfigVolumeConservation");
554 TestApplication application;
557 application.SendNotification();
558 application.Render();
559 application.Render();
561 DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
562 DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
566 // cannot create dynamics world, log failure and exit
567 DALI_TEST_CHECK( false );
571 DynamicsBodyConfig config(DynamicsBodyConfig::New());
573 const float conservation = config.GetVolumeConservation() + 0.1f;
574 config.SetVolumeConservation(conservation);
575 DALI_TEST_EQUALS( conservation, config.GetVolumeConservation(), Math::MACHINE_EPSILON_1, TEST_LOCATION );
579 int UtcDaliDynamicsBodyConfigShapeConservation(void)
581 tet_infoline("UtcDaliDynamicsBodyConfigShapeConservation");
583 TestApplication application;
586 application.SendNotification();
587 application.Render();
588 application.Render();
590 DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
591 DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
595 // cannot create dynamics world, log failure and exit
596 DALI_TEST_CHECK( false );
600 DynamicsBodyConfig config(DynamicsBodyConfig::New());
602 const float conservation = config.GetShapeConservation() + 0.1f;
603 config.SetShapeConservation(conservation);
604 DALI_TEST_EQUALS( conservation, config.GetShapeConservation(), Math::MACHINE_EPSILON_1, TEST_LOCATION );