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