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/public-api/dali-core.h>
21 #include <dali-test-suite-utils.h>
22 #include <test-dynamics.h>
23 #include <dali/devel-api/dynamics/dynamics.h>
27 // Note: dali-core needs to be configured and built with --enable-dynamics for these tests to run.
29 int UtcDaliDynamicsWorldConstructor(void)
31 #if !defined(DYNAMICS_SUPPORT)
32 tet_infoline("No dynamics support compiled\n");
35 tet_infoline("UtcDaliDynamicsWorldConstructor - DynamicsWorld::DynamicsWorld");
37 TestApplication application;
40 application.SendNotification();
44 // Default constructor - create an uninitialized handle
46 DALI_TEST_CHECK( !world );
49 DynamicsWorldConfig worldConfig( DynamicsWorldConfig::New() );
50 world = DynamicsWorld::GetInstance( worldConfig );
52 DALI_TEST_CHECK( world );
56 int UtcDaliDynamicsWorldGetInstanceP(void)
58 #if !defined(DYNAMICS_SUPPORT)
59 tet_infoline( "No dynamics support compiled\n" );
63 Stage stage = Stage::GetCurrent();
64 TraceCallStack& trace = app.GetPlatform().GetTrace();
67 DynamicsWorldConfig config = DynamicsWorldConfig::New();
69 bool asserted = false;
72 DALI_TEST_CHECK( DynamicsWorld::GetInstance( config ) );
74 catch( Dali::DaliException& e )
76 DALI_TEST_PRINT_ASSERT( e );
79 DALI_TEST_CHECK( !asserted );
81 DALI_TEST_CHECK( trace.FindMethod( "GetDynamicsFactory" ) );
82 DALI_TEST_CHECK( trace.FindMethod( "DynamicsFactory::InitializeDynamics" ) );
87 int UtcDaliDynamicsWorldGetInstanceN(void)
89 #if !defined(DYNAMICS_SUPPORT)
90 tet_infoline( "No dynamics support compiled\n" );
95 DynamicsWorldConfig config;
97 // Check that creating a DynamicsWorld instance without a valid config causes an assert.
98 bool asserted = false;
101 DynamicsWorld::GetInstance( config );
103 catch( Dali::DaliException& e )
105 DALI_TEST_PRINT_ASSERT( e );
106 DALI_TEST_ASSERT( e, "object && \"DynamicsWorldConfig object is uninitialized!\"", TEST_LOCATION );
109 DALI_TEST_CHECK( asserted );
114 int UtcDaliDynamicsWorldGetP(void)
116 #if !defined(DYNAMICS_SUPPORT)
117 tet_infoline( "No dynamics support compiled\n" );
122 DynamicsWorldConfig config = DynamicsWorldConfig::New();
124 bool asserted = false;
127 DynamicsWorld::GetInstance( config );
128 DynamicsWorld world = DynamicsWorld::Get();
129 DALI_TEST_CHECK( world );
131 catch( Dali::DaliException& e )
133 DALI_TEST_PRINT_ASSERT( e );
136 DALI_TEST_CHECK( !asserted );
141 int UtcDaliDynamicsWorldGetN(void)
143 #if !defined(DYNAMICS_SUPPORT)
144 tet_infoline( "No dynamics support compiled\n" );
149 bool asserted = false;
152 DynamicsWorld::Get();
154 catch( Dali::DaliException& e )
156 DALI_TEST_PRINT_ASSERT( e );
157 DALI_TEST_ASSERT( e, "dynamicsWorld && \"DynamicsWorld doesn't exist\"", TEST_LOCATION );
160 DALI_TEST_CHECK( asserted );
165 int UtcDaliDynamicsWorldDestroyInstanceP(void)
167 #if !defined(DYNAMICS_SUPPORT)
168 tet_infoline( "No dynamics support compiled\n" );
173 DynamicsWorldConfig config = DynamicsWorldConfig::New();
174 DynamicsWorld world = DynamicsWorld::GetInstance( config );
175 DALI_TEST_CHECK( world );
176 DynamicsWorld::DestroyInstance();
178 // After destroying the instance, check we assert when trying to get the instance,
179 // to prove that it's been removed correctly.
180 bool asserted = false;
183 DynamicsWorld::Get();
185 catch( Dali::DaliException& e )
187 DALI_TEST_PRINT_ASSERT( e );
188 DALI_TEST_ASSERT( e, "dynamicsWorld && \"DynamicsWorld doesn't exist\"", TEST_LOCATION );
191 DALI_TEST_CHECK( asserted );
196 int UtcDaliDynamicsWorldDestroyInstanceN(void)
198 #if !defined(DYNAMICS_SUPPORT)
199 tet_infoline( "No dynamics support compiled\n" );
204 // Check that calling DestroyInstance() when there is no instance is safe.
205 bool asserted = false;
208 DynamicsWorld::DestroyInstance();
210 catch( Dali::DaliException& e )
212 DALI_TEST_PRINT_ASSERT( e );
215 DALI_TEST_CHECK( !asserted );
220 int UtcDaliDynamicsWorldGravity(void)
222 #if !defined(DYNAMICS_SUPPORT)
223 tet_infoline("No dynamics support compiled\n");
226 TestApplication application;
227 TraceCallStack& trace( application.GetPlatform().GetTrace() );
228 trace.Enable( true );
231 application.SendNotification();
232 application.Render();
233 application.Render();
235 const Vector3 gravity(1.0f, 2.0f, 3.0f);
237 DynamicsWorldConfig worldConfig( DynamicsWorldConfig::New() );
238 DynamicsWorld world( DynamicsWorld::GetInstance( worldConfig ) );
242 // cannot create dynamics world, log failure and exit
243 DALI_TEST_CHECK( false );
247 tet_infoline("UtcDaliDynamicsWorldGravity - DynamicsWorld::SetGravity");
248 world.SetGravity(gravity);
251 application.SendNotification();
252 application.Render();
253 application.Render();
255 DALI_TEST_CHECK( trace.FindMethod( "DynamicsWorld::SetGravity" ) );
257 tet_infoline("UtcDaliDynamicsWorldGravity - DynamicsWorld::GetGravity");
258 DALI_TEST_EQUALS(gravity, world.GetGravity(), TEST_LOCATION);
262 int UtcDaliDynamicsWorldDebugDrawMode(void)
264 #if !defined(DYNAMICS_SUPPORT)
265 tet_infoline("No dynamics support compiled\n");
268 TestApplication application;
269 TraceCallStack& trace( application.GetPlatform().GetTrace() );
270 trace.Enable( true );
273 application.SendNotification();
274 application.Render();
275 application.Render();
277 const Vector3 gravity(1.0f, 2.0f, 3.0f);
278 DynamicsWorldConfig worldConfig( DynamicsWorldConfig::New() );
279 DynamicsWorld world( DynamicsWorld::GetInstance( worldConfig ) );
283 // cannot create dynamics world, log failure and exit
284 DALI_TEST_CHECK( false );
288 const int mode(DynamicsWorld::DEBUG_MODE_WIREFRAME | DynamicsWorld::DEBUG_MODE_AABB);
290 tet_infoline("UtcDaliDynamicsWorldDebugDrawMode - DynamicsWorld::SetDebugDrawMode");
291 world.SetDebugDrawMode(mode);
294 application.SendNotification();
295 application.Render();
296 application.Render();
298 DALI_TEST_CHECK( trace.FindMethod( "DynamicsWorld::SetDebugDrawMode" ) );
299 DALI_TEST_CHECK( trace.FindMethod( "DynamicsWorld::SetGravity" ) );
301 tet_infoline("UtcDaliDynamicsWorldDebugDrawMode - DynamicsWorld::GetDebugDrawMode");
302 DALI_TEST_CHECK(mode == world.GetDebugDrawMode());
306 int UtcDaliDynamicsWorldRootActor(void)
308 #if !defined(DYNAMICS_SUPPORT)
309 tet_infoline("No dynamics support compiled\n");
312 TestApplication application;
315 application.SendNotification();
316 application.Render();
317 application.Render();
319 const Vector3 gravity(1.0f, 2.0f, 3.0f);
320 DynamicsWorldConfig worldConfig( DynamicsWorldConfig::New() );
321 DynamicsWorld world( DynamicsWorld::GetInstance( worldConfig ) );
325 // cannot create dynamics world, log failure and exit
326 DALI_TEST_CHECK( false );
330 Actor rootActor(Actor::New());
332 tet_infoline("UtcDaliDynamicsWorldDebugDrawMode - DynamicsWorld::GetRootActor");
333 Actor actor(world.GetRootActor());
334 DALI_TEST_CHECK( !actor );
336 tet_infoline("UtcDaliDynamicsWorldSetRootActor - DynamicsWorld::SetRootActor");
337 world.SetRootActor(rootActor);
338 DALI_TEST_CHECK(rootActor == world.GetRootActor());