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