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