Added new test harness
[platform/core/uifw/dali-adaptor.git] / automated-tests / src / dali-adaptor / utc-Dali-Timer.cpp
1 //
2 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
3 //
4 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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 #include <iostream>
18 #include <stdlib.h>
19 #include <dali/dali.h>
20 #include <Ecore.h>
21 #include <dali-test-suite-utils.h>
22
23 using namespace Dali;
24
25 void utc_dali_timer_startup(void)
26 {
27   test_return_value = TET_UNDEF;
28 }
29
30 void utc_dali_timer_cleanup(void)
31 {
32   test_return_value = TET_PASS;
33 }
34
35 namespace
36 {
37 bool ecore_timer_running = false;
38 Ecore_Task_Cb timer_callback_func=NULL;
39 const void* timer_callback_data=NULL;
40 bool main_loop_can_run = false;
41 int timerId = 0;
42 }// anon namespace
43
44 extern "C"
45 {
46 Ecore_Timer* ecore_timer_add(double in,
47                              Ecore_Task_Cb func,
48                              const void   *data)
49 {
50   ecore_timer_running = true;
51   timer_callback_func = func;
52   timer_callback_data = data;
53   timerId+=8;
54   return (Ecore_Timer*)timerId;
55 }
56
57 void* ecore_timer_del(Ecore_Timer *timer)
58 {
59   ecore_timer_running = false;
60   timer_callback_func = NULL;
61   return NULL;
62 }
63
64 }
65
66 namespace
67 {
68
69 void test_ecore_main_loop_begin()
70 {
71   if(timer_callback_func != NULL)
72   {
73     main_loop_can_run = true;
74     while( main_loop_can_run )
75     {
76       if( ! timer_callback_func(const_cast<void*>(timer_callback_data)) )
77         break;
78     }
79   }
80 }
81
82 void test_ecore_main_loop_quit()
83 {
84   timer_callback_func = NULL;
85   main_loop_can_run = false;
86 }
87
88
89 /**
90  * small class to test timer signal
91  */
92 class TimerTestClass : public ConnectionTracker
93 {
94 public:
95
96   TimerTestClass(bool repeat):mTimerCalled(false),mReturnContiune(repeat) {}
97
98   bool Tick()
99   {
100     tet_printf("timer ticked\n");
101     mTimerCalled = true;
102     // quit the main loop otherwise we'll never return to tet
103     test_ecore_main_loop_quit();
104     return mReturnContiune;
105   }
106   bool mTimerCalled;    // whether tick has been called or not
107   bool mReturnContiune; // whether to return true / false to continue
108
109 };
110
111 } // anon namespace
112
113
114 // Positive test case for a method
115 int UtcDaliTimerCreation(void)
116 {
117  // TestApplication application;
118   tet_printf("timer creation \n");
119   Timer timer = Timer::New(300);
120
121   DALI_TEST_CHECK( timer );
122
123   DALI_TEST_CHECK( timer.GetInterval() == 300);
124
125   END_TEST;
126 }
127
128 int UtcDaliTimerUnitializedStart(void)
129 {
130   tet_printf("unintialized timer start \n");
131
132   Timer *timer = new Timer;
133   DALI_TEST_CHECK(timer != NULL);
134
135   try
136   {
137     timer->Start();
138   }
139   catch(Dali::DaliException& e)
140   {
141     DALI_TEST_ASSERT(e, "timer", TEST_LOCATION);
142   }
143   END_TEST;
144 }
145
146 int UtcDaliTimerUnitializedStop(void)
147 {
148   tet_printf("unintialized timer stop \n");
149
150   Timer *timer = new Timer;
151   DALI_TEST_CHECK(timer != NULL);
152
153   try
154   {
155     timer->Stop();
156   }
157   catch(Dali::DaliException& e)
158   {
159     DALI_TEST_ASSERT(e, "timer", TEST_LOCATION);
160   }
161   END_TEST;
162 }
163
164 int UtcDaliTimerUnitializedGetInterval(void)
165 {
166   tet_printf("unintialized get interval \n");
167
168   Timer *timer = new Timer;
169   DALI_TEST_CHECK(timer != NULL);
170
171   try
172   {
173     timer->GetInterval();
174   }
175   catch(Dali::DaliException& e)
176   {
177     DALI_TEST_ASSERT(e, "timer", TEST_LOCATION);
178   }
179   END_TEST;
180 }
181
182 int UtcDaliTimerUnitializedSetInterval(void)
183 {
184   tet_printf("unintialized set interval \n");
185
186   Timer *timer = new Timer;
187   DALI_TEST_CHECK(timer != NULL);
188
189   try
190   {
191     timer->SetInterval(10);
192   }
193   catch(Dali::DaliException& e)
194   {
195     DALI_TEST_ASSERT(e, "timer", TEST_LOCATION);
196   }
197   END_TEST;
198 }
199
200 int UtcDaliTimerUnitializedIsRunning(void)
201 {
202   tet_printf("unintialized is running \n");
203
204   Timer *timer = new Timer;
205   DALI_TEST_CHECK(timer != NULL);
206
207   try
208   {
209     timer->IsRunning();
210   }
211   catch(Dali::DaliException& e)
212   {
213     DALI_TEST_ASSERT(e, "timer", TEST_LOCATION);
214   }
215   END_TEST;
216 }
217
218
219 int UtcDaliTimerUnitializedSignalTick(void)
220 {
221   tet_printf("unintialized SignalTick \n");
222
223   Timer *timer = new Timer;
224   DALI_TEST_CHECK(timer != NULL);
225
226   try
227   {
228     TimerTestClass testClass(true);// = new TimerTestClass(true);
229
230     timer->TickSignal().Connect(&testClass, &TimerTestClass::Tick);
231   }
232   catch(Dali::DaliException& e)
233   {
234     DALI_TEST_ASSERT(e, "timer", TEST_LOCATION);
235   }
236   END_TEST;
237 }
238
239 int UtcDaliTimerSetInterval(void)
240 {
241   tet_printf("timer set interval \n");
242   Timer timer = Timer::New(10);
243
244   DALI_TEST_CHECK( timer.GetInterval() == 10);
245
246   timer.SetInterval(5000);
247
248   DALI_TEST_CHECK( timer.GetInterval() == 5000);
249
250   END_TEST;
251 }
252
253 int UtcDaliTimerCopyConstructor(void)
254 {
255   tet_printf("timer copy constructor \n");
256   Timer timer = Timer::New(10);
257
258   Timer anotherTimer( timer );
259
260   DALI_TEST_CHECK( anotherTimer.GetInterval() == 10);
261   END_TEST;
262 }
263
264 int UtcDaliTimerAssignmentOperator(void)
265 {
266   tet_printf("assignmnet constructor \n");
267
268   Timer timer = Timer::New(10);
269
270   DALI_TEST_CHECK( timer );
271
272   Timer anotherTimer = Timer::New(40);
273
274   DALI_TEST_CHECK(anotherTimer.GetInterval() == 40);
275
276   tet_printf("timer 1 interval %d, \n",anotherTimer.GetInterval());
277   tet_printf("timer 2 interval %d, \n",timer.GetInterval());
278
279   DALI_TEST_CHECK(timer != anotherTimer);
280
281   timer = anotherTimer;
282
283   DALI_TEST_CHECK(timer == anotherTimer);
284
285   tet_printf("timer 1 interval %d, \n",timer.GetInterval());
286   tet_printf("timer 2 interval %d, \n",anotherTimer.GetInterval());
287
288   DALI_TEST_CHECK(timer.GetInterval() == 40);
289
290   END_TEST;
291 }
292
293 int UtcDaliTimerIsRunning(void)
294 {
295   tet_printf("timer is running \n");
296
297   Timer timer = Timer::New(100);
298
299   timer.Start();
300
301   DALI_TEST_CHECK( timer.IsRunning() );
302
303   timer.Stop();
304
305   DALI_TEST_CHECK( timer.IsRunning() == false );
306
307   END_TEST;
308 }
309
310 int UtcDaliTimerSignalTickContinue(void)
311 {
312   tet_printf("timer call back\n");
313
314   Timer timer = Timer::New(100);
315   TimerTestClass testClass(true);
316
317   timer.TickSignal().Connect(&testClass, &TimerTestClass::Tick);
318
319   timer.Start();
320
321   test_ecore_main_loop_begin();
322
323   DALI_TEST_CHECK( testClass.mTimerCalled );
324
325   END_TEST;
326 }
327
328 int UtcDaliTimerSignalTickStop(void)
329 {
330   Timer timer = Timer::New(100);
331   TimerTestClass testClass(false);
332
333   timer.TickSignal().Connect(&testClass, &TimerTestClass::Tick);
334
335   timer.Start();
336
337   test_ecore_main_loop_begin();
338
339   DALI_TEST_CHECK( testClass.mTimerCalled );
340
341   END_TEST;
342 }
343
344 int UtcDaliTimerReset(void)
345 {
346   Timer timer = Timer::New(100);
347
348   DALI_TEST_CHECK(timer);
349
350   timer.Reset();
351
352   DALI_TEST_CHECK(!timer);
353
354   END_TEST;
355 }