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