[dali_2.3.25] Merge branch 'devel/master'
[platform/core/uifw/dali-adaptor.git] / automated-tests / src / dali-adaptor / utc-Dali-Application.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-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 void OnDeviceOrientationChangedSignalCallback(DeviceStatus::Orientation::Status status)
80 {
81 }
82
83 int UtcDaliApplicationNew01(void)
84 {
85   Application application = Application::New();
86
87   MyTestApp testApp(application);
88
89   DALI_TEST_CHECK(application);
90
91   END_TEST;
92 }
93
94 int UtcDaliApplicationNew02(void)
95 {
96   int         argc(1);
97   const char* argList[1] = {"program"};
98   char**      argv       = const_cast<char**>(argList);
99
100   Application application = Application::New(&argc, &argv);
101
102   MyTestApp testApp(application);
103
104   DALI_TEST_CHECK(application);
105
106   END_TEST;
107 }
108
109 int UtcDaliApplicationNew03(void)
110 {
111   int         argc(1);
112   const char* argList[1] = {"program"};
113   char**      argv       = const_cast<char**>(argList);
114
115   Application application = Application::New(&argc, &argv, "stylesheet");
116
117   MyTestApp testApp(application);
118
119   DALI_TEST_CHECK(application);
120
121   END_TEST;
122 }
123
124 int UtcDaliApplicationNew04(void)
125 {
126   int         argc(1);
127   const char* argList[1] = {"program"};
128   char**      argv       = const_cast<char**>(argList);
129
130   Application application = Application::New(&argc, &argv, "stylesheet", Application::TRANSPARENT);
131
132   MyTestApp testApp(application);
133
134   DALI_TEST_CHECK(application);
135
136   END_TEST;
137 }
138
139 int UtcDaliApplicationNew05(void)
140 {
141   int         argc(1);
142   const char* argList[1] = {"program"};
143   char**      argv       = const_cast<char**>(argList);
144
145   Application application = DevelApplication::New(&argc, &argv, "stylesheet", Application::WINDOW_MODE::OPAQUE, PositionSize(), WindowType::IME);
146
147   MyTestApp testApp(application);
148
149   DALI_TEST_CHECK(application);
150
151   END_TEST;
152 }
153
154 int UtcDaliApplicationNew06P(void)
155 {
156   int         argc(1);
157   const char* argList[1] = {"program"};
158   char**      argv       = const_cast<char**>(argList);
159
160   Application application = Application::New(&argc, &argv, "stylesheet", Application::WINDOW_MODE::OPAQUE, PositionSize(), true);
161
162   MyTestApp testApp(application);
163
164   DALI_TEST_CHECK(application);
165
166   END_TEST;
167 }
168
169 int UtcDaliApplicationNew07P(void)
170 {
171   int         argc(1);
172   const char* argList[1] = {"program"};
173   char**      argv       = const_cast<char**>(argList);
174
175   Application application = Application::New(&argc, &argv, "stylesheet", Application::WINDOW_MODE::OPAQUE, PositionSize());
176
177   MyTestApp testApp(application);
178
179   DALI_TEST_CHECK(application);
180
181   END_TEST;
182 }
183
184 int UtcDaliApplicationNew08P(void)
185 {
186   int         argc(1);
187   const char* argList[1] = {"program"};
188   char**      argv       = const_cast<char**>(argList);
189   WindowData  windowData;
190
191   Application application = Application::New(&argc, &argv, "stylesheet", false, windowData);
192
193   MyTestApp testApp(application);
194
195   DALI_TEST_CHECK(application);
196
197   END_TEST;
198 }
199
200 int UtcDaliApplicationCopyAndAssignment(void)
201 {
202   Application application = Application::New();
203   Application copy(application);
204   DALI_TEST_CHECK(copy == application);
205
206   Application assigned;
207   DALI_TEST_CHECK(!assigned);
208   assigned = application;
209   DALI_TEST_CHECK(copy == assigned);
210
211   END_TEST;
212 }
213
214 int UtcDaliApplicationMoveConstructor(void)
215 {
216   Application application = Application::New();
217   DALI_TEST_CHECK(application);
218   DALI_TEST_EQUALS(1, application.GetBaseObject().ReferenceCount(), TEST_LOCATION);
219
220   Application moved = std::move(application);
221   DALI_TEST_CHECK(moved);
222   DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION);
223   DALI_TEST_CHECK(!application);
224
225   END_TEST;
226 }
227
228 int UtcDaliApplicationMoveAssignment(void)
229 {
230   Application application = Application::New();
231   DALI_TEST_CHECK(application);
232   DALI_TEST_EQUALS(1, application.GetBaseObject().ReferenceCount(), TEST_LOCATION);
233
234   Application moved;
235   moved = std::move(application);
236   DALI_TEST_CHECK(moved);
237   DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION);
238   DALI_TEST_CHECK(!application);
239
240   END_TEST;
241 }
242
243 int UtcDaliApplicationMainLoop01N(void)
244 {
245   Application application;
246
247   try
248   {
249     application.MainLoop();
250     DALI_TEST_CHECK(false); // Should not get here
251   }
252   catch(...)
253   {
254     DALI_TEST_CHECK(true);
255   }
256
257   END_TEST;
258 }
259
260 int UtcDaliApplicationLowerN(void)
261 {
262   Application application;
263
264   try
265   {
266     application.Lower();
267     DALI_TEST_CHECK(false); // Should not get here
268   }
269   catch(...)
270   {
271     DALI_TEST_CHECK(true);
272   }
273
274   END_TEST;
275 }
276
277 int UtcDaliApplicationQuitN(void)
278 {
279   Application application;
280
281   try
282   {
283     application.Quit();
284     DALI_TEST_CHECK(false); // Should not get here
285   }
286   catch(...)
287   {
288     DALI_TEST_CHECK(true);
289   }
290
291   END_TEST;
292 }
293
294 int UtcDaliApplicationAddIdleN(void)
295 {
296   Application application;
297
298   try
299   {
300     CallbackBase* callback = NULL;
301     application.AddIdle(callback);
302     DALI_TEST_CHECK(false); // Should not get here
303   }
304   catch(...)
305   {
306     DALI_TEST_CHECK(true);
307   }
308
309   END_TEST;
310 }
311
312 int UtcDaliApplicationGetWindowN(void)
313 {
314   Application application;
315
316   try
317   {
318     (void)application.GetWindow();
319     DALI_TEST_CHECK(false); // Should not get here
320   }
321   catch(...)
322   {
323     DALI_TEST_CHECK(true);
324   }
325
326   END_TEST;
327 }
328
329 int UtcDaliApplicationInitSignalP(void)
330 {
331   Application application = Application::New();
332   application.InitSignal().Connect(&ApplicationSignalCallback);
333   DALI_TEST_CHECK(application);
334
335   END_TEST;
336 }
337
338 int UtcDaliApplicationInitSignalN(void)
339 {
340   Application application;
341
342   try
343   {
344     application.InitSignal().Connect(&ApplicationSignalCallback);
345     DALI_TEST_CHECK(false); // Should not get here
346   }
347   catch(...)
348   {
349     DALI_TEST_CHECK(true);
350   }
351
352   END_TEST;
353 }
354
355 int UtcDaliApplicationTerminateSignalP(void)
356 {
357   Application application = Application::New();
358   application.TerminateSignal().Connect(&ApplicationSignalCallback);
359   DALI_TEST_CHECK(application);
360
361   END_TEST;
362 }
363
364 int UtcDaliApplicationTerminateSignalN(void)
365 {
366   Application application;
367
368   try
369   {
370     application.TerminateSignal().Connect(&ApplicationSignalCallback);
371     DALI_TEST_CHECK(false); // Should not get here
372   }
373   catch(...)
374   {
375     DALI_TEST_CHECK(true);
376   }
377
378   END_TEST;
379 }
380
381 int UtcDaliApplicationPauseSignalP(void)
382 {
383   Application application = Application::New();
384   application.PauseSignal().Connect(&ApplicationSignalCallback);
385   DALI_TEST_CHECK(application);
386
387   END_TEST;
388 }
389
390 int UtcDaliApplicationPauseSignalN(void)
391 {
392   Application application;
393
394   try
395   {
396     application.PauseSignal().Connect(&ApplicationSignalCallback);
397     DALI_TEST_CHECK(false); // Should not get here
398   }
399   catch(...)
400   {
401     DALI_TEST_CHECK(true);
402   }
403
404   END_TEST;
405 }
406
407 int UtcDaliApplicationResumeSignalP(void)
408 {
409   Application application = Application::New();
410   application.ResumeSignal().Connect(&ApplicationSignalCallback);
411   DALI_TEST_CHECK(application);
412
413   END_TEST;
414 }
415
416 int UtcDaliApplicationResumeSignalN(void)
417 {
418   Application application;
419
420   try
421   {
422     application.ResumeSignal().Connect(&ApplicationSignalCallback);
423     DALI_TEST_CHECK(false); // Should not get here
424   }
425   catch(...)
426   {
427     DALI_TEST_CHECK(true);
428   }
429
430   END_TEST;
431 }
432
433 int UtcDaliApplicationResetSignalP(void)
434 {
435   Application application = Application::New();
436   application.ResetSignal().Connect(&ApplicationSignalCallback);
437   DALI_TEST_CHECK(application);
438
439   END_TEST;
440 }
441
442 int UtcDaliApplicationResetSignalN(void)
443 {
444   Application application;
445
446   try
447   {
448     application.ResetSignal().Connect(&ApplicationSignalCallback);
449     DALI_TEST_CHECK(false); // Should not get here
450   }
451   catch(...)
452   {
453     DALI_TEST_CHECK(true);
454   }
455
456   END_TEST;
457 }
458
459 int UtcDaliApplicationlControlSignalP(void)
460 {
461   Application application = Application::New();
462   application.AppControlSignal().Connect(&ApplicationControlSignalCallback);
463   DALI_TEST_CHECK(application);
464
465   END_TEST;
466 }
467
468 int UtcDaliApplicationlControlSignalN(void)
469 {
470   Application application;
471
472   try
473   {
474     application.AppControlSignal().Connect(&ApplicationControlSignalCallback);
475     DALI_TEST_CHECK(false); // Should not get here
476   }
477   catch(...)
478   {
479     DALI_TEST_CHECK(true);
480   }
481
482   END_TEST;
483 }
484
485 int UtcDaliApplicationLanguageChangedSignalP(void)
486 {
487   Application application = Application::New();
488   application.LanguageChangedSignal().Connect(&ApplicationSignalCallback);
489   DALI_TEST_CHECK(application);
490
491   END_TEST;
492 }
493
494 int UtcDaliApplicationLanguageChangedSignalN(void)
495 {
496   Application application;
497
498   try
499   {
500     application.LanguageChangedSignal().Connect(&ApplicationSignalCallback);
501     DALI_TEST_CHECK(false); // Should not get here
502   }
503   catch(...)
504   {
505     DALI_TEST_CHECK(true);
506   }
507
508   END_TEST;
509 }
510
511 int UtcDaliApplicationRegionChangedSignalP(void)
512 {
513   Application application = Application::New();
514   application.RegionChangedSignal().Connect(&ApplicationSignalCallback);
515   DALI_TEST_CHECK(application);
516
517   END_TEST;
518 }
519
520 int UtcDaliApplicationRegionChangedSignalN(void)
521 {
522   Application application;
523
524   try
525   {
526     application.RegionChangedSignal().Connect(&ApplicationSignalCallback);
527     DALI_TEST_CHECK(false); // Should not get here
528   }
529   catch(...)
530   {
531     DALI_TEST_CHECK(true);
532   }
533
534   END_TEST;
535 }
536
537 int UtcDaliApplicationLowBatterySignalP(void)
538 {
539   Application application = Application::New();
540   application.LowBatterySignal().Connect(&LowBatterySignalCallback);
541   DALI_TEST_CHECK(application);
542
543   END_TEST;
544 }
545
546 int UtcDaliApplicationLowBatterySignalN(void)
547 {
548   Application application;
549
550   try
551   {
552     application.LowBatterySignal().Connect(&LowBatterySignalCallback);
553     DALI_TEST_CHECK(false); // Should not get here
554   }
555   catch(...)
556   {
557     DALI_TEST_CHECK(true);
558   }
559
560   END_TEST;
561 }
562
563 int UtcDaliApplicationLowMemorySignalP(void)
564 {
565   Application application = Application::New();
566   application.LowMemorySignal().Connect(&LowMemorySignalCallback);
567   DALI_TEST_CHECK(application);
568
569   END_TEST;
570 }
571
572 int UtcDaliApplicationLowMemorySignalN(void)
573 {
574   Application application;
575
576   try
577   {
578     application.LowMemorySignal().Connect(&LowMemorySignalCallback);
579     DALI_TEST_CHECK(false); // Should not get here
580   }
581   catch(...)
582   {
583     DALI_TEST_CHECK(true);
584   }
585
586   END_TEST;
587 }
588
589 int UtcDaliApplicationOrientationChangedSignalP(void)
590 {
591   Application application = Application::New();
592   application.DeviceOrientationChangedSignal().Connect(&OnDeviceOrientationChangedSignalCallback);
593   DALI_TEST_CHECK(application);
594
595   END_TEST;
596 }
597
598 int UtcDaliApplicationOrientationChangedSignalN(void)
599 {
600   Application application;
601
602   try
603   {
604     application.DeviceOrientationChangedSignal().Connect(&OnDeviceOrientationChangedSignalCallback);
605     DALI_TEST_CHECK(false); // Should not get here
606   }
607   catch(...)
608   {
609     DALI_TEST_CHECK(true);
610   }
611
612   END_TEST;
613 }
614
615 int UtcDaliApplicationGetResourcePathP(void)
616 {
617   Application application = Application::New();
618   std::string result("**invalid path**"); // Calling GetResourcePath should replace this with a system dependent path or "".
619   result = application.GetResourcePath();
620   DALI_TEST_CHECK(result != "**invalid path**");
621
622   END_TEST;
623 }
624
625 int UtcDaliApplicationGetRegionP(void)
626 {
627   Application application = Application::New();
628   std::string result;
629   result = application.GetRegion();
630   DALI_TEST_CHECK(result == "NOT_SUPPORTED"); // Not supported in UBUNTU
631
632   END_TEST;
633 }
634
635 int UtcDaliApplicationGetLanguageP(void)
636 {
637   Application application = Application::New();
638   std::string result;
639   result = application.GetLanguage();
640   DALI_TEST_CHECK(result == "NOT_SUPPORTED"); // Not supported in UBUNTU
641
642   END_TEST;
643 }
644
645 int UtcDaliApplicationGetObjectRegistryN(void)
646 {
647   Application application = Application::New();
648   DALI_TEST_CHECK(!application.GetObjectRegistry());
649   END_TEST;
650 }
651
652 int UtcDaliApplicationAddIdleWithReturnValueN(void)
653 {
654   Application application;
655
656   try
657   {
658     DevelApplication::AddIdleWithReturnValue(application, nullptr);
659     DALI_TEST_CHECK(false); // Should not get here
660   }
661   catch(...)
662   {
663     DALI_TEST_CHECK(true);
664   }
665
666   END_TEST;
667 }
668
669 int UtcDaliApplicationGetDataPathP(void)
670 {
671   setenv("DALI_APPLICATION_DATA_DIR", "MyDataPath", 1);
672   std::string dataPath = DevelApplication::GetDataPath();
673   DALI_TEST_EQUALS(dataPath, "MyDataPath", TEST_LOCATION);
674   END_TEST;
675 }
676
677 int UtcDaliApplicationDownCastN(void)
678 {
679   Application application = DevelApplication::DownCast(nullptr);
680   DALI_TEST_CHECK(!application);
681   END_TEST;
682 }
683
684 int UtcDaliApplicationTaskInitSignalN(void)
685 {
686   Application application;
687
688   try
689   {
690     application.TaskInitSignal();
691     DALI_TEST_CHECK(false); // Should not get here
692   }
693   catch(...)
694   {
695     DALI_TEST_CHECK(true);
696   }
697
698   END_TEST;
699 }
700
701 int UtcDaliApplicationTaskTerminateSignalN(void)
702 {
703   Application application;
704
705   try
706   {
707     application.TaskTerminateSignal();
708     DALI_TEST_CHECK(false); // Should not get here
709   }
710   catch(...)
711   {
712     DALI_TEST_CHECK(true);
713   }
714
715   END_TEST;
716 }
717
718 int UtcDaliApplicationTaskAppControlSignalN(void)
719 {
720   Application application;
721
722   try
723   {
724     application.TaskAppControlSignal();
725     DALI_TEST_CHECK(false); // Should not get here
726   }
727   catch(...)
728   {
729     DALI_TEST_CHECK(true);
730   }
731
732   END_TEST;
733 }
734
735 int UtcDaliApplicationTaskLanguageChangedSignalN(void)
736 {
737   Application application;
738
739   try
740   {
741     application.TaskLanguageChangedSignal();
742     DALI_TEST_CHECK(false); // Should not get here
743   }
744   catch(...)
745   {
746     DALI_TEST_CHECK(true);
747   }
748
749   END_TEST;
750 }
751
752 int UtcDaliApplicationTaskRegionChangedSignalN(void)
753 {
754   Application application;
755
756   try
757   {
758     application.TaskRegionChangedSignal();
759     DALI_TEST_CHECK(false); // Should not get here
760   }
761   catch(...)
762   {
763     DALI_TEST_CHECK(true);
764   }
765
766   END_TEST;
767 }
768
769 int UtcDaliApplicationTaskLowBatterySignalN(void)
770 {
771   Application application;
772
773   try
774   {
775     application.TaskLowBatterySignal();
776     DALI_TEST_CHECK(false); // Should not get here
777   }
778   catch(...)
779   {
780     DALI_TEST_CHECK(true);
781   }
782
783   END_TEST;
784 }
785
786 int UtcDaliApplicationTaskLowMemorySignalN(void)
787 {
788   Application application;
789
790   try
791   {
792     application.TaskLowMemorySignal();
793     DALI_TEST_CHECK(false); // Should not get here
794   }
795   catch(...)
796   {
797     DALI_TEST_CHECK(true);
798   }
799
800   END_TEST;
801 }
802
803 int UtcDaliApplicationTaskDeviceOrientationChangedSignalN(void)
804 {
805   Application application;
806
807   try
808   {
809     application.TaskDeviceOrientationChangedSignal();
810     DALI_TEST_CHECK(false); // Should not get here
811   }
812   catch(...)
813   {
814     DALI_TEST_CHECK(true);
815   }
816
817   END_TEST;
818 }