Add Tizen 2.0 packaging
[profile/ivi/eobj.git] / src / tests / composite_objects / main.c
1 #ifdef HAVE_CONFIG_H
2 # include <config.h>
3 #endif
4
5 #include "Eo.h"
6 #include "simple.h"
7 #include "comp.h"
8
9 #include "../eunit_tests.h"
10
11 static int cb_called = EINA_FALSE;
12
13 static Eina_Bool
14 _a_changed_cb(void *data, Eo *obj, const Eo_Event_Description *desc, void *event_info)
15 {
16    (void) desc;
17    (void) obj;
18    int new_a = *((int *) event_info);
19    printf("%s event_info:'%d' data:'%s'\n", __func__, new_a, (const char *) data);
20
21    cb_called = EINA_TRUE;
22
23    return EO_CALLBACK_CONTINUE;
24 }
25
26 int
27 main(int argc, char *argv[])
28 {
29    (void) argc;
30    (void) argv;
31    eo_init();
32
33    Eo *obj = eo_add(COMP_CLASS, NULL);
34    eo_do(obj, eo_event_callback_add(EV_A_CHANGED, _a_changed_cb, NULL));
35
36    int a;
37    eo_do(obj, simple_a_set(1));
38    fail_if(!cb_called);
39
40    eo_do(obj, simple_a_get(&a));
41    fail_if(a != 1);
42
43    /* disable the callback forwarder, and fail if it's still called. */
44    Eo *simple;
45    eo_do(obj, eo_base_data_get("simple-obj", (void **) &simple));
46    eo_ref(simple);
47    eo_do(simple, eo_event_callback_forwarder_del(EV_A_CHANGED, obj));
48
49    cb_called = EINA_FALSE;
50    eo_do(obj, simple_a_set(2));
51    fail_if(cb_called);
52
53    fail_if(!eo_composite_is(simple));
54    eo_composite_detach(simple, obj);
55    fail_if(eo_composite_is(simple));
56    eo_composite_attach(simple, obj);
57    fail_if(!eo_composite_is(simple));
58
59    eo_unref(simple);
60    eo_unref(obj);
61
62    eo_shutdown();
63    return 0;
64 }
65