[Tizen] Support Device orientation and window orientation event.
[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 UtcDaliApplicationCopyAndAssignment(void)
155 {
156   Application application = Application::New();
157   Application copy(application);
158   DALI_TEST_CHECK(copy == application);
159
160   Application assigned;
161   DALI_TEST_CHECK(!assigned);
162   assigned = application;
163   DALI_TEST_CHECK(copy == assigned);
164
165   END_TEST;
166 }
167
168 int UtcDaliApplicationMoveConstructor(void)
169 {
170   Application application = Application::New();
171   DALI_TEST_CHECK(application);
172   DALI_TEST_EQUALS(1, application.GetBaseObject().ReferenceCount(), TEST_LOCATION);
173
174   Application moved = std::move(application);
175   DALI_TEST_CHECK(moved);
176   DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION);
177   DALI_TEST_CHECK(!application);
178
179   END_TEST;
180 }
181
182 int UtcDaliApplicationMoveAssignment(void)
183 {
184   Application application = Application::New();
185   DALI_TEST_CHECK(application);
186   DALI_TEST_EQUALS(1, application.GetBaseObject().ReferenceCount(), TEST_LOCATION);
187
188   Application moved;
189   moved = std::move(application);
190   DALI_TEST_CHECK(moved);
191   DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION);
192   DALI_TEST_CHECK(!application);
193
194   END_TEST;
195 }
196
197 int UtcDaliApplicationMainLoop01N(void)
198 {
199   Application application;
200
201   try
202   {
203     application.MainLoop();
204     DALI_TEST_CHECK(false); // Should not get here
205   }
206   catch(...)
207   {
208     DALI_TEST_CHECK(true);
209   }
210
211   END_TEST;
212 }
213
214 int UtcDaliApplicationLowerN(void)
215 {
216   Application application;
217
218   try
219   {
220     application.Lower();
221     DALI_TEST_CHECK(false); // Should not get here
222   }
223   catch(...)
224   {
225     DALI_TEST_CHECK(true);
226   }
227
228   END_TEST;
229 }
230
231 int UtcDaliApplicationQuitN(void)
232 {
233   Application application;
234
235   try
236   {
237     application.Quit();
238     DALI_TEST_CHECK(false); // Should not get here
239   }
240   catch(...)
241   {
242     DALI_TEST_CHECK(true);
243   }
244
245   END_TEST;
246 }
247
248 int UtcDaliApplicationAddIdleN(void)
249 {
250   Application application;
251
252   try
253   {
254     CallbackBase* callback = NULL;
255     application.AddIdle(callback);
256     DALI_TEST_CHECK(false); // Should not get here
257   }
258   catch(...)
259   {
260     DALI_TEST_CHECK(true);
261   }
262
263   END_TEST;
264 }
265
266 int UtcDaliApplicationGetWindowN(void)
267 {
268   Application application;
269
270   try
271   {
272     (void)application.GetWindow();
273     DALI_TEST_CHECK(false); // Should not get here
274   }
275   catch(...)
276   {
277     DALI_TEST_CHECK(true);
278   }
279
280   END_TEST;
281 }
282
283 int UtcDaliApplicationInitSignalP(void)
284 {
285   Application application = Application::New();
286   application.InitSignal().Connect(&ApplicationSignalCallback);
287   DALI_TEST_CHECK(application);
288
289   END_TEST;
290 }
291
292 int UtcDaliApplicationInitSignalN(void)
293 {
294   Application application;
295
296   try
297   {
298     application.InitSignal().Connect(&ApplicationSignalCallback);
299     DALI_TEST_CHECK(false); // Should not get here
300   }
301   catch(...)
302   {
303     DALI_TEST_CHECK(true);
304   }
305
306   END_TEST;
307 }
308
309 int UtcDaliApplicationTerminateSignalP(void)
310 {
311   Application application = Application::New();
312   application.TerminateSignal().Connect(&ApplicationSignalCallback);
313   DALI_TEST_CHECK(application);
314
315   END_TEST;
316 }
317
318 int UtcDaliApplicationTerminateSignalN(void)
319 {
320   Application application;
321
322   try
323   {
324     application.TerminateSignal().Connect(&ApplicationSignalCallback);
325     DALI_TEST_CHECK(false); // Should not get here
326   }
327   catch(...)
328   {
329     DALI_TEST_CHECK(true);
330   }
331
332   END_TEST;
333 }
334
335 int UtcDaliApplicationPauseSignalP(void)
336 {
337   Application application = Application::New();
338   application.PauseSignal().Connect(&ApplicationSignalCallback);
339   DALI_TEST_CHECK(application);
340
341   END_TEST;
342 }
343
344 int UtcDaliApplicationPauseSignalN(void)
345 {
346   Application application;
347
348   try
349   {
350     application.PauseSignal().Connect(&ApplicationSignalCallback);
351     DALI_TEST_CHECK(false); // Should not get here
352   }
353   catch(...)
354   {
355     DALI_TEST_CHECK(true);
356   }
357
358   END_TEST;
359 }
360
361 int UtcDaliApplicationResumeSignalP(void)
362 {
363   Application application = Application::New();
364   application.ResumeSignal().Connect(&ApplicationSignalCallback);
365   DALI_TEST_CHECK(application);
366
367   END_TEST;
368 }
369
370 int UtcDaliApplicationResumeSignalN(void)
371 {
372   Application application;
373
374   try
375   {
376     application.ResumeSignal().Connect(&ApplicationSignalCallback);
377     DALI_TEST_CHECK(false); // Should not get here
378   }
379   catch(...)
380   {
381     DALI_TEST_CHECK(true);
382   }
383
384   END_TEST;
385 }
386
387 int UtcDaliApplicationResetSignalP(void)
388 {
389   Application application = Application::New();
390   application.ResetSignal().Connect(&ApplicationSignalCallback);
391   DALI_TEST_CHECK(application);
392
393   END_TEST;
394 }
395
396 int UtcDaliApplicationResetSignalN(void)
397 {
398   Application application;
399
400   try
401   {
402     application.ResetSignal().Connect(&ApplicationSignalCallback);
403     DALI_TEST_CHECK(false); // Should not get here
404   }
405   catch(...)
406   {
407     DALI_TEST_CHECK(true);
408   }
409
410   END_TEST;
411 }
412
413 int UtcDaliApplicationlControlSignalP(void)
414 {
415   Application application = Application::New();
416   application.AppControlSignal().Connect(&ApplicationControlSignalCallback);
417   DALI_TEST_CHECK(application);
418
419   END_TEST;
420 }
421
422 int UtcDaliApplicationlControlSignalN(void)
423 {
424   Application application;
425
426   try
427   {
428     application.AppControlSignal().Connect(&ApplicationControlSignalCallback);
429     DALI_TEST_CHECK(false); // Should not get here
430   }
431   catch(...)
432   {
433     DALI_TEST_CHECK(true);
434   }
435
436   END_TEST;
437 }
438
439 int UtcDaliApplicationLanguageChangedSignalP(void)
440 {
441   Application application = Application::New();
442   application.LanguageChangedSignal().Connect(&ApplicationSignalCallback);
443   DALI_TEST_CHECK(application);
444
445   END_TEST;
446 }
447
448 int UtcDaliApplicationLanguageChangedSignalN(void)
449 {
450   Application application;
451
452   try
453   {
454     application.LanguageChangedSignal().Connect(&ApplicationSignalCallback);
455     DALI_TEST_CHECK(false); // Should not get here
456   }
457   catch(...)
458   {
459     DALI_TEST_CHECK(true);
460   }
461
462   END_TEST;
463 }
464
465 int UtcDaliApplicationRegionChangedSignalP(void)
466 {
467   Application application = Application::New();
468   application.RegionChangedSignal().Connect(&ApplicationSignalCallback);
469   DALI_TEST_CHECK(application);
470
471   END_TEST;
472 }
473
474 int UtcDaliApplicationRegionChangedSignalN(void)
475 {
476   Application application;
477
478   try
479   {
480     application.RegionChangedSignal().Connect(&ApplicationSignalCallback);
481     DALI_TEST_CHECK(false); // Should not get here
482   }
483   catch(...)
484   {
485     DALI_TEST_CHECK(true);
486   }
487
488   END_TEST;
489 }
490
491 int UtcDaliApplicationLowBatterySignalP(void)
492 {
493   Application application = Application::New();
494   application.LowBatterySignal().Connect(&LowBatterySignalCallback);
495   DALI_TEST_CHECK(application);
496
497   END_TEST;
498 }
499
500 int UtcDaliApplicationLowBatterySignalN(void)
501 {
502   Application application;
503
504   try
505   {
506     application.LowBatterySignal().Connect(&LowBatterySignalCallback);
507     DALI_TEST_CHECK(false); // Should not get here
508   }
509   catch(...)
510   {
511     DALI_TEST_CHECK(true);
512   }
513
514   END_TEST;
515 }
516
517 int UtcDaliApplicationLowMemorySignalP(void)
518 {
519   Application application = Application::New();
520   application.LowMemorySignal().Connect(&LowMemorySignalCallback);
521   DALI_TEST_CHECK(application);
522
523   END_TEST;
524 }
525
526 int UtcDaliApplicationLowMemorySignalN(void)
527 {
528   Application application;
529
530   try
531   {
532     application.LowMemorySignal().Connect(&LowMemorySignalCallback);
533     DALI_TEST_CHECK(false); // Should not get here
534   }
535   catch(...)
536   {
537     DALI_TEST_CHECK(true);
538   }
539
540   END_TEST;
541 }
542
543 int UtcDaliApplicationOrientationChangedSignalP(void)
544 {
545   Application application = Application::New();
546   application.DeviceOrientationChangedSignal().Connect(&OnDeviceOrientationChangedSignalCallback);
547   DALI_TEST_CHECK(application);
548
549   END_TEST;
550 }
551
552 int UtcDaliApplicationOrientationChangedSignalN(void)
553 {
554   Application application;
555
556   try
557   {
558     application.DeviceOrientationChangedSignal().Connect(&OnDeviceOrientationChangedSignalCallback);
559     DALI_TEST_CHECK(false); // Should not get here
560   }
561   catch(...)
562   {
563     DALI_TEST_CHECK(true);
564   }
565
566   END_TEST;
567 }
568
569 int UtcDaliApplicationGetResourcePathP(void)
570 {
571   Application application = Application::New();
572   std::string result("**invalid path**"); // Calling GetResourcePath should replace this with a system dependent path or "".
573   result = application.GetResourcePath();
574   DALI_TEST_CHECK(result != "**invalid path**");
575
576   END_TEST;
577 }
578
579 int UtcDaliApplicationGetRegionP(void)
580 {
581   Application application = Application::New();
582   std::string result;
583   result = application.GetRegion();
584   DALI_TEST_CHECK(result == "NOT_SUPPORTED"); // Not supported in UBUNTU
585
586   END_TEST;
587 }
588
589 int UtcDaliApplicationGetLanguageP(void)
590 {
591   Application application = Application::New();
592   std::string result;
593   result = application.GetLanguage();
594   DALI_TEST_CHECK(result == "NOT_SUPPORTED"); // Not supported in UBUNTU
595
596   END_TEST;
597 }
598
599 int UtcDaliApplicationGetObjectRegistryN(void)
600 {
601   Application application = Application::New();
602   DALI_TEST_CHECK(!application.GetObjectRegistry());
603   END_TEST;
604 }
605
606 int UtcDaliApplicationAddIdleWithReturnValueN(void)
607 {
608   Application application;
609
610   try
611   {
612     DevelApplication::AddIdleWithReturnValue(application, nullptr);
613     DALI_TEST_CHECK(false); // Should not get here
614   }
615   catch(...)
616   {
617     DALI_TEST_CHECK(true);
618   }
619
620   END_TEST;
621 }
622
623 int UtcDaliApplicationGetDataPathP(void)
624 {
625   setenv("DALI_APPLICATION_DATA_DIR", "MyDataPath", 1);
626   std::string dataPath = DevelApplication::GetDataPath();
627   DALI_TEST_EQUALS(dataPath, "MyDataPath", TEST_LOCATION);
628   END_TEST;
629 }
630
631 int UtcDaliApplicationDownCastN(void)
632 {
633   Application application = DevelApplication::DownCast(nullptr);
634   DALI_TEST_CHECK(!application);
635   END_TEST;
636 }