Merged silc_1_0_branch to trunk.
[silc.git] / lib / silcutil / tests / test_silclist.c
1 /* SilcList tests */
2
3 #include "silcincludes.h"
4
5 struct foo {
6   int i;
7   struct foo *next;
8 };
9
10 int main(int argc, char **argv)
11 {
12   bool success = FALSE;
13   SilcList list;
14   struct foo *f, *f1, *f2, *f3;
15
16   if (argc > 1 && !strcmp(argv[1], "-d")) {
17     silc_debug = 1;
18     silc_debug_hexdump = 1;
19     silc_log_set_debug_string("*list*");
20   }
21
22   silc_list_init(list, struct foo, next);
23   f1 = silc_calloc(1, sizeof(*f1));
24   if (!f1)
25     goto err;
26   f1->i = 1;
27   f2 = silc_calloc(1, sizeof(*f2));
28   if (!f2)
29     goto err;
30   f2->i = 2;
31   f3 = silc_calloc(1, sizeof(*f3));
32   if (!f3)
33     goto err;
34   f3->i = 3;
35
36   silc_list_add(list, f1);
37   silc_list_add(list, f2);
38   silc_list_add(list, f3);
39
40   SILC_LOG_DEBUG(("f1=%p", f1));
41   SILC_LOG_DEBUG(("f2=%p", f2));
42   SILC_LOG_DEBUG(("f3=%p", f3));
43
44   silc_list_start(list);
45   while ((f = silc_list_get(list)) != SILC_LIST_END) {
46     SILC_LOG_DEBUG(("entry %d, %p, next=%p", f->i, f, f->next));
47   }
48
49   silc_list_start(list);
50   silc_list_del(list, f1);
51   while ((f = silc_list_get(list)) != SILC_LIST_END) {
52     SILC_LOG_DEBUG(("entry %d, %p, next=%p", f->i, f, f->next));
53   }
54   silc_list_del(list, f3);
55   while ((f = silc_list_get(list)) != SILC_LIST_END) {
56     SILC_LOG_DEBUG(("entry %d, %p, next=%p", f->i, f, f->next));
57   }
58   silc_list_del(list, f2);
59   while ((f = silc_list_get(list)) != SILC_LIST_END) {
60     SILC_LOG_DEBUG(("entry %d, %p, next=%p", f->i, f, f->next));
61   }
62
63   silc_list_add(list, f1);
64   silc_list_add(list, f2);
65   silc_list_add(list, f3);
66
67   silc_list_start(list);
68   while ((f = silc_list_get(list)) != SILC_LIST_END) {
69     SILC_LOG_DEBUG(("entry %d, %p, next=%p", f->i, f, f->next));
70   }
71
72   silc_list_del(list, f2);
73
74   silc_list_start(list);
75   while ((f = silc_list_get(list)) != SILC_LIST_END) {
76     SILC_LOG_DEBUG(("entry %d, %p, next=%p", f->i, f, f->next));
77   }
78
79   success = TRUE;
80
81  err:
82   SILC_LOG_DEBUG(("Testing was %s", success ? "SUCCESS" : "FAILURE"));
83   fprintf(stderr, "Testing was %s\n", success ? "SUCCESS" : "FAILURE");
84
85   return success;
86 }