(AutomatedTests) Merged managed & unmanaged tests
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-DynamicsWorld.cpp
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
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
18 #include <iostream>
19 #include <stdlib.h>
20 #include <dali/public-api/dali-core.h>
21 #include <dali-test-suite-utils.h>
22 #include <test-dynamics.h>
23
24 using namespace Dali;
25
26 int UtcDaliStageInitializeDynamics(void)
27 {
28 #if !defined(DYNAMICS_SUPPORT)
29   tet_infoline("No dynamics support compiled\n");
30   return 0;
31 #endif
32   TestApplication application;
33
34   Stage stage = Stage::GetCurrent();
35   TraceCallStack& trace = application.GetPlatform().GetTrace();
36   trace.Enable(true);
37   DALI_TEST_CHECK( stage.InitializeDynamics( DynamicsWorldConfig::New() ) );
38   DALI_TEST_CHECK( trace.FindMethod( "GetDynamicsFactory" ) );
39   DALI_TEST_CHECK( trace.FindMethod( "DynamicsFactory::InitializeDynamics" ) );
40   END_TEST;
41 }
42
43 int UtcDaliStageGetDynamicsWorld(void)
44 {
45   TestApplication application;
46
47   Stage stage = Stage::GetCurrent();
48
49   DALI_TEST_CHECK( !stage.GetDynamicsWorld() );
50   END_TEST;
51 }
52
53 int UtcDaliStageTerminateDynamics(void)
54 {
55   TestApplication application;
56
57   Stage stage = Stage::GetCurrent();
58
59   stage.TerminateDynamics();
60
61   DALI_TEST_CHECK( !stage.GetDynamicsWorld() );
62   END_TEST;
63 }
64
65 int UtcDaliDynamicsWorldConstructor(void)
66 {
67 #if !defined(DYNAMICS_SUPPORT)
68   tet_infoline("No dynamics support compiled\n");
69   return 0;
70 #endif
71   tet_infoline("UtcDaliDynamicsWorldConstructor - DynamicsWorld::DynamicsWorld");
72
73   TestApplication application;
74
75   // start up
76   application.SendNotification();
77   application.Render();
78   application.Render();
79
80   // Default constructor - create an uninitialized handle
81   DynamicsWorld world;
82   DALI_TEST_CHECK( !world );
83
84   // initialize handle
85   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
86   world = Stage::GetCurrent().InitializeDynamics(worldConfig);
87
88   DALI_TEST_CHECK( world );
89   END_TEST;
90 }
91
92 int UtcDaliDynamicsWorldGravity(void)
93 {
94 #if !defined(DYNAMICS_SUPPORT)
95   tet_infoline("No dynamics support compiled\n");
96   return 0;
97 #endif
98   TestApplication application;
99   TraceCallStack& trace( application.GetPlatform().GetTrace() );
100   trace.Enable( true );
101
102   // start up
103   application.SendNotification();
104   application.Render();
105   application.Render();
106
107   const Vector3 gravity(1.0f, 2.0f, 3.0f);
108
109   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
110   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
111
112   if( !world )
113   {
114     // cannot create dynamics world, log failure and exit
115     DALI_TEST_CHECK( false );
116     END_TEST;
117   }
118
119   tet_infoline("UtcDaliDynamicsWorldGravity - DynamicsWorld::SetGravity");
120   world.SetGravity(gravity);
121
122   // update
123   application.SendNotification();
124   application.Render();
125   application.Render();
126
127   DALI_TEST_CHECK( trace.FindMethod( "DynamicsWorld::SetGravity" ) );
128
129   tet_infoline("UtcDaliDynamicsWorldGravity - DynamicsWorld::GetGravity");
130   DALI_TEST_EQUALS(gravity, world.GetGravity(), TEST_LOCATION);
131   END_TEST;
132 }
133
134 int UtcDaliDynamicsWorldDebugDrawMode(void)
135 {
136 #if !defined(DYNAMICS_SUPPORT)
137   tet_infoline("No dynamics support compiled\n");
138   return 0;
139 #endif
140   TestApplication application;
141   TraceCallStack& trace( application.GetPlatform().GetTrace() );
142   trace.Enable( true );
143
144   // start up
145   application.SendNotification();
146   application.Render();
147   application.Render();
148
149   const Vector3 gravity(1.0f, 2.0f, 3.0f);
150   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
151   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
152
153   if( !world )
154   {
155     // cannot create dynamics world, log failure and exit
156     DALI_TEST_CHECK( false );
157     END_TEST;
158   }
159
160   const int mode(DynamicsWorld::DEBUG_MODE_WIREFRAME | DynamicsWorld::DEBUG_MODE_AABB);
161
162   tet_infoline("UtcDaliDynamicsWorldDebugDrawMode - DynamicsWorld::SetDebugDrawMode");
163   world.SetDebugDrawMode(mode);
164
165   // update
166   application.SendNotification();
167   application.Render();
168   application.Render();
169
170   DALI_TEST_CHECK( trace.FindMethod( "DynamicsWorld::SetDebugDrawMode" ) );
171
172   tet_infoline("UtcDaliDynamicsWorldDebugDrawMode - DynamicsWorld::GetDebugDrawMode");
173   DALI_TEST_CHECK(mode == world.GetDebugDrawMode());
174   END_TEST;
175 }
176
177 int UtcDaliDynamicsWorldRootActor(void)
178 {
179 #if !defined(DYNAMICS_SUPPORT)
180   tet_infoline("No dynamics support compiled\n");
181   return 0;
182 #endif
183   TestApplication application;
184
185   // start up
186   application.SendNotification();
187   application.Render();
188   application.Render();
189
190   const Vector3 gravity(1.0f, 2.0f, 3.0f);
191   DynamicsWorldConfig worldConfig(DynamicsWorldConfig::New());
192   DynamicsWorld world( Stage::GetCurrent().InitializeDynamics(worldConfig) );
193
194   if( !world )
195   {
196     // cannot create dynamics world, log failure and exit
197     DALI_TEST_CHECK( false );
198     END_TEST;
199   }
200
201   Actor rootActor(Actor::New());
202
203   tet_infoline("UtcDaliDynamicsWorldDebugDrawMode - DynamicsWorld::GetRootActor");
204   Actor actor(world.GetRootActor());
205   DALI_TEST_CHECK( !actor );
206
207   tet_infoline("UtcDaliDynamicsWorldSetRootActor - DynamicsWorld::SetRootActor");
208   world.SetRootActor(rootActor);
209   DALI_TEST_CHECK(rootActor == world.GetRootActor());
210   END_TEST;
211 }