1 #ifdef HAVE_CONFIG_H
2 # include <config.h>
3 #endif
4
5 #include <Ecore.h>
6 #include "ecore_suite.h"
7
8 static void
_ecore_quit(void * data)9 _ecore_quit(void *data)
10 {
11 Eina_Bool *bob = data;
12
13 *bob = EINA_TRUE;
14 ecore_main_loop_quit();
15 }
16
EFL_START_TEST(ecore_test_job)17 EFL_START_TEST(ecore_test_job)
18 {
19 Eina_Bool bob = EINA_FALSE;
20 Ecore_Job *job;
21
22 job = ecore_job_add(&_ecore_quit, &bob);
23 fail_if(!job);
24
25 ecore_main_loop_begin();
26
27 fail_if(bob != EINA_TRUE);
28 }
29 EFL_END_TEST
30
31 #ifndef _WIN32
32 #define NUM_SIGNALS 2000
33 static Eina_Bool
_signal_cb(void * data,int t EINA_UNUSED,void * ev EINA_UNUSED)34 _signal_cb(void *data, int t EINA_UNUSED, void *ev EINA_UNUSED)
35 {
36 int *called = data;
37 (*called)++;
38 if (*called == NUM_SIGNALS) ecore_main_loop_quit();
39 return ECORE_CALLBACK_RENEW;
40 }
41
42 static void
_ecore_signal_job(void * data EINA_UNUSED)43 _ecore_signal_job(void *data EINA_UNUSED)
44 {
45 for (unsigned int i = 0; i < NUM_SIGNALS; i++)
46 raise(SIGUSR2);
47 }
48
EFL_START_TEST(ecore_test_job_signal)49 EFL_START_TEST(ecore_test_job_signal)
50 {
51 int called = 0;
52 ecore_job_add(_ecore_signal_job, NULL);
53 ecore_event_handler_add(ECORE_EVENT_SIGNAL_USER, _signal_cb, &called);
54
55 ecore_main_loop_begin();
56 ck_assert_int_eq(called, NUM_SIGNALS);
57 }
58 EFL_END_TEST
59 #endif
60
ecore_test_ecore_job(TCase * tc)61 void ecore_test_ecore_job(TCase *tc)
62 {
63 tcase_add_test(tc, ecore_test_job);
64 #ifndef _WIN32
65 tcase_add_test(tc, ecore_test_job_signal);
66 #endif
67 }
68