2 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
21 #include <dali/dali.h>
23 #include <dali-test-suite-utils.h>
27 void utc_dali_timer_startup(void)
29 test_return_value = TET_UNDEF;
32 void utc_dali_timer_cleanup(void)
34 test_return_value = TET_PASS;
39 bool ecore_timer_running = false;
40 Ecore_Task_Cb timer_callback_func=NULL;
41 const void* timer_callback_data=NULL;
42 bool main_loop_can_run = false;
43 intptr_t timerId = 0; // intptr_t has the same size as a pointer and is platform independent so this can be returned as a pointer in ecore_timer_add below without compilation warnings
48 Ecore_Timer* ecore_timer_add(double in,
52 ecore_timer_running = true;
53 timer_callback_func = func;
54 timer_callback_data = data;
56 return (Ecore_Timer*)timerId;
59 void* ecore_timer_del(Ecore_Timer *timer)
61 ecore_timer_running = false;
62 timer_callback_func = NULL;
71 void test_ecore_main_loop_begin()
73 if(timer_callback_func != NULL)
75 main_loop_can_run = true;
76 while( main_loop_can_run )
78 if( ! timer_callback_func(const_cast<void*>(timer_callback_data)) )
84 void test_ecore_main_loop_quit()
86 timer_callback_func = NULL;
87 main_loop_can_run = false;
92 * small class to test timer signal
94 class TimerTestClass : public ConnectionTracker
98 TimerTestClass(bool repeat):mTimerCalled(false),mReturnContiune(repeat) {}
102 tet_printf("timer ticked\n");
104 // quit the main loop otherwise we'll never return to tet
105 test_ecore_main_loop_quit();
106 return mReturnContiune;
108 bool mTimerCalled; // whether tick has been called or not
109 bool mReturnContiune; // whether to return true / false to continue
116 // Positive test case for a method
117 int UtcDaliTimerCreation(void)
119 // TestApplication application;
120 tet_printf("timer creation \n");
121 Timer timer = Timer::New(300);
123 DALI_TEST_CHECK( timer );
125 DALI_TEST_CHECK( timer.GetInterval() == 300);
130 int UtcDaliTimerUnitializedStart(void)
132 tet_printf("unintialized timer start \n");
134 Timer *timer = new Timer;
135 DALI_TEST_CHECK(timer != NULL);
141 catch(Dali::DaliException& e)
143 DALI_TEST_ASSERT(e, "timer", TEST_LOCATION);
148 int UtcDaliTimerUnitializedStop(void)
150 tet_printf("unintialized timer stop \n");
152 Timer *timer = new Timer;
153 DALI_TEST_CHECK(timer != NULL);
159 catch(Dali::DaliException& e)
161 DALI_TEST_ASSERT(e, "timer", TEST_LOCATION);
166 int UtcDaliTimerUnitializedGetInterval(void)
168 tet_printf("unintialized get interval \n");
170 Timer *timer = new Timer;
171 DALI_TEST_CHECK(timer != NULL);
175 timer->GetInterval();
177 catch(Dali::DaliException& e)
179 DALI_TEST_ASSERT(e, "timer", TEST_LOCATION);
184 int UtcDaliTimerUnitializedSetInterval(void)
186 tet_printf("unintialized set interval \n");
188 Timer *timer = new Timer;
189 DALI_TEST_CHECK(timer != NULL);
193 timer->SetInterval(10);
195 catch(Dali::DaliException& e)
197 DALI_TEST_ASSERT(e, "timer", TEST_LOCATION);
202 int UtcDaliTimerUnitializedIsRunning(void)
204 tet_printf("unintialized is running \n");
206 Timer *timer = new Timer;
207 DALI_TEST_CHECK(timer != NULL);
213 catch(Dali::DaliException& e)
215 DALI_TEST_ASSERT(e, "timer", TEST_LOCATION);
221 int UtcDaliTimerUnitializedSignalTick(void)
223 tet_printf("unintialized SignalTick \n");
225 Timer *timer = new Timer;
226 DALI_TEST_CHECK(timer != NULL);
230 TimerTestClass testClass(true);// = new TimerTestClass(true);
232 timer->TickSignal().Connect(&testClass, &TimerTestClass::Tick);
234 catch(Dali::DaliException& e)
236 DALI_TEST_ASSERT(e, "timer", TEST_LOCATION);
241 int UtcDaliTimerSetInterval(void)
243 tet_printf("timer set interval \n");
244 Timer timer = Timer::New(10);
246 DALI_TEST_CHECK( timer.GetInterval() == 10);
248 timer.SetInterval(5000);
250 DALI_TEST_CHECK( timer.GetInterval() == 5000);
255 int UtcDaliTimerCopyConstructor(void)
257 tet_printf("timer copy constructor \n");
258 Timer timer = Timer::New(10);
260 Timer anotherTimer( timer );
262 DALI_TEST_CHECK( anotherTimer.GetInterval() == 10);
266 int UtcDaliTimerAssignmentOperator(void)
268 tet_printf("assignmnet constructor \n");
270 Timer timer = Timer::New(10);
272 DALI_TEST_CHECK( timer );
274 Timer anotherTimer = Timer::New(40);
276 DALI_TEST_CHECK(anotherTimer.GetInterval() == 40);
278 tet_printf("timer 1 interval %d, \n",anotherTimer.GetInterval());
279 tet_printf("timer 2 interval %d, \n",timer.GetInterval());
281 DALI_TEST_CHECK(timer != anotherTimer);
283 timer = anotherTimer;
285 DALI_TEST_CHECK(timer == anotherTimer);
287 tet_printf("timer 1 interval %d, \n",timer.GetInterval());
288 tet_printf("timer 2 interval %d, \n",anotherTimer.GetInterval());
290 DALI_TEST_CHECK(timer.GetInterval() == 40);
295 int UtcDaliTimerIsRunning(void)
297 tet_printf("timer is running \n");
299 Timer timer = Timer::New(100);
303 DALI_TEST_CHECK( timer.IsRunning() );
307 DALI_TEST_CHECK( timer.IsRunning() == false );
312 int UtcDaliTimerSignalTickContinue(void)
314 tet_printf("timer call back\n");
316 Timer timer = Timer::New(100);
317 TimerTestClass testClass(true);
319 timer.TickSignal().Connect(&testClass, &TimerTestClass::Tick);
323 test_ecore_main_loop_begin();
325 DALI_TEST_CHECK( testClass.mTimerCalled );
330 int UtcDaliTimerSignalTickStop(void)
332 Timer timer = Timer::New(100);
333 TimerTestClass testClass(false);
335 timer.TickSignal().Connect(&testClass, &TimerTestClass::Tick);
339 test_ecore_main_loop_begin();
341 DALI_TEST_CHECK( testClass.mTimerCalled );
346 int UtcDaliTimerReset(void)
348 Timer timer = Timer::New(100);
350 DALI_TEST_CHECK(timer);
354 DALI_TEST_CHECK(!timer);
359 int UtcDaliTimerDownCastP(void)
361 Timer timer = Timer::New(100);
362 Timer cast = Timer::DownCast( timer );
364 DALI_TEST_CHECK( cast );
369 int UtcDaliTimerDownCastN(void)
372 Timer cast = Timer::DownCast( timer );
374 DALI_TEST_CHECK( ! cast );