[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-scene3d / utc-Dali-ModelPrimitive.cpp
1 /*
2  * Copyright (c) 2023 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 <stdlib.h>
21 #include <iostream>
22
23 #include <dali-scene3d/public-api/model-components/model-primitive.h>
24
25 using namespace Dali;
26 using namespace Dali::Toolkit;
27
28 void model_components_model_primitive_startup(void)
29 {
30   test_return_value = TET_UNDEF;
31 }
32
33 void model_components_model_primitive_cleanup(void)
34 {
35   test_return_value = TET_PASS;
36 }
37
38 namespace
39 {
40 } // namespace
41
42 // Positive test case for a method
43 int UtcDaliModelPrimitiveNew(void)
44 {
45   ToolkitTestApplication application;
46   tet_infoline(" UtcDaliModelPrimitiveNew");
47
48   Scene3D::ModelPrimitive modelPrimitive = Scene3D::ModelPrimitive::New();
49   DALI_TEST_CHECK(modelPrimitive);
50   END_TEST;
51 }
52
53 // Positive test case for a method
54 int UtcDaliModelPrimitiveDownCast(void)
55 {
56   ToolkitTestApplication application;
57   tet_infoline(" UtcDaliModelPrimitiveDownCast");
58
59   Scene3D::ModelPrimitive modelPrimitive = Scene3D::ModelPrimitive::New();
60   BaseHandle              handle(modelPrimitive);
61
62   Scene3D::ModelPrimitive modelPrimitive2 = Scene3D::ModelPrimitive::DownCast(handle);
63   DALI_TEST_CHECK(modelPrimitive);
64   DALI_TEST_CHECK(modelPrimitive2);
65   DALI_TEST_CHECK(modelPrimitive2 == modelPrimitive);
66   END_TEST;
67 }
68
69 int UtcDaliModelPrimitiveTypeRegistry(void)
70 {
71   ToolkitTestApplication application;
72
73   TypeRegistry typeRegistry = TypeRegistry::Get();
74   DALI_TEST_CHECK(typeRegistry);
75
76   TypeInfo typeInfo = typeRegistry.GetTypeInfo("ModelPrimitive");
77   DALI_TEST_CHECK(typeInfo);
78
79   BaseHandle handle = typeInfo.CreateInstance();
80   DALI_TEST_CHECK(handle);
81
82   Scene3D::ModelPrimitive modelPrimitive = Scene3D::ModelPrimitive::DownCast(handle);
83   DALI_TEST_CHECK(modelPrimitive);
84
85   END_TEST;
86 }
87
88 int UtcDaliModelPrimitiveCopyAndAssignment(void)
89 {
90   ToolkitTestApplication application;
91
92   Scene3D::ModelPrimitive modelPrimitive = Scene3D::ModelPrimitive::New();
93   DALI_TEST_CHECK(modelPrimitive);
94
95   Scene3D::ModelPrimitive copy(modelPrimitive);
96   DALI_TEST_CHECK(modelPrimitive == copy);
97
98   Scene3D::ModelPrimitive assign;
99   DALI_TEST_CHECK(!assign);
100
101   assign = copy;
102   DALI_TEST_CHECK(assign == modelPrimitive);
103
104   END_TEST;
105 }
106
107 int UtcDaliModelPrimitiveMoveConstructor(void)
108 {
109   ToolkitTestApplication application;
110
111   Scene3D::ModelPrimitive modelPrimitive = Scene3D::ModelPrimitive::New();
112   DALI_TEST_EQUALS(1, modelPrimitive.GetBaseObject().ReferenceCount(), TEST_LOCATION);
113
114   Scene3D::ModelPrimitive moved = std::move(modelPrimitive);
115   DALI_TEST_CHECK(moved);
116   DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION);
117   DALI_TEST_CHECK(!modelPrimitive);
118
119   END_TEST;
120 }
121
122 int UtcDaliModelPrimitiveMoveAssignment(void)
123 {
124   ToolkitTestApplication application;
125
126   Scene3D::ModelPrimitive modelPrimitive = Scene3D::ModelPrimitive::New();
127   DALI_TEST_EQUALS(1, modelPrimitive.GetBaseObject().ReferenceCount(), TEST_LOCATION);
128
129   Scene3D::ModelPrimitive moved;
130   moved = std::move(modelPrimitive);
131   DALI_TEST_CHECK(moved);
132   DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION);
133
134   END_TEST;
135 }
136
137 // Method test
138 int UtcDaliModelPrimitiveSetGetGeometry(void)
139 {
140   ToolkitTestApplication application;
141
142   Scene3D::ModelPrimitive modelPrimitive = Scene3D::ModelPrimitive::New();
143
144   tet_printf("Check primitive don't have renderer initial time\n");
145
146   DALI_TEST_CHECK(!modelPrimitive.GetGeometry());
147
148   Dali::Geometry geometry = Dali::Geometry::New();
149
150   modelPrimitive.SetGeometry(geometry);
151   DALI_TEST_CHECK(geometry == modelPrimitive.GetGeometry());
152
153   tet_printf("Replace as new Renderer\n");
154
155   Dali::Geometry geometry2 = Dali::Geometry::New();
156
157   modelPrimitive.SetGeometry(geometry2);
158   DALI_TEST_CHECK(geometry != modelPrimitive.GetGeometry());
159   DALI_TEST_CHECK(geometry2 == modelPrimitive.GetGeometry());
160   END_TEST;
161 }
162
163 int UtcDaliModelPrimitiveSetGetMaterial(void)
164 {
165   ToolkitTestApplication application;
166
167   Scene3D::ModelPrimitive modelPrimitive = Scene3D::ModelPrimitive::New();
168
169   tet_printf("Check primitive don't have material initial time\n");
170
171   DALI_TEST_CHECK(!modelPrimitive.GetMaterial());
172
173   Dali::Scene3D::Material material = Dali::Scene3D::Material::New();
174
175   modelPrimitive.SetMaterial(material);
176   DALI_TEST_CHECK(material == modelPrimitive.GetMaterial());
177
178   tet_printf("Replace as new Material\n");
179
180   Dali::Scene3D::Material material2 = Dali::Scene3D::Material::New();
181
182   modelPrimitive.SetMaterial(material2);
183   DALI_TEST_CHECK(material != modelPrimitive.GetMaterial());
184   DALI_TEST_CHECK(material2 == modelPrimitive.GetMaterial());
185
186   END_TEST;
187 }