This source file includes following definitions.
- widget_callback
- group_callback
- START_TEST
- main
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 #define TEST_SUITE_NAME "lib/widget/group"
27
28 #include "tests/mctest.h"
29
30 #include "lib/widget.h"
31
32
33
34 static int ref = 0;
35
36
37
38 static cb_ret_t
39 widget_callback (Widget *w, Widget *sender, widget_msg_t msg, int parm, void *data)
40 {
41 switch (msg)
42 {
43 case MSG_INIT:
44 ref++;
45 return widget_default_callback (w, NULL, MSG_INIT, 0, NULL);
46
47 case MSG_DESTROY:
48 ref--;
49 return widget_default_callback (w, NULL, MSG_DESTROY, 0, NULL);
50
51 default:
52 return widget_default_callback (w, sender, msg, parm, data);
53 }
54 }
55
56
57
58 static cb_ret_t
59 group_callback (Widget *w, Widget *sender, widget_msg_t msg, int parm, void *data)
60 {
61 switch (msg)
62 {
63 case MSG_INIT:
64 ref++;
65 return group_default_callback (w, NULL, MSG_INIT, 0, NULL);
66
67 case MSG_DESTROY:
68 ref--;
69 return group_default_callback (w, NULL, MSG_DESTROY, 0, NULL);
70
71 default:
72 return group_default_callback (w, sender, msg, parm, data);
73 }
74 }
75
76
77
78 START_TEST (test_group_init_deinit)
79 {
80 WGroup *g, *g0;
81 Widget *w0;
82 WRect r;
83
84 g = g_new0 (WGroup, 1);
85 rect_init (&r, 0, 0, 20, 20);
86 group_init (g, &r, group_callback, NULL);
87
88 g0 = g_new0 (WGroup, 1);
89 rect_init (&r, 0, 0, 10, 10);
90 group_init (g0, &r, group_callback, NULL);
91 group_add_widget (g, g0);
92
93 w0 = g_new0 (Widget, 1);
94 rect_init (&r, 0, 0, 5, 5);
95 widget_init (w0, &r, widget_callback, NULL);
96 group_add_widget (g0, w0);
97
98 w0 = g_new0 (Widget, 1);
99 rect_init (&r, 5, 5, 5, 5);
100 widget_init (w0, &r, widget_callback, NULL);
101 group_add_widget (g0, w0);
102
103 g0 = g_new0 (WGroup, 1);
104 rect_init (&r, 10, 10, 10, 10);
105 group_init (g0, &r, group_callback, NULL);
106 group_add_widget (g, g0);
107
108 w0 = g_new0 (Widget, 1);
109 rect_init (&r, 10, 10, 5, 5);
110 widget_init (w0, &r, widget_callback, NULL);
111 group_add_widget (g0, w0);
112
113 w0 = g_new0 (Widget, 1);
114 rect_init (&r, 15, 15, 5, 5);
115 widget_init (w0, &r, widget_callback, NULL);
116 group_add_widget (g0, w0);
117
118 w0 = g_new0 (Widget, 1);
119 rect_init (&r, 5, 5, 10, 10);
120 widget_init (w0, &r, widget_callback, NULL);
121 group_add_widget (g, w0);
122
123 ck_assert_msg (w0->id == 7, "last id (%d) != 7", ref);
124
125 send_message (g, NULL, MSG_INIT, 0, NULL);
126
127 ck_assert_msg (ref == 8, "ref (%d) != 8", ref);
128
129 widget_destroy (WIDGET (g));
130
131 ck_assert_msg (ref == 0, "ref (%d) != 0", ref);
132 }
133 END_TEST
134
135
136
137 int
138 main (void)
139 {
140 TCase *tc_core;
141
142 tc_core = tcase_create ("Core");
143
144
145 tcase_add_test (tc_core, test_group_init_deinit);
146
147
148 return mctest_run_all (tc_core);
149 }
150
151