[dali_2.0.15] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-Model3dView.cpp
1 /*
2  * Copyright (c) 2020 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-toolkit-test-suite-utils.h>
21 #include <dali-toolkit/dali-toolkit.h>
22 #include <dali-toolkit/public-api/controls/model3d-view/model3d-view.h>
23
24
25 using namespace Dali;
26 using namespace Dali::Toolkit;
27
28
29 void model_view_startup(void)
30 {
31   test_return_value = TET_UNDEF;
32 }
33
34 void model_view_cleanup(void)
35 {
36   test_return_value = TET_PASS;
37 }
38
39 namespace
40 {
41 const char* TEST_OBJ_FILE_NAME = TEST_RESOURCE_DIR "/Cube.obj";
42 const char* TEST_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal.mtl";
43 const char* TEST_RESOURCE_LOCATION = TEST_RESOURCE_DIR "/";
44 }
45
46 // Negative test case for a method
47 int UtcDaliModelViewUninitialized(void)
48 {
49   ToolkitTestApplication application;
50   tet_infoline(" UtcDaliModel3dViewUninitialized");
51
52   Toolkit::Model3dView view;
53
54   try
55   {
56     // New() must be called to create a Model3dView or it wont be valid.
57     Actor a = Actor::New();
58     view.Add( a );
59     DALI_TEST_CHECK( false );
60   }
61   catch (Dali::DaliException& e)
62   {
63     // Tests that a negative test of an assertion succeeds
64     DALI_TEST_PRINT_ASSERT( e );
65     DALI_TEST_CHECK(!view);
66   }
67   END_TEST;
68 }
69
70 // Positive test case for a method
71 int UtcDaliModelViewNew(void)
72 {
73   ToolkitTestApplication application;
74   tet_infoline(" UtcDaliModel3dViewNew");
75
76   Toolkit::Model3dView view = Toolkit::Model3dView::New();
77   DALI_TEST_CHECK( view );
78
79   Toolkit::Model3dView view2 = Toolkit::Model3dView::New("","","");
80   DALI_TEST_CHECK( view2 );
81   END_TEST;
82 }
83
84 // Positive test case for a method
85 int UtcDaliModelViewDownCast(void)
86 {
87   ToolkitTestApplication application;
88   tet_infoline(" UtcDaliModelViewDownCast");
89
90   Toolkit::Model3dView view = Toolkit::Model3dView::New();
91   BaseHandle handle(view);
92
93   Toolkit::Model3dView modelView = Toolkit::Model3dView::DownCast( handle );
94   DALI_TEST_CHECK( view );
95   DALI_TEST_CHECK( modelView );
96   DALI_TEST_CHECK( modelView == view );
97   END_TEST;
98 }
99
100
101 // Positive test case for a method
102 int UtcDaliModelViewPropertyNames(void)
103 {
104   ToolkitTestApplication application;
105   tet_infoline(" UtcDaliModel3dViewPropertyNames");
106
107   Toolkit::Model3dView view = Toolkit::Model3dView::New();
108   DALI_TEST_CHECK( view );
109
110   view.SetProperty( Model3dView::Property::GEOMETRY_URL, Dali::Property::Value( TEST_OBJ_FILE_NAME ) );
111   Property::Value val = view.GetProperty( Model3dView::Property::GEOMETRY_URL );
112   std::string obj_file_name;
113   DALI_TEST_CHECK( val.Get( obj_file_name ) );
114   DALI_TEST_EQUALS( obj_file_name, TEST_OBJ_FILE_NAME, TEST_LOCATION );
115
116   view.SetProperty( Model3dView::Property::MATERIAL_URL, Dali::Property::Value( TEST_MTL_FILE_NAME ) );
117   val = view.GetProperty( Model3dView::Property::MATERIAL_URL );
118   DALI_TEST_CHECK( val.Get( obj_file_name ) );
119   DALI_TEST_EQUALS( obj_file_name, TEST_MTL_FILE_NAME, TEST_LOCATION );
120
121   view.SetProperty( Model3dView::Property::IMAGES_URL, Dali::Property::Value( TEST_RESOURCE_LOCATION ) );
122   val = view.GetProperty( Model3dView::Property::IMAGES_URL );
123   DALI_TEST_CHECK( val.Get( obj_file_name ) );
124   DALI_TEST_EQUALS( obj_file_name, TEST_RESOURCE_LOCATION, TEST_LOCATION );
125
126   application.GetScene().Add(view);
127
128   END_TEST;
129 }
130
131 // Positive test case for a method
132 int UtcDaliModelViewAddRemove(void)
133 {
134   ToolkitTestApplication application;
135   tet_infoline(" UtcDaliModel3dViewAddRemove");
136
137   Toolkit::Model3dView view = Toolkit::Model3dView::New();
138   DALI_TEST_CHECK( view );
139
140   Actor actor = Actor::New();
141   DALI_TEST_CHECK( !actor.GetProperty< bool >( Actor::Property::CONNECTED_TO_SCENE ) );
142
143
144   view.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
145   view.SetProperty( Actor::Property::SIZE, application.GetScene().GetSize());
146   view.Add(actor);
147   application.GetScene().Add(view);
148
149   DALI_TEST_CHECK( actor.GetProperty< bool >( Actor::Property::CONNECTED_TO_SCENE ) );
150
151   view.Remove(actor);
152
153   DALI_TEST_CHECK( !actor.GetProperty< bool >( Actor::Property::CONNECTED_TO_SCENE ) );
154   END_TEST;
155 }
156
157
158 int UtcDaliModelCopyAndAssignment(void)
159 {
160   ToolkitTestApplication application;
161
162   Model3dView view = Toolkit::Model3dView::New();
163   DALI_TEST_CHECK( view );
164
165   Model3dView copy( view );
166   DALI_TEST_CHECK( view == copy );
167
168   Model3dView assign;
169   DALI_TEST_CHECK( ! assign );
170
171   assign = copy;
172   DALI_TEST_CHECK( assign == view );
173
174   END_TEST;
175 }
176
177 int UtcDaliModelMoveConstructor(void)
178 {
179   ToolkitTestApplication application;
180
181   Model3dView view = Toolkit::Model3dView::New();
182   DALI_TEST_EQUALS( 1, view.GetBaseObject().ReferenceCount(), TEST_LOCATION );
183   view.SetProperty( Actor::Property::SENSITIVE, false );
184   DALI_TEST_CHECK( false == view.GetProperty< bool >( Actor::Property::SENSITIVE ) );
185
186   Model3dView moved = std::move( view );
187   DALI_TEST_CHECK( moved );
188   DALI_TEST_EQUALS( 1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION );
189   DALI_TEST_CHECK( false == moved.GetProperty< bool >( Actor::Property::SENSITIVE ) );
190   DALI_TEST_CHECK( !view );
191
192   END_TEST;
193 }
194
195 int UtcDaliModelMoveAssignment(void)
196 {
197   ToolkitTestApplication application;
198
199   Model3dView view = Toolkit::Model3dView::New();
200   DALI_TEST_EQUALS( 1, view.GetBaseObject().ReferenceCount(), TEST_LOCATION );
201   view.SetProperty( Actor::Property::SENSITIVE, false );
202   DALI_TEST_CHECK( false == view.GetProperty< bool >( Actor::Property::SENSITIVE ) );
203
204   Model3dView moved;
205   moved = std::move( view );
206   DALI_TEST_CHECK( moved );
207   DALI_TEST_EQUALS( 1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION );
208   DALI_TEST_CHECK( false == moved.GetProperty< bool >( Actor::Property::SENSITIVE ) );
209   DALI_TEST_CHECK( !view );
210
211   END_TEST;
212 }
213
214 int UtcDaliModelTypeRegistry(void)
215 {
216   ToolkitTestApplication application;
217
218   TypeRegistry typeRegistry = TypeRegistry::Get();
219   DALI_TEST_CHECK( typeRegistry );
220
221   TypeInfo typeInfo = typeRegistry.GetTypeInfo( "Model3dView" );
222   DALI_TEST_CHECK( typeInfo );
223
224   BaseHandle handle = typeInfo.CreateInstance();
225   DALI_TEST_CHECK( handle );
226
227   Model3dView view = Model3dView::DownCast( handle );
228   DALI_TEST_CHECK( view );
229
230   END_TEST;
231 }
232
233 int UtcDaliModelOnSizeSet(void)
234 {
235   ToolkitTestApplication application;
236
237   Model3dView view = Toolkit::Model3dView::New();
238
239   application.GetScene().Add( view );
240
241   application.SendNotification();
242   application.Render();
243
244   Vector3 size( 200.0f, 300.0f, 0.0f );
245   view.SetProperty( Actor::Property::SIZE, size );
246
247   application.SendNotification();
248   application.Render();
249
250   DALI_TEST_EQUALS( view.GetCurrentProperty< Vector3 >( Actor::Property::SIZE ), size, TEST_LOCATION );
251
252   END_TEST;
253 }