0091f141e5e0a473d01ab87b0beae4c29c6b9821
[platform/core/uifw/dali-adaptor.git] / automated-tests / src / dali-adaptor / utc-Dali-Application.cpp
1 /*
2  * Copyright (c) 2021 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-test-suite-utils.h>
19 #include <dali/dali.h>
20 #include <dali/devel-api/adaptor-framework/application-devel.h>
21 #include <stdlib.h>
22
23 using namespace Dali;
24
25 void utc_dali_application_startup(void)
26 {
27   test_return_value = TET_UNDEF;
28 }
29
30 void utc_dali_application_cleanup(void)
31 {
32   test_return_value = TET_PASS;
33 }
34
35 namespace
36 {
37 struct MyTestApp : public ConnectionTracker
38 {
39   MyTestApp(Application& app)
40   : initCalled(false),
41     application(app)
42   {
43     application.InitSignal().Connect(this, &MyTestApp::Create);
44   }
45
46   void Create(Application& app)
47   {
48     initCalled = true;
49   }
50
51   void Quit()
52   {
53     application.Quit();
54   }
55
56   // Data
57   bool         initCalled;
58   Application& application;
59 };
60
61 void ApplicationSignalCallback(Application& app)
62 {
63 }
64
65 void ApplicationControlSignalCallback(Application&, void*)
66 {
67 }
68
69 } // unnamed namespace
70
71 void LowBatterySignalCallback(Dali::DeviceStatus::Battery::Status status)
72 {
73 }
74
75 void LowMemorySignalCallback(Dali::DeviceStatus::Memory::Status status)
76 {
77 }
78
79 int UtcDaliApplicationNew01(void)
80 {
81   Application application = Application::New();
82
83   MyTestApp testApp(application);
84
85   DALI_TEST_CHECK(application);
86
87   END_TEST;
88 }
89
90 int UtcDaliApplicationNew02(void)
91 {
92   int         argc(1);
93   const char* argList[1] = {"program"};
94   char**      argv       = const_cast<char**>(argList);
95
96   Application application = Application::New(&argc, &argv);
97
98   MyTestApp testApp(application);
99
100   DALI_TEST_CHECK(application);
101
102   END_TEST;
103 }
104
105 int UtcDaliApplicationNew03(void)
106 {
107   int         argc(1);
108   const char* argList[1] = {"program"};
109   char**      argv       = const_cast<char**>(argList);
110
111   Application application = Application::New(&argc, &argv, "stylesheet");
112
113   MyTestApp testApp(application);
114
115   DALI_TEST_CHECK(application);
116
117   END_TEST;
118 }
119
120 int UtcDaliApplicationNew04(void)
121 {
122   int         argc(1);
123   const char* argList[1] = {"program"};
124   char**      argv       = const_cast<char**>(argList);
125
126   Application application = Application::New(&argc, &argv, "stylesheet", Application::TRANSPARENT);
127
128   MyTestApp testApp(application);
129
130   DALI_TEST_CHECK(application);
131
132   END_TEST;
133 }
134
135 int UtcDaliApplicationNew05(void)
136 {
137   int         argc(1);
138   const char* argList[1] = {"program"};
139   char**      argv       = const_cast<char**>(argList);
140
141   Application application = DevelApplication::New(&argc, &argv, "stylesheet", Application::WINDOW_MODE::OPAQUE, PositionSize(), WindowType::IME);
142
143   MyTestApp testApp(application);
144
145   DALI_TEST_CHECK(application);
146
147   END_TEST;
148 }
149
150 int UtcDaliApplicationCopyAndAssignment(void)
151 {
152   Application application = Application::New();
153   Application copy(application);
154   DALI_TEST_CHECK(copy == application);
155
156   Application assigned;
157   DALI_TEST_CHECK(!assigned);
158   assigned = application;
159   DALI_TEST_CHECK(copy == assigned);
160
161   END_TEST;
162 }
163
164 int UtcDaliApplicationMoveConstructor(void)
165 {
166   Application application = Application::New();
167   DALI_TEST_CHECK(application);
168   DALI_TEST_EQUALS(1, application.GetBaseObject().ReferenceCount(), TEST_LOCATION);
169
170   Application moved = std::move(application);
171   DALI_TEST_CHECK(moved);
172   DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION);
173   DALI_TEST_CHECK(!application);
174
175   END_TEST;
176 }
177
178 int UtcDaliApplicationMoveAssignment(void)
179 {
180   Application application = Application::New();
181   DALI_TEST_CHECK(application);
182   DALI_TEST_EQUALS(1, application.GetBaseObject().ReferenceCount(), TEST_LOCATION);
183
184   Application moved;
185   moved = std::move(application);
186   DALI_TEST_CHECK(moved);
187   DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION);
188   DALI_TEST_CHECK(!application);
189
190   END_TEST;
191 }
192
193 int UtcDaliApplicationMainLoop01N(void)
194 {
195   Application application;
196
197   try
198   {
199     application.MainLoop();
200     DALI_TEST_CHECK(false); // Should not get here
201   }
202   catch(...)
203   {
204     DALI_TEST_CHECK(true);
205   }
206
207   END_TEST;
208 }
209
210 int UtcDaliApplicationLowerN(void)
211 {
212   Application application;
213
214   try
215   {
216     application.Lower();
217     DALI_TEST_CHECK(false); // Should not get here
218   }
219   catch(...)
220   {
221     DALI_TEST_CHECK(true);
222   }
223
224   END_TEST;
225 }
226
227 int UtcDaliApplicationQuitN(void)
228 {
229   Application application;
230
231   try
232   {
233     application.Quit();
234     DALI_TEST_CHECK(false); // Should not get here
235   }
236   catch(...)
237   {
238     DALI_TEST_CHECK(true);
239   }
240
241   END_TEST;
242 }
243
244 int UtcDaliApplicationAddIdleN(void)
245 {
246   Application application;
247
248   try
249   {
250     CallbackBase* callback = NULL;
251     application.AddIdle(callback);
252     DALI_TEST_CHECK(false); // Should not get here
253   }
254   catch(...)
255   {
256     DALI_TEST_CHECK(true);
257   }
258
259   END_TEST;
260 }
261
262 int UtcDaliApplicationGetWindowN(void)
263 {
264   Application application;
265
266   try
267   {
268     (void)application.GetWindow();
269     DALI_TEST_CHECK(false); // Should not get here
270   }
271   catch(...)
272   {
273     DALI_TEST_CHECK(true);
274   }
275
276   END_TEST;
277 }
278
279 int UtcDaliApplicationInitSignalP(void)
280 {
281   Application application = Application::New();
282   application.InitSignal().Connect(&ApplicationSignalCallback);
283   DALI_TEST_CHECK(application);
284
285   END_TEST;
286 }
287
288 int UtcDaliApplicationInitSignalN(void)
289 {
290   Application application;
291
292   try
293   {
294     application.InitSignal().Connect(&ApplicationSignalCallback);
295     DALI_TEST_CHECK(false); // Should not get here
296   }
297   catch(...)
298   {
299     DALI_TEST_CHECK(true);
300   }
301
302   END_TEST;
303 }
304
305 int UtcDaliApplicationTerminateSignalP(void)
306 {
307   Application application = Application::New();
308   application.TerminateSignal().Connect(&ApplicationSignalCallback);
309   DALI_TEST_CHECK(application);
310
311   END_TEST;
312 }
313
314 int UtcDaliApplicationTerminateSignalN(void)
315 {
316   Application application;
317
318   try
319   {
320     application.TerminateSignal().Connect(&ApplicationSignalCallback);
321     DALI_TEST_CHECK(false); // Should not get here
322   }
323   catch(...)
324   {
325     DALI_TEST_CHECK(true);
326   }
327
328   END_TEST;
329 }
330
331 int UtcDaliApplicationPauseSignalP(void)
332 {
333   Application application = Application::New();
334   application.PauseSignal().Connect(&ApplicationSignalCallback);
335   DALI_TEST_CHECK(application);
336
337   END_TEST;
338 }
339
340 int UtcDaliApplicationPauseSignalN(void)
341 {
342   Application application;
343
344   try
345   {
346     application.PauseSignal().Connect(&ApplicationSignalCallback);
347     DALI_TEST_CHECK(false); // Should not get here
348   }
349   catch(...)
350   {
351     DALI_TEST_CHECK(true);
352   }
353
354   END_TEST;
355 }
356
357 int UtcDaliApplicationResumeSignalP(void)
358 {
359   Application application = Application::New();
360   application.ResumeSignal().Connect(&ApplicationSignalCallback);
361   DALI_TEST_CHECK(application);
362
363   END_TEST;
364 }
365
366 int UtcDaliApplicationResumeSignalN(void)
367 {
368   Application application;
369
370   try
371   {
372     application.ResumeSignal().Connect(&ApplicationSignalCallback);
373     DALI_TEST_CHECK(false); // Should not get here
374   }
375   catch(...)
376   {
377     DALI_TEST_CHECK(true);
378   }
379
380   END_TEST;
381 }
382
383 int UtcDaliApplicationResetSignalP(void)
384 {
385   Application application = Application::New();
386   application.ResetSignal().Connect(&ApplicationSignalCallback);
387   DALI_TEST_CHECK(application);
388
389   END_TEST;
390 }
391
392 int UtcDaliApplicationResetSignalN(void)
393 {
394   Application application;
395
396   try
397   {
398     application.ResetSignal().Connect(&ApplicationSignalCallback);
399     DALI_TEST_CHECK(false); // Should not get here
400   }
401   catch(...)
402   {
403     DALI_TEST_CHECK(true);
404   }
405
406   END_TEST;
407 }
408
409 int UtcDaliApplicationlControlSignalP(void)
410 {
411   Application application = Application::New();
412   application.AppControlSignal().Connect(&ApplicationControlSignalCallback);
413   DALI_TEST_CHECK(application);
414
415   END_TEST;
416 }
417
418 int UtcDaliApplicationlControlSignalN(void)
419 {
420   Application application;
421
422   try
423   {
424     application.AppControlSignal().Connect(&ApplicationControlSignalCallback);
425     DALI_TEST_CHECK(false); // Should not get here
426   }
427   catch(...)
428   {
429     DALI_TEST_CHECK(true);
430   }
431
432   END_TEST;
433 }
434
435 int UtcDaliApplicationLanguageChangedSignalP(void)
436 {
437   Application application = Application::New();
438   application.LanguageChangedSignal().Connect(&ApplicationSignalCallback);
439   DALI_TEST_CHECK(application);
440
441   END_TEST;
442 }
443
444 int UtcDaliApplicationLanguageChangedSignalN(void)
445 {
446   Application application;
447
448   try
449   {
450     application.LanguageChangedSignal().Connect(&ApplicationSignalCallback);
451     DALI_TEST_CHECK(false); // Should not get here
452   }
453   catch(...)
454   {
455     DALI_TEST_CHECK(true);
456   }
457
458   END_TEST;
459 }
460
461 int UtcDaliApplicationRegionChangedSignalP(void)
462 {
463   Application application = Application::New();
464   application.RegionChangedSignal().Connect(&ApplicationSignalCallback);
465   DALI_TEST_CHECK(application);
466
467   END_TEST;
468 }
469
470 int UtcDaliApplicationRegionChangedSignalN(void)
471 {
472   Application application;
473
474   try
475   {
476     application.RegionChangedSignal().Connect(&ApplicationSignalCallback);
477     DALI_TEST_CHECK(false); // Should not get here
478   }
479   catch(...)
480   {
481     DALI_TEST_CHECK(true);
482   }
483
484   END_TEST;
485 }
486
487 int UtcDaliApplicationLowBatterySignalP(void)
488 {
489   Application application = Application::New();
490   application.LowBatterySignal().Connect(&LowBatterySignalCallback);
491   DALI_TEST_CHECK(application);
492
493   END_TEST;
494 }
495
496 int UtcDaliApplicationLowBatterySignalN(void)
497 {
498   Application application;
499
500   try
501   {
502     application.LowBatterySignal().Connect(&LowBatterySignalCallback);
503     DALI_TEST_CHECK(false); // Should not get here
504   }
505   catch(...)
506   {
507     DALI_TEST_CHECK(true);
508   }
509
510   END_TEST;
511 }
512
513 int UtcDaliApplicationLowMemorySignalP(void)
514 {
515   Application application = Application::New();
516   application.LowMemorySignal().Connect(&LowMemorySignalCallback);
517   DALI_TEST_CHECK(application);
518
519   END_TEST;
520 }
521
522 int UtcDaliApplicationLowMemorySignalN(void)
523 {
524   Application application;
525
526   try
527   {
528     application.LowMemorySignal().Connect(&LowMemorySignalCallback);
529     DALI_TEST_CHECK(false); // Should not get here
530   }
531   catch(...)
532   {
533     DALI_TEST_CHECK(true);
534   }
535
536   END_TEST;
537 }
538
539 int UtcDaliApplicationGetResourcePathP(void)
540 {
541   Application application = Application::New();
542   std::string result("**invalid path**"); // Calling GetResourcePath should replace this with a system dependent path or "".
543   result = application.GetResourcePath();
544   DALI_TEST_CHECK(result != "**invalid path**");
545
546   END_TEST;
547 }
548
549 int UtcDaliApplicationGetRegionP(void)
550 {
551   Application application = Application::New();
552   std::string result;
553   result = application.GetRegion();
554   DALI_TEST_CHECK(result == "NOT_SUPPORTED"); // Not supported in UBUNTU
555
556   END_TEST;
557 }
558
559 int UtcDaliApplicationGetLanguageP(void)
560 {
561   Application application = Application::New();
562   std::string result;
563   result = application.GetLanguage();
564   DALI_TEST_CHECK(result == "NOT_SUPPORTED"); // Not supported in UBUNTU
565
566   END_TEST;
567 }
568
569 int UtcDaliApplicationGetObjectRegistryN(void)
570 {
571   Application application = Application::New();
572   DALI_TEST_CHECK(!application.GetObjectRegistry());
573   END_TEST;
574 }
575
576 int UtcDaliApplicationGetControllerN(void)
577 {
578   Application application;
579
580   try
581   {
582     application.GetController();
583     DALI_TEST_CHECK(false); // Should not get here
584   }
585   catch(...)
586   {
587     DALI_TEST_CHECK(true);
588   }
589
590   END_TEST;
591 }
592
593 int UtcDaliApplicationAddIdleWithReturnValueN(void)
594 {
595   Application application;
596
597   try
598   {
599     DevelApplication::AddIdleWithReturnValue(application, nullptr);
600     DALI_TEST_CHECK(false); // Should not get here
601   }
602   catch(...)
603   {
604     DALI_TEST_CHECK(true);
605   }
606
607   END_TEST;
608 }
609
610 int UtcDaliApplicationGetDataPathP(void)
611 {
612   setenv("DALI_APPLICATION_DATA_DIR", "MyDataPath", 1);
613   std::string dataPath = DevelApplication::GetDataPath();
614   DALI_TEST_EQUALS(dataPath, "MyDataPath", TEST_LOCATION);
615   END_TEST;
616 }
617
618 int UtcDaliApplicationDownCastN(void)
619 {
620   Application application = DevelApplication::DownCast(nullptr);
621   DALI_TEST_CHECK(!application);
622   END_TEST;
623 }