Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Bug fix.
[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 # 297 "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   my_elem_t elm=(my_elem_t)e;
29
30   if (elm) {
31     free(elm->name);
32     free(elm->data);
33     free(elm);
34   }
35 }
36
37 static void debuged_add(xbt_set_t  set,
38                         const char *name,
39                         const char *data) {
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   xbt_test_add0("Fill in the data set");
54
55   *set=xbt_set_new();
56   debuged_add(*set,"12",     "12");
57   debuged_add(*set,"12a",    "12a");
58   debuged_add(*set,"12b",    "12b");
59   debuged_add(*set,"123",    "123");
60   debuged_add(*set,"123456", "123456");
61   xbt_test_log0("Child becomes child of what to add");
62   debuged_add(*set,"1234",   "1234");
63   xbt_test_log0("Need of common ancestor");
64   debuged_add(*set,"123457", "123457");
65 }
66
67 static void search_name(xbt_set_t head,const char*key) {
68   my_elem_t elm;
69
70   xbt_test_add1("Search by name %s",key);
71   elm = (my_elem_t)xbt_set_get_by_name(head,key);
72   xbt_test_log2(" Found %s (under ID %d)\n",
73                 elm? elm->data:"(null)",
74                 elm? elm->ID:-1);
75   if (strcmp(key,elm->name))
76     THROW2(mismatch_error,0,"The key (%s) is not the one expected (%s)",
77            key,elm->name);
78   if (strcmp(elm->name,elm->data))
79     THROW2(mismatch_error,0,"The name (%s) != data (%s)",
80            key,elm->name);
81   fflush(stdout);
82 }
83
84 static void search_id(xbt_set_t head,int id,const char*key) {
85   my_elem_t elm;
86
87   xbt_test_add1("Search by id %d",id);
88   elm = (my_elem_t) xbt_set_get_by_id(head,id);
89   xbt_test_log2("Found %s (data %s)",
90                 elm? elm->name:"(null)",
91                 elm? elm->data:"(null)");
92   if (id != elm->ID)
93     THROW2(mismatch_error,0,"The found ID (%d) is not the one expected (%d)",
94            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   xbt_set_cursor_t cursor=NULL;
106   my_elem_t         elm=NULL;
107  
108   xbt_set_foreach(set,cursor,elm) {
109     xbt_test_assert0(elm,"Dude ! Got a null elm during traversal!");
110     xbt_test_log3("Id(%d):  %s->%s\n",elm->ID,elm->name,elm->data);
111     xbt_test_assert2(!strcmp(elm->name,elm->data),
112                      "Key(%s) != value(%s). Abording",
113                      elm->name,elm->data);
114   }
115 }
116
117 static void search_not_found(xbt_set_t set, const char *data) {
118   xbt_ex_t e;
119
120   xbt_test_add1("Search %s (expected not to be found)",data);
121   TRY {
122     xbt_set_get_by_name(set,data);
123     THROW1(unknown_error,0,"Found something which shouldn't be there (%s)",data);
124   } CATCH(e) {
125     if (e.category != not_found_error) 
126       xbt_test_exception(e);
127     xbt_ex_free(e);  
128   }
129 }
130
131 xbt_set_t set = NULL;
132
133
134 XBT_TEST_UNIT("basic",test_set_basic,"Basic usage") {
135   set=NULL;
136
137   xbt_test_add0("Traverse the empty set");
138   traverse(set);
139   
140   xbt_test_add0("Free a data set");
141   fill(&set);
142   xbt_set_free(&set);
143
144   xbt_test_add0("Free the NULL data set");
145   xbt_set_free(&set);
146
147 }
148
149 XBT_TEST_UNIT("change",test_set_change,"Changing some values") {
150   fill(&set);
151
152   xbt_test_add0("Change 123 to 'Changed 123'");
153   debuged_add(set,"123","Changed 123");
154
155   xbt_test_add0("Change 123 back to '123'");
156   debuged_add(set,"123","123");
157
158   xbt_test_add0("Change 12a to 'Dummy 12a'");
159   debuged_add(set,"12a","Dummy 12a");
160
161   xbt_test_add0("Change 12a to '12a'");
162   debuged_add(set,"12a","12a");
163
164   /*  xbt_dict_dump(head,(void (*)(void*))&printf); */
165   xbt_test_add0("Traverse the resulting data set");
166   traverse(set);
167 }
168
169 XBT_TEST_UNIT("retrieve",test_set_retrieve,"Retrieving some values") {
170   my_elem_t elm;
171
172   xbt_test_add0("Search 123");
173   elm = (my_elem_t) xbt_set_get_by_name(set,"123");
174   xbt_test_assert0(elm,"elm must be there");
175   xbt_assert(!strcmp("123",elm->data));
176
177   search_not_found(set,"Can't be found");
178   search_not_found(set,"123 Can't be found");
179   search_not_found(set,"12345678 NOT");
180
181   search_name(set,"12");
182   search_name(set,"12a");
183   search_name(set,"12b");
184   search_name(set,"123");
185   search_name(set,"123456");
186   search_name(set,"1234");
187   search_name(set,"123457");
188
189   search_id(set,0,"12");
190   search_id(set,1,"12a");
191   search_id(set,2,"12b");
192   search_id(set,3,"123");
193   search_id(set,4,"123456");
194   search_id(set,5,"1234");
195   search_id(set,6,"123457");
196
197   xbt_test_add0("Traverse the resulting data set");
198   traverse(set);
199
200   /*  xbt_dict_dump(head,(void (*)(void*))&printf); */
201
202   xbt_test_add0("Free the data set (twice)");
203   xbt_set_free(&set);
204   xbt_set_free(&set);
205
206   xbt_test_add0("Traverse the resulting data set");
207   traverse(set);
208 }
209
210 XBT_TEST_UNIT("remove",test_set_remove,"Removing some values") {
211   my_elem_t elm;
212
213   xbt_set_free(&set);
214   fill(&set);
215
216   xbt_set_remove_by_name(set, "12a");
217   search_not_found(set, "12a");
218
219   search_name(set,"12");
220   search_name(set,"12b");
221   search_name(set,"123");
222   search_name(set,"123456");
223   search_name(set,"1234");
224   search_name(set,"123457");
225
226   search_id(set,0,"12");
227   search_id(set,2,"12b");
228   search_id(set,3,"123");
229   search_id(set,4,"123456");
230   search_id(set,5,"1234");
231   search_id(set,6,"123457");
232
233   debuged_add(set, "12anew", "12anew");
234   elm = (my_elem_t) xbt_set_get_by_id(set, 1);
235   xbt_test_assert1(elm->ID == 1, "elm->ID is %d but should be 1", elm->ID);
236 }
237
238 /*******************************/
239 /* GENERATED FILE, DO NOT EDIT */
240 /*******************************/
241