1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
#include "mainloop.h"
#include <SimpleTypeSystem.h>
sboolean
_do_some_work_1 (sint * itt) {
s_print ("Hello from Worker 1! itt:%d\n", *itt);
*itt += 1;
if (*itt >= 100) {
return FALSE;
} else {
return TRUE;
}
}
sboolean
_do_some_work_2 (sint * itt) {
s_print ("Hello from Worker 2! itt:%d\n", *itt);
*itt += 1;
if (*itt >= 100) {
return FALSE;
} else {
return TRUE;
}
}
void
_do_teardown (sint * itt, spointer user_data) {
free (itt);
}
int test_main_loop (void) {
setup_unit ();
SMainLoop * loop = NULL;
loop = s_main_loop_get_default ();
test_case (loop != NULL, "The loop is not NULL");
sint * itt = malloc (sizeof (sint));
*itt = 0;
s_main_loop_add_teardown_handler (loop, CALLBACK (_do_teardown), itt, NULL);
s_main_loop_add_worker (loop, S_MAIN_LOOP_RING_ONE, RUNFUNC(_do_some_work_1), itt);
s_main_loop_add_worker (loop, S_MAIN_LOOP_RING_TWO, RUNFUNC(_do_some_work_2), itt);
s_main_loop_run (loop);
s_print ("Value: %d\n", *itt);
test_case (*itt >= 100, "The avlue of the itterator is ");
s_main_loop_quit (loop);
end_unit ();
}
|