/* SilcList tests */ #include "silcincludes.h" struct foo { int i; struct foo *next; }; int main(int argc, char **argv) { bool success = FALSE; SilcList list; struct foo *f, *f1, *f2, *f3; if (argc > 1 && !strcmp(argv[1], "-d")) { silc_debug = 1; silc_debug_hexdump = 1; silc_log_set_debug_string("*list*"); } silc_list_init(list, struct foo, next); f1 = silc_calloc(1, sizeof(*f1)); if (!f1) goto err; f1->i = 1; f2 = silc_calloc(1, sizeof(*f2)); if (!f2) goto err; f2->i = 2; f3 = silc_calloc(1, sizeof(*f3)); if (!f3) goto err; f3->i = 3; silc_list_add(list, f1); silc_list_add(list, f2); silc_list_add(list, f3); SILC_LOG_DEBUG(("f1=%p", f1)); SILC_LOG_DEBUG(("f2=%p", f2)); SILC_LOG_DEBUG(("f3=%p", f3)); silc_list_start(list); while ((f = silc_list_get(list)) != SILC_LIST_END) { SILC_LOG_DEBUG(("entry %d, %p, next=%p", f->i, f, f->next)); } silc_list_start(list); silc_list_del(list, f1); while ((f = silc_list_get(list)) != SILC_LIST_END) { SILC_LOG_DEBUG(("entry %d, %p, next=%p", f->i, f, f->next)); } silc_list_del(list, f3); while ((f = silc_list_get(list)) != SILC_LIST_END) { SILC_LOG_DEBUG(("entry %d, %p, next=%p", f->i, f, f->next)); } silc_list_del(list, f2); while ((f = silc_list_get(list)) != SILC_LIST_END) { SILC_LOG_DEBUG(("entry %d, %p, next=%p", f->i, f, f->next)); } silc_list_add(list, f1); silc_list_add(list, f2); silc_list_add(list, f3); silc_list_start(list); while ((f = silc_list_get(list)) != SILC_LIST_END) { SILC_LOG_DEBUG(("entry %d, %p, next=%p", f->i, f, f->next)); } silc_list_del(list, f2); silc_list_start(list); while ((f = silc_list_get(list)) != SILC_LIST_END) { SILC_LOG_DEBUG(("entry %d, %p, next=%p", f->i, f, f->next)); } success = TRUE; err: SILC_LOG_DEBUG(("Testing was %s", success ? "SUCCESS" : "FAILURE")); fprintf(stderr, "Testing was %s\n", success ? "SUCCESS" : "FAILURE"); return success; }