Revert "License conversion from Flora to Apache 2.0"
[platform/core/uifw/dali-core.git] / automated-tests / src / dali-unmanaged / utc-Dali-DynamicsBodyConfig.cpp
1 //
2 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
3 //
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
7 //
8 //     http://floralicense.org/license/
9 //
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.
15 //
16
17 #include <iostream>
18
19 #include <stdlib.h>
20 #include <dali/dali.h>
21 #include <dali/public-api/dali-core.h>
22 #include <dali-test-suite-utils.h>
23
24
25 using namespace Dali;
26
27
28 int UtcDaliDynamicsBodyConfigNew(void)
29 {
30   tet_infoline("UtcDaliDynamicsBodyConfigNew - DynamicsBodyConfig::New()");
31
32   TestApplication application;
33
34   // start up
35   application.SendNotification();
36   application.Render();
37   application.Render();
38
39   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
40   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
41
42   if( !world )
43   {
44     // cannot create dynamics world, log failure and exit
45     DALI_TEST_CHECK( false );
46     END_TEST;
47   }
48
49   DynamicsBodyConfig config(DynamicsBodyConfig::New());
50
51   DALI_TEST_CHECK( config );
52   END_TEST;
53 }
54
55 int UtcDaliDynamicsBodyConfigConstructor(void)
56 {
57   tet_infoline("UtcDaliDynamicsBodyConfigConstructor - DynamicsBodyConfig::DynamicsBodyConfig()");
58
59   TestApplication application;
60
61   // start up
62   application.SendNotification();
63   application.Render();
64   application.Render();
65
66   // Default constructor - create an uninitialized handle
67   DynamicsBodyConfig config;
68
69   DALI_TEST_CHECK( !config );
70
71   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
72   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
73
74   if( !world )
75   {
76     // cannot create dynamics world, log failure and exit
77     DALI_TEST_CHECK( false );
78     END_TEST;
79   }
80
81   // initialize handle
82   config = DynamicsBodyConfig::New();
83
84   DALI_TEST_CHECK( config );
85   END_TEST;
86 }
87
88 int UtcDaliDynamicsBodyConfigType(void)
89 {
90   TestApplication application;
91
92   // start up
93   application.SendNotification();
94   application.Render();
95   application.Render();
96
97   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
98   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
99
100   if( !world )
101   {
102     // cannot create dynamics world, log failure and exit
103     DALI_TEST_CHECK( false );
104     END_TEST;
105   }
106
107   DynamicsBodyConfig config(DynamicsBodyConfig::New());
108
109   tet_infoline("UtcDaliDynamicsBodyConfigType - DynamicsBodyConfig::GetType");
110   DALI_TEST_CHECK( DynamicsBodyConfig::RIGID == config.GetType() );
111
112   tet_infoline("UtcDaliDynamicsBodyConfigType - DynamicsBodyConfig::SetType(const BodyType)");
113   config.SetType( DynamicsBodyConfig::SOFT );
114   DALI_TEST_CHECK( DynamicsBodyConfig::SOFT == config.GetType() );
115   END_TEST;
116 }
117
118 int UtcDaliDynamicsBodyConfigSetShape01(void)
119 {
120   tet_infoline("UtcDaliDynamicsBodyConfigSetShape01 - DynamicsBodyConfig::SetShape(const DynamicsShape::ShapeType,const Vector3&)");
121
122   TestApplication application;
123
124   // start up
125   application.SendNotification();
126   application.Render();
127   application.Render();
128
129   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
130   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
131
132   if( !world )
133   {
134     // cannot create dynamics world, log failure and exit
135     DALI_TEST_CHECK( false );
136     END_TEST;
137   }
138
139   DynamicsBodyConfig config(DynamicsBodyConfig::New());
140
141   DALI_TEST_CHECK( DynamicsShape::CUBE == config.GetShape().GetType() );
142
143   const float radius(1.5f);
144   config.SetShape(DynamicsShape::SPHERE, Vector3(radius, 0.0f, 0.0f));
145
146   DALI_TEST_CHECK( DynamicsShape::SPHERE == config.GetShape().GetType() );
147   END_TEST;
148 }
149
150 int UtcDaliDynamicsBodyConfigSetShape02(void)
151 {
152   tet_infoline("UtcDaliDynamicsBodyConfigSetShape02 - DynamicsBodyConfig::SetShape(DynamicsShape)");
153
154   TestApplication application;
155
156   // start up
157   application.SendNotification();
158   application.Render();
159   application.Render();
160
161   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
162   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
163
164   if( !world )
165   {
166     // cannot create dynamics world, log failure and exit
167     DALI_TEST_CHECK( false );
168     END_TEST;
169   }
170
171   DynamicsBodyConfig config(DynamicsBodyConfig::New());
172
173   DALI_TEST_CHECK( DynamicsShape::CUBE == config.GetShape().GetType() );
174
175   const float radius(1.5f);
176   DynamicsShape shape(DynamicsShape::NewSphere(radius));
177   config.SetShape(shape);
178
179   DALI_TEST_CHECK( DynamicsShape::SPHERE == config.GetShape().GetType() );
180   END_TEST;
181 }
182
183 int UtcDaliDynamicsBodyConfigGetShape(void)
184 {
185   tet_infoline("UtcDaliDynamicsBodyConfigGetShape - DynamicsBodyConfig::GetShape");
186
187   TestApplication application;
188
189   // start up
190   application.SendNotification();
191   application.Render();
192   application.Render();
193
194   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
195   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
196
197   if( !world )
198   {
199     // cannot create dynamics world, log failure and exit
200     DALI_TEST_CHECK( false );
201     END_TEST;
202   }
203
204   DynamicsBodyConfig config(DynamicsBodyConfig::New());
205
206   DALI_TEST_CHECK( DynamicsShape::CUBE == config.GetShape().GetType() );
207   END_TEST;
208 }
209
210 int UtcDaliDynamicsBodyConfigMass(void)
211 {
212   TestApplication application;
213
214   // start up
215   application.SendNotification();
216   application.Render();
217   application.Render();
218
219   const float testMass = 1.23f;
220
221   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
222   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
223
224   if( !world )
225   {
226     // cannot create dynamics world, log failure and exit
227     DALI_TEST_CHECK( false );
228     END_TEST;
229   }
230
231   DynamicsBodyConfig config(DynamicsBodyConfig::New());
232   config.SetMass(testMass);
233
234   tet_infoline("UtcDaliDynamicsBodyConfigMass - DynamicsBodyConfig::GetMass");
235   DALI_TEST_EQUALS( testMass, config.GetMass(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
236
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 );
241   END_TEST;
242 }
243
244 int UtcDaliDynamicsBodyConfigElasticity(void)
245 {
246   TestApplication application;
247
248   // start up
249   application.SendNotification();
250   application.Render();
251   application.Render();
252
253   const float testElasticity = 0.87f;
254
255   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
256   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
257
258   if( !world )
259   {
260     // cannot create dynamics world, log failure and exit
261     DALI_TEST_CHECK( false );
262     END_TEST;
263   }
264
265   DynamicsBodyConfig config(DynamicsBodyConfig::New());
266   config.SetElasticity(testElasticity);
267
268   tet_infoline("UtcDaliDynamicsBodyConfigElasticity- DynamicsBodyConfig::GetElasticity");
269   DALI_TEST_EQUALS( testElasticity, config.GetElasticity(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
270
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 );
275   END_TEST;
276 }
277
278 int UtcDaliDynamicsBodyConfigFriction(void)
279 {
280   TestApplication application;
281
282   // start up
283   application.SendNotification();
284   application.Render();
285   application.Render();
286
287   const float testFriction= 0.87f;
288
289   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
290   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
291
292   if( !world )
293   {
294     // cannot create dynamics world, log failure and exit
295     DALI_TEST_CHECK( false );
296     END_TEST;
297   }
298
299   DynamicsBodyConfig config(DynamicsBodyConfig::New());
300   config.SetFriction(testFriction);
301
302   tet_infoline("UtcDaliDynamicsBodyConfigFriction - DynamicsBodyConfig::GetFriction");
303   DALI_TEST_EQUALS( testFriction, config.GetFriction(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
304
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 );
309   END_TEST;
310 }
311
312 int UtcDaliDynamicsBodyConfigLinearDamping(void)
313 {
314   TestApplication application;
315
316   // start up
317   application.SendNotification();
318   application.Render();
319   application.Render();
320
321   const float testDamping = 0.123f;
322
323   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
324   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
325
326   if( !world )
327   {
328     // cannot create dynamics world, log failure and exit
329     DALI_TEST_CHECK( false );
330     END_TEST;
331   }
332
333   DynamicsBodyConfig config(DynamicsBodyConfig::New());
334   config.SetLinearDamping(testDamping);
335
336   tet_infoline("UtcDaliDynamicsBodyConfigLinearDamping- DynamicsBodyConfig::GetLinearDamping");
337   DALI_TEST_EQUALS( testDamping, config.GetLinearDamping(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
338
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 );
343   END_TEST;
344 }
345
346 int UtcDaliDynamicsBodyConfigAngularDamping(void)
347 {
348   TestApplication application;
349
350   // start up
351   application.SendNotification();
352   application.Render();
353   application.Render();
354
355   const float testDamping = 0.123f;
356
357   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
358   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
359
360   if( !world )
361   {
362     // cannot create dynamics world, log failure and exit
363     DALI_TEST_CHECK( false );
364     END_TEST;
365   }
366
367   DynamicsBodyConfig config(DynamicsBodyConfig::New());
368   config.SetAngularDamping(testDamping);
369
370   tet_infoline("UtcDaliDynamicsBodyConfigAngularDamping- DynamicsBodyConfig::GetAngularDamping");
371   DALI_TEST_EQUALS( testDamping, config.GetAngularDamping(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
372
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 );
377   END_TEST;
378 }
379
380 int UtcDaliDynamicsBodyConfigLinearSleepVelocity(void)
381 {
382   TestApplication application;
383
384   // start up
385   application.SendNotification();
386   application.Render();
387   application.Render();
388
389   const float testSleepVelocity = 0.123f;
390
391   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
392   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
393
394   if( !world )
395   {
396     // cannot create dynamics world, log failure and exit
397     DALI_TEST_CHECK( false );
398     END_TEST;
399   }
400
401   DynamicsBodyConfig config(DynamicsBodyConfig::New());
402   config.SetLinearSleepVelocity(testSleepVelocity);
403
404   tet_infoline("UtcDaliDynamicsBodyConfigLinearSleepVelocity - DynamicsBodyConfig::GetLinearSleepVelocity");
405   DALI_TEST_EQUALS( testSleepVelocity, config.GetLinearSleepVelocity(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
406
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 );
411   END_TEST;
412 }
413
414 int UtcDaliDynamicsBodyConfigAngularSleepVelocity(void)
415 {
416   TestApplication application;
417
418   // start up
419   application.SendNotification();
420   application.Render();
421   application.Render();
422
423   const float testSleepVelocity = 0.123f;
424
425   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
426   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
427
428   if( !world )
429   {
430     // cannot create dynamics world, log failure and exit
431     DALI_TEST_CHECK( false );
432     END_TEST;
433   }
434
435   DynamicsBodyConfig config(DynamicsBodyConfig::New());
436   config.SetAngularSleepVelocity(testSleepVelocity);
437
438   tet_infoline("UtcDaliDynamicsBodyConfigAngularSleepVelocity - DynamicsBodyConfig::GetAngularSleepVelocity");
439   DALI_TEST_EQUALS( testSleepVelocity, config.GetAngularSleepVelocity(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
440
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 );
445   END_TEST;
446 }
447
448 int UtcDaliDynamicsBodyConfigCollisionGroup(void)
449 {
450   TestApplication application;
451
452   // start up
453   application.SendNotification();
454   application.Render();
455   application.Render();
456
457   const short int testGroup = 0x1234;
458
459   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
460   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
461
462   if( !world )
463   {
464     // cannot create dynamics world, log failure and exit
465     DALI_TEST_CHECK( false );
466     END_TEST;
467   }
468
469   DynamicsBodyConfig config(DynamicsBodyConfig::New());
470   config.SetCollisionGroup(testGroup);
471
472   tet_infoline("UtcDaliDynamicsBodyConfigCollisionGroup- DynamicsBodyConfig::GetCollisionGroup");
473   DALI_TEST_EQUALS( testGroup, config.GetCollisionGroup(), TEST_LOCATION );
474
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 );
479   END_TEST;
480 }
481
482 int UtcDaliDynamicsBodyConfigCollisionMask(void)
483 {
484   TestApplication application;
485
486   // start up
487   application.SendNotification();
488   application.Render();
489   application.Render();
490
491   const short int testMask = 0x7ffe;
492
493   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
494   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
495
496   if( !world )
497   {
498     // cannot create dynamics world, log failure and exit
499     DALI_TEST_CHECK( false );
500     END_TEST;
501   }
502
503   DynamicsBodyConfig config(DynamicsBodyConfig::New());
504   config.SetCollisionMask(testMask);
505
506   tet_infoline("UtcDaliDynamicsBodyConfigCollisionMask- DynamicsBodyConfig::GetCollisionMask");
507   DALI_TEST_EQUALS( testMask, config.GetCollisionMask(), TEST_LOCATION );
508
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 );
513   END_TEST;
514 }
515
516 int UtcDaliDynamicsBodyConfigAnchorHardness(void)
517 {
518   TestApplication application;
519
520   // start up
521   application.SendNotification();
522   application.Render();
523   application.Render();
524
525   const float testHardness = 0.87f;
526
527   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
528   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
529
530   if( !world )
531   {
532     // cannot create dynamics world, log failure and exit
533     DALI_TEST_CHECK( false );
534     END_TEST;
535   }
536
537   DynamicsBodyConfig config(DynamicsBodyConfig::New());
538   config.SetAnchorHardness(testHardness);
539
540   tet_infoline("UtcDaliDynamicsBodyConfigAnchorHardness - DynamicsBodyConfig::GetAnchorHardness");
541   DALI_TEST_EQUALS( testHardness, config.GetAnchorHardness(), Math::MACHINE_EPSILON_0, TEST_LOCATION );
542
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 );
547   END_TEST;
548 }
549
550 int UtcDaliDynamicsBodyConfigVolumeConservation(void)
551 {
552   tet_infoline("UtcDaliDynamicsBodyConfigVolumeConservation");
553
554   TestApplication application;
555
556   // start up
557   application.SendNotification();
558   application.Render();
559   application.Render();
560
561   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
562   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
563
564   if( !world )
565   {
566     // cannot create dynamics world, log failure and exit
567     DALI_TEST_CHECK( false );
568     END_TEST;
569   }
570
571   DynamicsBodyConfig config(DynamicsBodyConfig::New());
572
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 );
576   END_TEST;
577 }
578
579 int UtcDaliDynamicsBodyConfigShapeConservation(void)
580 {
581   tet_infoline("UtcDaliDynamicsBodyConfigShapeConservation");
582
583   TestApplication application;
584
585   // start up
586   application.SendNotification();
587   application.Render();
588   application.Render();
589
590   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
591   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
592
593   if( !world )
594   {
595     // cannot create dynamics world, log failure and exit
596     DALI_TEST_CHECK( false );
597     END_TEST;
598   }
599
600   DynamicsBodyConfig config(DynamicsBodyConfig::New());
601
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 );
605   END_TEST;
606 }