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