Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
fix so enable_compile_warnings works nice when enable_tracing is on
[simgrid.git] / src / set_unit.c
1 /*******************************/
2 /* GENERATED FILE, DO NOT EDIT */
3 /*******************************/
4
5 #include <stdio.h>
6 #include "xbt.h"
7 /*******************************/
8 /* GENERATED FILE, DO NOT EDIT */
9 /*******************************/
10
11 # 317 "/home/navarrop/Developments/simgrid/src/xbt/set.c" 
12 #include "xbt.h"
13 #include "xbt/ex.h"
14
15
16 typedef struct {
17   /* headers */
18   unsigned int ID;
19   char *name;
20   unsigned int name_len;
21
22   /* payload */
23   char *data;
24 } s_my_elem_t, *my_elem_t;
25
26
27 static void my_elem_free(void *e)
28 {
29   my_elem_t elm = (my_elem_t) e;
30
31   if (elm) {
32     free(elm->name);
33     free(elm->data);
34     free(elm);
35   }
36 }
37
38 static void debuged_add(xbt_set_t set, const char *name, const char *data)
39 {
40   my_elem_t elm;
41
42   elm = xbt_new(s_my_elem_t, 1);
43   elm->name = xbt_strdup(name);
44   elm->name_len = 0;
45
46   elm->data = xbt_strdup(data);
47
48   xbt_test_log2("Add %s (->%s)", name, data);
49   xbt_set_add(set, (xbt_set_elm_t) elm, &my_elem_free);
50 }
51
52 static void fill(xbt_set_t * set)
53 {
54   xbt_test_add0("Fill in the data set");
55
56   *set = xbt_set_new();
57   debuged_add(*set, "12", "12");
58   debuged_add(*set, "12a", "12a");
59   debuged_add(*set, "12b", "12b");
60   debuged_add(*set, "123", "123");
61   debuged_add(*set, "123456", "123456");
62   xbt_test_log0("Child becomes child of what to add");
63   debuged_add(*set, "1234", "1234");
64   xbt_test_log0("Need of common ancestor");
65   debuged_add(*set, "123457", "123457");
66 }
67
68 static void search_name(xbt_set_t head, const char *key)
69 {
70   my_elem_t elm;
71
72   xbt_test_add1("Search by name %s", key);
73   elm = (my_elem_t) xbt_set_get_by_name(head, key);
74   xbt_test_log2(" Found %s (under ID %d)\n",
75                 elm ? elm->data : "(null)", elm ? elm->ID : -1);
76   if (strcmp(key, elm->name))
77     THROW2(mismatch_error, 0, "The key (%s) is not the one expected (%s)",
78            key, elm->name);
79   if (strcmp(elm->name, elm->data))
80     THROW2(mismatch_error, 0, "The name (%s) != data (%s)", key, elm->name);
81   fflush(stdout);
82 }
83
84 static void search_id(xbt_set_t head, int id, const char *key)
85 {
86   my_elem_t elm;
87
88   xbt_test_add1("Search by id %d", id);
89   elm = (my_elem_t) xbt_set_get_by_id(head, id);
90   xbt_test_log2("Found %s (data %s)",
91                 elm ? elm->name : "(null)", elm ? elm->data : "(null)");
92   if (id != elm->ID)
93     THROW2(mismatch_error, 0,
94            "The found ID (%d) is not the one expected (%d)", elm->ID, id);
95   if (strcmp(key, elm->name))
96     THROW2(mismatch_error, 0, "The key (%s) is not the one expected (%s)",
97            elm->name, key);
98   if (strcmp(elm->name, elm->data))
99     THROW2(mismatch_error, 0, "The name (%s) != data (%s)",
100            elm->name, elm->data);
101 }
102
103
104 static void traverse(xbt_set_t set)
105 {
106   xbt_set_cursor_t cursor = NULL;
107   my_elem_t elm = NULL;
108
109   xbt_set_foreach(set, cursor, elm) {
110     xbt_test_assert0(elm, "Dude ! Got a null elm during traversal!");
111     xbt_test_log3("Id(%d):  %s->%s\n", elm->ID, elm->name, elm->data);
112     xbt_test_assert2(!strcmp(elm->name, elm->data),
113                      "Key(%s) != value(%s). Abording", elm->name, elm->data);
114   }
115 }
116
117 static void search_not_found(xbt_set_t set, const char *data)
118 {
119   xbt_ex_t e;
120
121   xbt_test_add1("Search %s (expected not to be found)", data);
122   TRY {
123     xbt_set_get_by_name(set, data);
124     THROW1(unknown_error, 0, "Found something which shouldn't be there (%s)",
125            data);
126   } CATCH(e) {
127     if (e.category != not_found_error)
128       xbt_test_exception(e);
129     xbt_ex_free(e);
130   }
131 }
132
133 xbt_set_t set = NULL;
134
135
136 XBT_TEST_UNIT("basic", test_set_basic, "Basic usage")
137 {
138   set = NULL;
139
140   xbt_test_add0("Traverse the empty set");
141   traverse(set);
142
143   xbt_test_add0("Free a data set");
144   fill(&set);
145   xbt_set_free(&set);
146
147   xbt_test_add0("Free the NULL data set");
148   xbt_set_free(&set);
149
150 }
151
152 XBT_TEST_UNIT("change", test_set_change, "Changing some values")
153 {
154   fill(&set);
155
156   xbt_test_add0("Change 123 to 'Changed 123'");
157   debuged_add(set, "123", "Changed 123");
158
159   xbt_test_add0("Change 123 back to '123'");
160   debuged_add(set, "123", "123");
161
162   xbt_test_add0("Change 12a to 'Dummy 12a'");
163   debuged_add(set, "12a", "Dummy 12a");
164
165   xbt_test_add0("Change 12a to '12a'");
166   debuged_add(set, "12a", "12a");
167
168   /*  xbt_dict_dump(head,(void (*)(void*))&printf); */
169   xbt_test_add0("Traverse the resulting data set");
170   traverse(set);
171 }
172
173 XBT_TEST_UNIT("retrieve", test_set_retrieve, "Retrieving some values")
174 {
175   my_elem_t elm;
176
177   xbt_test_add0("Search 123");
178   elm = (my_elem_t) xbt_set_get_by_name(set, "123");
179   xbt_test_assert0(elm, "elm must be there");
180   xbt_assert(!strcmp("123", elm->data));
181
182   search_not_found(set, "Can't be found");
183   search_not_found(set, "123 Can't be found");
184   search_not_found(set, "12345678 NOT");
185
186   search_name(set, "12");
187   search_name(set, "12a");
188   search_name(set, "12b");
189   search_name(set, "123");
190   search_name(set, "123456");
191   search_name(set, "1234");
192   search_name(set, "123457");
193
194   search_id(set, 0, "12");
195   search_id(set, 1, "12a");
196   search_id(set, 2, "12b");
197   search_id(set, 3, "123");
198   search_id(set, 4, "123456");
199   search_id(set, 5, "1234");
200   search_id(set, 6, "123457");
201
202   xbt_test_add0("Traverse the resulting data set");
203   traverse(set);
204
205   /*  xbt_dict_dump(head,(void (*)(void*))&printf); */
206
207   xbt_test_add0("Free the data set (twice)");
208   xbt_set_free(&set);
209   xbt_set_free(&set);
210
211   xbt_test_add0("Traverse the resulting data set");
212   traverse(set);
213 }
214
215 XBT_TEST_UNIT("remove", test_set_remove, "Removing some values")
216 {
217   my_elem_t elm;
218
219   xbt_set_free(&set);
220   fill(&set);
221
222   xbt_set_remove_by_name(set, "12a");
223   search_not_found(set, "12a");
224
225   search_name(set, "12");
226   search_name(set, "12b");
227   search_name(set, "123");
228   search_name(set, "123456");
229   search_name(set, "1234");
230   search_name(set, "123457");
231
232   search_id(set, 0, "12");
233   search_id(set, 2, "12b");
234   search_id(set, 3, "123");
235   search_id(set, 4, "123456");
236   search_id(set, 5, "1234");
237   search_id(set, 6, "123457");
238
239   debuged_add(set, "12anew", "12anew");
240   elm = (my_elem_t) xbt_set_get_by_id(set, 1);
241   xbt_test_assert1(elm->ID == 1, "elm->ID is %d but should be 1", elm->ID);
242 }
243
244 /*******************************/
245 /* GENERATED FILE, DO NOT EDIT */
246 /*******************************/
247