2 * Copyright (c) 2023 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 #include <dali-toolkit-test-suite-utils.h>
19 #include <dali-toolkit/dali-toolkit.h>
23 #include <dali-scene3d/public-api/model-motion/motion-index/blend-shape-index.h>
24 #include <dali-scene3d/public-api/model-motion/motion-index/motion-index.h>
27 using namespace Dali::Toolkit;
28 using namespace Dali::Scene3D;
30 void model_motion_blend_shape_index_startup(void)
32 test_return_value = TET_UNDEF;
35 void model_motion_blend_shape_index_cleanup(void)
37 test_return_value = TET_PASS;
42 const char* const WEIGHTS_UNIFORM = "uBlendShapeWeight";
44 std::string GetPropertyNameFromIndex(int index)
48 char weightNameBuffer[32];
50 // Get return value of snprintf to avoid SVACE.
51 [[maybe_unused]] auto prefixSize = snprintf(weightNameBuffer, sizeof(weightNameBuffer), "%s[%d]", WEIGHTS_UNIFORM, index);
53 return weightNameBuffer;
59 // Positive test case for a method
60 int UtcDaliBlendShapeIndexNew(void)
62 ToolkitTestApplication application;
63 tet_infoline(" UtcDaliBlendShapeIndexNew");
65 BlendShapeIndex blendShapeIndex = BlendShapeIndex::New();
66 DALI_TEST_CHECK(blendShapeIndex);
67 DALI_TEST_EQUALS(blendShapeIndex.GetModelNodeId().stringKey, "", TEST_LOCATION);
68 DALI_TEST_EQUALS(blendShapeIndex.GetBlendShapeId().indexKey, Property::INVALID_INDEX, TEST_LOCATION);
70 blendShapeIndex = BlendShapeIndex::New("dummy", 3u);
71 DALI_TEST_CHECK(blendShapeIndex);
72 DALI_TEST_EQUALS(blendShapeIndex.GetModelNodeId().stringKey, "dummy", TEST_LOCATION);
73 DALI_TEST_EQUALS(blendShapeIndex.GetBlendShapeId().indexKey, 3u, TEST_LOCATION);
77 // Positive test case for a method
78 int UtcDaliBlendShapeIndexDownCast(void)
80 ToolkitTestApplication application;
81 tet_infoline(" UtcDaliBlendShapeIndexDownCast");
83 BlendShapeIndex blendShapeIndex = BlendShapeIndex::New();
84 BaseHandle handle(blendShapeIndex);
86 BlendShapeIndex blendShapeIndex2 = BlendShapeIndex::DownCast(handle);
87 DALI_TEST_CHECK(blendShapeIndex);
88 DALI_TEST_CHECK(blendShapeIndex2);
89 DALI_TEST_CHECK(blendShapeIndex2 == blendShapeIndex);
93 int UtcDaliBlendShapeIndexTypeRegistry(void)
95 ToolkitTestApplication application;
97 TypeRegistry typeRegistry = TypeRegistry::Get();
98 DALI_TEST_CHECK(typeRegistry);
100 TypeInfo typeInfo = typeRegistry.GetTypeInfo("BlendShapeIndex");
101 DALI_TEST_CHECK(typeInfo);
103 BaseHandle handle = typeInfo.CreateInstance();
104 DALI_TEST_CHECK(handle);
106 BlendShapeIndex blendShapeIndex = BlendShapeIndex::DownCast(handle);
107 DALI_TEST_CHECK(blendShapeIndex);
112 int UtcDaliBlendShapeIndexCopyAndAssignment(void)
114 ToolkitTestApplication application;
116 BlendShapeIndex blendShapeIndex = BlendShapeIndex::New();
117 DALI_TEST_CHECK(blendShapeIndex);
119 BlendShapeIndex copy(blendShapeIndex);
120 DALI_TEST_CHECK(blendShapeIndex == copy);
122 BlendShapeIndex assign;
123 DALI_TEST_CHECK(!assign);
126 DALI_TEST_CHECK(assign == blendShapeIndex);
131 int UtcDaliBlendShapeIndexMoveConstructor(void)
133 ToolkitTestApplication application;
135 BlendShapeIndex blendShapeIndex = BlendShapeIndex::New();
136 DALI_TEST_EQUALS(1, blendShapeIndex.GetBaseObject().ReferenceCount(), TEST_LOCATION);
138 BlendShapeIndex moved = std::move(blendShapeIndex);
139 DALI_TEST_CHECK(moved);
140 DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION);
141 DALI_TEST_CHECK(!blendShapeIndex);
146 int UtcDaliBlendShapeIndexMoveAssignment(void)
148 ToolkitTestApplication application;
150 BlendShapeIndex blendShapeIndex = BlendShapeIndex::New();
151 DALI_TEST_EQUALS(1, blendShapeIndex.GetBaseObject().ReferenceCount(), TEST_LOCATION);
153 BlendShapeIndex moved;
154 moved = std::move(blendShapeIndex);
155 DALI_TEST_CHECK(moved);
156 DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION);
163 int UtcDaliBlendShapeIndexGetPropertyName(void)
165 std::string expectPropertyName = "";
166 Property::Index expectPropertyIndex = Property::INVALID_INDEX;
168 uint32_t blendShapeIndex;
170 MotionIndex index = BlendShapeIndex::New();
172 // Invalid motion index return empty string, invalid index
173 DALI_TEST_EQUALS(expectPropertyName, index.GetPropertyName(), TEST_LOCATION);
174 DALI_TEST_EQUALS(expectPropertyIndex, index.GetPropertyIndex(), TEST_LOCATION);
176 blendShapeIndex = 0u;
177 index = BlendShapeIndex::New("", blendShapeIndex);
178 expectPropertyName = GetPropertyNameFromIndex(blendShapeIndex);
179 DALI_TEST_EQUALS(expectPropertyName, index.GetPropertyName(), TEST_LOCATION);
181 blendShapeIndex = 45u;
182 index = BlendShapeIndex::New("", blendShapeIndex);
183 expectPropertyName = GetPropertyNameFromIndex(blendShapeIndex);
184 DALI_TEST_EQUALS(expectPropertyName, index.GetPropertyName(), TEST_LOCATION);
186 blendShapeIndex = 109u;
187 index = BlendShapeIndex::New("", blendShapeIndex);
188 expectPropertyName = GetPropertyNameFromIndex(blendShapeIndex);
189 DALI_TEST_EQUALS(expectPropertyName, index.GetPropertyName(), TEST_LOCATION);
194 int UtcDaliBlendShapeIndexSetGetBlendShapeId(void)
196 Property::Index expectPropertyIndex = 0u;
198 BlendShapeIndex index = BlendShapeIndex::New("", expectPropertyIndex);
200 // Invalid motion index return empty string, invalid index
201 DALI_TEST_CHECK(index.GetBlendShapeId().type == Property::Key::Type::INDEX);
202 DALI_TEST_EQUALS(expectPropertyIndex, index.GetBlendShapeId().indexKey, TEST_LOCATION);
204 std::string expectPropertyName = "hello";
205 index.SetBlendShapeId(expectPropertyName);
206 DALI_TEST_CHECK(index.GetBlendShapeId().type == Property::Key::Type::STRING);
207 DALI_TEST_EQUALS(expectPropertyName, index.GetBlendShapeId().stringKey, TEST_LOCATION);
209 expectPropertyIndex = 100u;
210 index.SetBlendShapeId(expectPropertyIndex);
211 DALI_TEST_CHECK(index.GetBlendShapeId().type == Property::Key::Type::INDEX);
212 DALI_TEST_EQUALS(expectPropertyIndex, index.GetBlendShapeId().indexKey, TEST_LOCATION);