Merge remote-tracking branch 'origin/tizen' into new_text
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-ObjectRegistry.cpp
1 /*
2  * Copyright (c) 2014 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
20 #include <stdlib.h>
21 #include <dali-test-suite-utils.h>
22 #include <dali/public-api/dali-core.h>
23
24 using namespace Dali;
25
26 #include "mesh-builder.h"
27
28 namespace
29 {
30
31 // Functors to test whether Object created/destroyed signal is emitted for different types of Objects
32
33 struct TestObjectDestroyedCallback
34 {
35   TestObjectDestroyedCallback(bool& signalReceived, Dali::RefObject*& objectPointer)
36   : mSignalVerified(signalReceived),
37     mObjectPointer(objectPointer)
38   {
39   }
40
41   void operator()(const Dali::RefObject* objectPointer)
42   {
43     tet_infoline("Verifying TestObjectDestroyedCallback()");
44
45     if(objectPointer == mObjectPointer)
46     {
47       mSignalVerified = true;
48     }
49   }
50
51   bool& mSignalVerified;
52   Dali::RefObject*& mObjectPointer;
53 };
54
55 struct TestActorCallback
56 {
57   TestActorCallback(bool& signalReceived)
58   : mSignalVerified(signalReceived)
59   {
60   }
61
62   void operator()(BaseHandle object)
63   {
64     tet_infoline("Verifying TestActorCallback()");
65     Actor actor = Actor::DownCast(object);
66     if(actor)
67     {
68       mSignalVerified = true;
69     }
70   }
71
72   bool& mSignalVerified;
73 };
74
75 struct TestCameraActorCallback
76 {
77   TestCameraActorCallback(bool& signalReceived)
78   : mSignalVerified(signalReceived)
79   {
80   }
81   void operator()(BaseHandle object)
82   {
83     tet_infoline("Verifying TestCameraActorCallback()");
84     CameraActor actor = CameraActor::DownCast(object);
85     if(actor)
86     {
87       mSignalVerified = true;
88     }
89   }
90   bool& mSignalVerified;
91 };
92
93 struct TestImageActorCallback
94 {
95   TestImageActorCallback(bool& signalReceived)
96   : mSignalVerified(signalReceived)
97   {
98   }
99   void operator()(BaseHandle object)
100   {
101     tet_infoline("Verifying TestImageActorCallback()");
102     ImageActor actor = ImageActor::DownCast(object);
103     if(actor)
104     {
105       mSignalVerified = true;
106     }
107   }
108   bool& mSignalVerified;
109 };
110
111 struct TestLayerCallback
112 {
113   TestLayerCallback(bool& signalReceived)
114   : mSignalVerified(signalReceived)
115   {
116   }
117   void operator()(BaseHandle object)
118   {
119     tet_infoline("Verifying TestLayerCallback()");
120     Layer actor = Layer::DownCast(object);
121     if(actor)
122     {
123       mSignalVerified = true;
124     }
125   }
126   bool& mSignalVerified;
127 };
128
129 struct TestLightActorCallback
130 {
131   TestLightActorCallback(bool& signalReceived)
132   : mSignalVerified(signalReceived)
133   {
134   }
135   void operator()(BaseHandle object)
136   {
137     tet_infoline("Verifying TestLightActorCallback()");
138     LightActor actor = LightActor::DownCast(object);
139     if(actor)
140     {
141       mSignalVerified = true;
142     }
143   }
144   bool& mSignalVerified;
145 };
146
147 struct TestMeshActorCallback
148 {
149   TestMeshActorCallback(bool& signalReceived)
150   : mSignalVerified(signalReceived)
151   {
152   }
153   void operator()(BaseHandle object)
154   {
155     tet_infoline("Verifying TestMeshActorCallback()");
156     MeshActor actor = MeshActor::DownCast(object);
157     if(actor)
158     {
159       mSignalVerified = true;
160     }
161   }
162   bool& mSignalVerified;
163 };
164
165 struct TestModelCallback
166 {
167   TestModelCallback(bool& signalReceived)
168   : mSignalVerified(signalReceived)
169   {
170   }
171   void operator()(BaseHandle object)
172   {
173     tet_infoline("Verifying TestModelCallback()");
174     Model actor = Model::DownCast(object);
175     if(actor)
176     {
177       mSignalVerified = true;
178     }
179   }
180   bool& mSignalVerified;
181 };
182
183 struct TestAnimationCallback
184 {
185   TestAnimationCallback(bool& signalReceived)
186   : mSignalVerified(signalReceived)
187   {
188   }
189   void operator()(BaseHandle object)
190   {
191     tet_infoline("Verifying TestAnimationCallback()");
192     Animation actor = Animation::DownCast(object);
193     if(actor)
194     {
195       mSignalVerified = true;
196     }
197   }
198   bool& mSignalVerified;
199 };
200
201 struct TestShaderEffectCallback
202 {
203   TestShaderEffectCallback(bool& signalReceived)
204   : mSignalVerified(signalReceived)
205   {
206   }
207   void operator()(BaseHandle object)
208   {
209     tet_infoline("Verifying TestShaderEffectCallback()");
210     ShaderEffect actor = ShaderEffect::DownCast(object);
211     if(actor)
212     {
213       mSignalVerified = true;
214     }
215   }
216   bool& mSignalVerified;
217 };
218
219
220 } // anonymous namespace
221
222
223
224
225 int UtcDaliObjectRegistryGet(void)
226 {
227   TestApplication application;
228
229   ObjectRegistry registry; //  like this for ctor code coverage
230   registry= Stage::GetCurrent().GetObjectRegistry();
231
232   DALI_TEST_CHECK( registry );
233   END_TEST;
234 }
235
236
237
238 int UtcDaliObjectRegistrySignalActorCreated(void)
239 {
240   tet_infoline("Testing GetObjectRegistry()");
241   TestApplication application;
242   ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
243   DALI_TEST_CHECK( registry );
244
245   bool verified = false;
246   TestActorCallback test(verified);
247
248   Dali::RefObject* objectPointer = NULL;
249   TestObjectDestroyedCallback test2(verified, objectPointer);
250
251   registry.ObjectCreatedSignal().Connect(&application, test);
252   registry.ObjectDestroyedSignal().Connect(&application, test2);
253
254   {
255     Actor actor = Actor::New();
256     DALI_TEST_CHECK( test.mSignalVerified );
257
258     verified = false;
259     objectPointer = actor.GetObjectPtr();
260   }
261   DALI_TEST_CHECK( test.mSignalVerified );
262   END_TEST;
263 }
264
265 int UtcDaliObjectRegistrySignalCameraCreated(void)
266 {
267   TestApplication application;
268
269   ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
270
271   bool verified = false;
272   TestCameraActorCallback test(verified);
273
274   Dali::RefObject* objectPointer = NULL;
275   TestObjectDestroyedCallback test2(verified, objectPointer);
276
277   registry.ObjectCreatedSignal().Connect(&application, test);
278   registry.ObjectDestroyedSignal().Connect(&application, test2);
279
280   {
281     CameraActor actor = CameraActor::New();
282     DALI_TEST_CHECK( test.mSignalVerified );
283
284     verified = false;
285     objectPointer = actor.GetObjectPtr();
286   }
287   DALI_TEST_CHECK( test.mSignalVerified );
288   END_TEST;
289 }
290
291 int UtcDaliObjectRegistrySignalImageActorCreated(void)
292 {
293   TestApplication application;
294   ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
295
296   static const char* TestImageFilename = "icon_wrt.png";
297   Image image = ResourceImage::New(TestImageFilename);
298
299   bool verified = false;
300   TestImageActorCallback test(verified);
301
302   Dali::RefObject* objectPointer = NULL;
303   TestObjectDestroyedCallback test2(verified, objectPointer);
304
305   registry.ObjectCreatedSignal().Connect(&application, test);
306   registry.ObjectDestroyedSignal().Connect(&application, test2);
307
308   {
309     ImageActor actor = ImageActor::New(image);
310     DALI_TEST_CHECK( test.mSignalVerified );
311
312     verified = false;
313     objectPointer = actor.GetObjectPtr();
314   }
315   DALI_TEST_CHECK( test.mSignalVerified );
316   END_TEST;
317 }
318
319 int UtcDaliObjectRegistrySignalLayerCreated(void)
320 {
321   TestApplication application;
322   ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
323
324   bool verified = false;
325   TestLayerCallback test(verified);
326
327   Dali::RefObject* objectPointer = NULL;
328   TestObjectDestroyedCallback test2(verified, objectPointer);
329
330   registry.ObjectCreatedSignal().Connect(&application, test);
331   registry.ObjectDestroyedSignal().Connect(&application, test2);
332
333   {
334     Layer actor = Layer::New();
335     DALI_TEST_CHECK( test.mSignalVerified );
336
337     verified = false;
338     objectPointer = actor.GetObjectPtr();
339   }
340   DALI_TEST_CHECK( test.mSignalVerified );
341   END_TEST;
342 }
343
344 int UtcDaliObjectRegistrySignalLightActorCreated(void)
345 {
346   TestApplication application;
347   ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
348
349   bool verified = false;
350   TestLightActorCallback test(verified);
351
352   Dali::RefObject* objectPointer = NULL;
353   TestObjectDestroyedCallback test2(verified, objectPointer);
354
355   registry.ObjectCreatedSignal().Connect(&application, test);
356   registry.ObjectDestroyedSignal().Connect(&application, test2);
357
358   {
359     LightActor actor = LightActor::New();
360     DALI_TEST_CHECK( test.mSignalVerified );
361
362     verified = false;
363     objectPointer = actor.GetObjectPtr();
364   }
365   DALI_TEST_CHECK( test.mSignalVerified );
366   END_TEST;
367 }
368
369 int UtcDaliObjectRegistrySignalMeshActorCreated(void)
370 {
371   TestApplication application;
372   ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
373
374   bool verified = false;
375   TestMeshActorCallback test(verified);
376
377   Dali::RefObject* objectPointer = NULL;
378   TestObjectDestroyedCallback test2(verified, objectPointer);
379
380   registry.ObjectCreatedSignal().Connect(&application, test);
381   registry.ObjectDestroyedSignal().Connect(&application, test2);
382
383   Mesh mesh = ConstructMesh(60);
384
385   {
386     MeshActor actor = MeshActor::New(mesh);
387
388     DALI_TEST_CHECK(actor);
389     DALI_TEST_CHECK( test.mSignalVerified );
390
391     verified = false;
392     objectPointer = actor.GetObjectPtr();
393   }
394   DALI_TEST_CHECK( test.mSignalVerified );
395   END_TEST;
396 }
397
398 int UtcDaliObjectRegistrySignalModelCreated(void)
399 {
400   TestApplication application;
401   ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
402
403   bool verified = false;
404   TestModelCallback test(verified);
405
406   Dali::RefObject* objectPointer = NULL;
407   TestObjectDestroyedCallback test2(verified, objectPointer);
408
409   registry.ObjectCreatedSignal().Connect(&application, test);
410   registry.ObjectDestroyedSignal().Connect(&application, test2);
411
412   {
413     Model model = Model::New("blah");
414     DALI_TEST_CHECK( test.mSignalVerified );
415
416     verified = false;
417     objectPointer = model.GetObjectPtr();
418   }
419   DALI_TEST_CHECK( test.mSignalVerified );
420   END_TEST;
421 }
422
423 int UtcDaliObjectRegistrySignalAnimationCreated(void)
424 {
425   TestApplication application;
426   ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
427
428   bool verified = false;
429   TestAnimationCallback test(verified);
430
431   Dali::RefObject* objectPointer = NULL;
432   TestObjectDestroyedCallback test2(verified, objectPointer);
433
434   registry.ObjectCreatedSignal().Connect(&application, test);
435   registry.ObjectDestroyedSignal().Connect(&application, test2);
436
437   {
438     Animation animation = Animation::New(1.0f);
439     DALI_TEST_CHECK( test.mSignalVerified );
440
441     verified = false;
442     objectPointer = animation.GetObjectPtr();
443   }
444   DALI_TEST_CHECK( test.mSignalVerified );
445   END_TEST;
446 }
447
448 int UtcDaliObjectRegistrySignalShaderEffectCreated(void)
449 {
450   TestApplication application;
451   ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
452
453   static const char* VertexSource =
454   "void main()\n"
455   "{\n"
456   "  gl_Position = uProjection * uModelView * vec4(aPosition, 1.0);\n"
457   "  vTexCoord = aTexCoord;\n"
458   "}\n";
459
460   static const char* FragmentSource =
461   "void main()\n"
462   "{\n"
463   "  gl_FragColor = texture2D( sTexture, vTexCoord ) * uColor;\n"
464   "}\n";
465
466   bool verified = false;
467   TestShaderEffectCallback test(verified);
468
469   Dali::RefObject* objectPointer = NULL;
470   TestObjectDestroyedCallback test2(verified, objectPointer);
471
472   registry.ObjectCreatedSignal().Connect(&application, test);
473   registry.ObjectDestroyedSignal().Connect(&application, test2);
474
475   {
476     ShaderEffect effect = ShaderEffect::New( VertexSource, FragmentSource );
477     DALI_TEST_CHECK( test.mSignalVerified );
478
479     verified = false;
480     objectPointer = effect.GetObjectPtr();
481   }
482   DALI_TEST_CHECK( test.mSignalVerified );
483   END_TEST;
484 }