2 * Copyright (c) 2020 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-test-suite-utils.h>
19 #include <dali/public-api/dali-core.h>
28 // Functors to test whether Object created/destroyed signal is emitted for different types of Objects
30 struct TestObjectDestroyedCallback
32 TestObjectDestroyedCallback(bool& signalReceived, Dali::RefObject*& objectPointer)
33 : mSignalVerified(signalReceived),
34 mObjectPointer(objectPointer)
38 void operator()(const Dali::RefObject* objectPointer)
40 tet_infoline("Verifying TestObjectDestroyedCallback()");
42 if(objectPointer == mObjectPointer)
44 mSignalVerified = true;
48 bool& mSignalVerified;
49 Dali::RefObject*& mObjectPointer;
52 struct TestActorCallback
54 TestActorCallback(bool& signalReceived)
55 : mSignalVerified(signalReceived)
59 void operator()(BaseHandle object)
61 tet_infoline("Verifying TestActorCallback()");
62 Actor actor = Actor::DownCast(object);
65 mSignalVerified = true;
69 bool& mSignalVerified;
72 struct TestCameraActorCallback
74 TestCameraActorCallback(bool& signalReceived)
75 : mSignalVerified(signalReceived)
78 void operator()(BaseHandle object)
80 tet_infoline("Verifying TestCameraActorCallback()");
81 CameraActor actor = CameraActor::DownCast(object);
84 mSignalVerified = true;
87 bool& mSignalVerified;
90 struct TestLayerCallback
92 TestLayerCallback(bool& signalReceived)
93 : mSignalVerified(signalReceived)
96 void operator()(BaseHandle object)
98 tet_infoline("Verifying TestLayerCallback()");
99 Layer actor = Layer::DownCast(object);
102 mSignalVerified = true;
105 bool& mSignalVerified;
108 struct TestAnimationCallback
110 TestAnimationCallback(bool& signalReceived)
111 : mSignalVerified(signalReceived)
114 void operator()(BaseHandle object)
116 tet_infoline("Verifying TestAnimationCallback()");
117 Animation actor = Animation::DownCast(object);
120 mSignalVerified = true;
123 bool& mSignalVerified;
126 } // anonymous namespace
128 int UtcDaliObjectRegistryGet(void)
130 TestApplication application;
132 ObjectRegistry registry; // like this for ctor code coverage
133 registry = application.GetCore().GetObjectRegistry();
135 DALI_TEST_CHECK(registry);
139 int UtcDaliObjectRegistryCopyConstructor(void)
141 TestApplication application;
143 ObjectRegistry myRegistry;
144 ObjectRegistry anotherRegistry(myRegistry);
146 DALI_TEST_EQUALS(myRegistry, anotherRegistry, TEST_LOCATION);
150 int UtcDaliObjectRegistryMoveConstructor(void)
152 TestApplication application;
154 ObjectRegistry registry = application.GetCore().GetObjectRegistry();
155 DALI_TEST_CHECK(registry);
156 DALI_TEST_EQUALS(2, registry.GetBaseObject().ReferenceCount(), TEST_LOCATION);
158 ObjectRegistry move = std::move(registry);
159 DALI_TEST_CHECK(move);
161 // Check that object is moved (not copied, so ref count keeps the same)
162 DALI_TEST_EQUALS(2, move.GetBaseObject().ReferenceCount(), TEST_LOCATION);
163 DALI_TEST_CHECK(!registry);
168 int UtcDaliObjectRegistryMoveAssignment(void)
170 TestApplication application;
172 ObjectRegistry registry = application.GetCore().GetObjectRegistry();
173 DALI_TEST_CHECK(registry);
174 DALI_TEST_EQUALS(2, registry.GetBaseObject().ReferenceCount(), TEST_LOCATION);
177 move = std::move(registry);
178 DALI_TEST_CHECK(move);
180 // Check that object is moved (not copied, so ref count keeps the same)
181 DALI_TEST_EQUALS(2, move.GetBaseObject().ReferenceCount(), TEST_LOCATION);
182 DALI_TEST_CHECK(!registry);
187 int UtcDaliObjectRegistrySignalActorCreated(void)
189 tet_infoline("Testing GetObjectRegistry()");
190 TestApplication application;
191 ObjectRegistry registry = application.GetCore().GetObjectRegistry();
192 DALI_TEST_CHECK(registry);
194 bool verified = false;
195 TestActorCallback test(verified);
197 Dali::RefObject* objectPointer = NULL;
198 TestObjectDestroyedCallback test2(verified, objectPointer);
200 registry.ObjectCreatedSignal().Connect(&application, test);
201 registry.ObjectDestroyedSignal().Connect(&application, test2);
204 Actor actor = Actor::New();
205 DALI_TEST_CHECK(test.mSignalVerified);
208 objectPointer = actor.GetObjectPtr();
210 DALI_TEST_CHECK(test.mSignalVerified);
214 int UtcDaliObjectRegistrySignalCameraCreated(void)
216 TestApplication application;
218 ObjectRegistry registry = application.GetCore().GetObjectRegistry();
220 bool verified = false;
221 TestCameraActorCallback test(verified);
223 Dali::RefObject* objectPointer = NULL;
224 TestObjectDestroyedCallback test2(verified, objectPointer);
226 registry.ObjectCreatedSignal().Connect(&application, test);
227 registry.ObjectDestroyedSignal().Connect(&application, test2);
230 CameraActor actor = CameraActor::New();
231 DALI_TEST_CHECK(test.mSignalVerified);
234 objectPointer = actor.GetObjectPtr();
236 DALI_TEST_CHECK(test.mSignalVerified);
240 int UtcDaliObjectRegistrySignalLayerCreated(void)
242 TestApplication application;
243 ObjectRegistry registry = application.GetCore().GetObjectRegistry();
245 bool verified = false;
246 TestLayerCallback test(verified);
248 Dali::RefObject* objectPointer = NULL;
249 TestObjectDestroyedCallback test2(verified, objectPointer);
251 registry.ObjectCreatedSignal().Connect(&application, test);
252 registry.ObjectDestroyedSignal().Connect(&application, test2);
255 Layer actor = Layer::New();
256 DALI_TEST_CHECK(test.mSignalVerified);
259 objectPointer = actor.GetObjectPtr();
261 DALI_TEST_CHECK(test.mSignalVerified);
265 int UtcDaliObjectRegistrySignalAnimationCreated(void)
267 TestApplication application;
268 ObjectRegistry registry = application.GetCore().GetObjectRegistry();
270 bool verified = false;
271 TestAnimationCallback test(verified);
273 Dali::RefObject* objectPointer = NULL;
274 TestObjectDestroyedCallback test2(verified, objectPointer);
276 registry.ObjectCreatedSignal().Connect(&application, test);
277 registry.ObjectDestroyedSignal().Connect(&application, test2);
280 Animation animation = Animation::New(1.0f);
281 DALI_TEST_CHECK(test.mSignalVerified);
284 objectPointer = animation.GetObjectPtr();
286 DALI_TEST_CHECK(test.mSignalVerified);
290 int UtcDaliObjectRegistryObjectCreatedSignalNegative(void)
292 TestApplication application;
293 Dali::ObjectRegistry instance;
296 instance.ObjectCreatedSignal();
297 DALI_TEST_CHECK(false); // Should not get here
301 DALI_TEST_CHECK(true); // We expect an assert
306 int UtcDaliObjectRegistryObjectDestroyedSignalNegative(void)
308 TestApplication application;
309 Dali::ObjectRegistry instance;
312 instance.ObjectDestroyedSignal();
313 DALI_TEST_CHECK(false); // Should not get here
317 DALI_TEST_CHECK(true); // We expect an assert