couple of simple positive tests.

This is far from real unit testing, just simple cases are covered, but
it's better than nothing.



SVN revision: 46477
This commit is contained in:
Gustavo Sverzut Barbieri 2010-02-25 19:38:32 +00:00
parent bb8ede02af
commit 6cd7135e5d
1 changed files with 196 additions and 4 deletions

View File

@ -3,13 +3,23 @@
#endif
#include <Ecore.h>
#include <unistd.h>
#include "ecore_suite.h"
static int
_timer_cb(void *data)
_quit_cb(void *data)
{
Eina_Bool *val = data;
*val = EINA_TRUE;
ecore_main_loop_quit();
return 0;
}
static int
_dummy_cb(void *data)
{
return (int)(long)data;
}
START_TEST(ecore_test_ecore_init)
@ -26,17 +36,193 @@ END_TEST
START_TEST(ecore_test_ecore_main_loop)
{
Ecore_Timer *timer = NULL;
int ret;
Eina_Bool did = EINA_FALSE;
Ecore_Timer *timer;
int ret;
ret = ecore_init();
fail_if(ret != 1);
timer = ecore_timer_add(0.5, _timer_cb, NULL);
timer = ecore_timer_add(0.0, _quit_cb, &did);
fail_if(timer == NULL);
ecore_main_loop_begin();
fail_if(did == EINA_FALSE);
ret = ecore_shutdown();
fail_if(ret != 0);
}
END_TEST
START_TEST(ecore_test_ecore_main_loop_idler)
{
Eina_Bool did = EINA_FALSE;
Ecore_Idler *idler;
int ret;
ret = ecore_init();
fail_if(ret != 1);
idler = ecore_idler_add(_quit_cb, &did);
fail_if(idler == NULL);
ecore_main_loop_begin();
fail_if(did == EINA_FALSE);
ret = ecore_shutdown();
fail_if(ret != 0);
}
END_TEST
START_TEST(ecore_test_ecore_main_loop_idle_enterer)
{
Eina_Bool did = EINA_FALSE;
Ecore_Idle_Enterer *idle_enterer;
int ret;
ret = ecore_init();
fail_if(ret != 1);
idle_enterer = ecore_idle_enterer_add(_quit_cb, &did);
fail_if(idle_enterer == NULL);
ecore_main_loop_begin();
fail_if(did == EINA_FALSE);
ret = ecore_shutdown();
fail_if(ret != 0);
}
END_TEST
START_TEST(ecore_test_ecore_main_loop_idle_exiter)
{
Eina_Bool did = EINA_FALSE;
Ecore_Timer *timer;
Ecore_Idle_Exiter *idle_exiter;
int ret;
ret = ecore_init();
fail_if(ret != 1);
/* make system exit idle */
timer = ecore_timer_add(0.0, _dummy_cb, (void *)(long)0);
fail_if(timer == NULL);
idle_exiter = ecore_idle_exiter_add(_quit_cb, &did);
fail_if(idle_exiter == NULL);
ecore_main_loop_begin();
fail_if(did == EINA_FALSE);
ret = ecore_shutdown();
fail_if(ret != 0);
}
END_TEST
START_TEST(ecore_test_ecore_main_loop_timer)
{
Eina_Bool did = EINA_FALSE;
Ecore_Timer *timer;
double start, end, elapsed;
int ret;
ret = ecore_init();
fail_if(ret != 1);
timer = ecore_timer_add(2.0, _quit_cb, &did);
fail_if(timer == NULL);
start = ecore_time_get();
ecore_main_loop_begin();
end = ecore_time_get();
elapsed = end - start;
fail_if(did == EINA_FALSE);
fail_if(elapsed < 2.0);
fail_if(elapsed > 3.0); /* 1 second "error margin" */
ret = ecore_shutdown();
fail_if(ret != 0);
}
END_TEST
static int
_fd_handler_cb(void *data, Ecore_Fd_Handler *handler __UNUSED__)
{
Eina_Bool *val = data;
*val = EINA_TRUE;
ecore_main_loop_quit();
return 0;
}
START_TEST(ecore_test_ecore_main_loop_fd_handler)
{
Eina_Bool did = EINA_FALSE;
Ecore_Fd_Handler *fd_handler;
int comm[2];
int ret;
ret = ecore_init();
fail_if(ret != 1);
ret = pipe(comm);
fail_if(ret != 0);
fd_handler = ecore_main_fd_handler_add
(comm[0], ECORE_FD_READ, _fd_handler_cb, &did, NULL, NULL);
fail_if(fd_handler == NULL);
ret = write(comm[1], &did, 1);
fail_if(ret != 1);
ecore_main_loop_begin();
close(comm[0]);
close(comm[1]);
fail_if(did == EINA_FALSE);
ret = ecore_shutdown();
fail_if(ret != 0);
}
END_TEST
static int
_event_handler_cb(void *data, int type __UNUSED__, void *event __UNUSED__)
{
Eina_Bool *val = data;
*val = EINA_TRUE;
ecore_main_loop_quit();
return 0;
}
START_TEST(ecore_test_ecore_main_loop_event)
{
Eina_Bool did = EINA_FALSE;
Ecore_Event_Handler *handler;
Ecore_Event *event;
int ret, type;
ret = ecore_init();
fail_if(ret != 1);
type = ecore_event_type_new();
fail_if(type < 1);
handler = ecore_event_handler_add(type, _event_handler_cb, &did);
fail_if(handler == NULL);
event = ecore_event_add(type, NULL, NULL, NULL);
fail_if(event == NULL);
ecore_main_loop_begin();
fail_if(did == EINA_FALSE);
ret = ecore_shutdown();
fail_if(ret != 0);
}
@ -46,4 +232,10 @@ void ecore_test_ecore(TCase *tc)
{
tcase_add_test(tc, ecore_test_ecore_init);
tcase_add_test(tc, ecore_test_ecore_main_loop);
tcase_add_test(tc, ecore_test_ecore_main_loop_idler);
tcase_add_test(tc, ecore_test_ecore_main_loop_idle_enterer);
tcase_add_test(tc, ecore_test_ecore_main_loop_idle_exiter);
tcase_add_test(tc, ecore_test_ecore_main_loop_timer);
tcase_add_test(tc, ecore_test_ecore_main_loop_fd_handler);
tcase_add_test(tc, ecore_test_ecore_main_loop_event);
}