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