static gras_error_t traverse(gras_dict_t *head) {
- gras_error_t errcode;
gras_dict_cursor_t *cursor=NULL;
char *key;
char *data;
- // gras_dict_dump(head,&print_str);
- TRY(gras_dict_cursor_new(head,&cursor));
-
- while (gras_dict_cursor_next(cursor) == no_error) {
- TRY(gras_dict_cursor_get_key(cursor,&key));
- TRY(gras_dict_cursor_get_data(cursor,(void**)&data));
+ gras_dict_foreach(head,cursor,key,data) {
printf(" - Seen: %s->%s\n",key,data);
if (strcmp(key,data)) {
printf("Key(%s) != value(%s). Abording\n",key,data);
abort();
}
}
- gras_dict_cursor_free(cursor);
return no_error;
}
-int main() {
+int main(int argc,char **argv) {
gras_error_t errcode;
gras_dict_t *head=NULL;
char *data;
- // TRY(gras_log_control_set("root.thresh=info dict_collapse.thresh=debug"));
- //TRY(gras_log_control_set("root.thresh=info"));
- // TRY(gras_log_control_set("root.thresh=info dict_search.thresh=info dict.thresh=debug dict_collapse.thresh=debug log.thresh=debug"));
-
+ gras_init_defaultlog(&argc,argv,"dict.thresh=verbose");
+
printf("\nGeneric dictionnary: USAGE test:\n");
printf(" Traverse the empty dictionnary\n");
TRYFAIL(fill(&head));
printf(" Free the dictionnary\n");
gras_dict_free(&head);
-
+ printf(" Free the dictionnary again\n");
+ gras_dict_free(&head);
+
TRYFAIL(fill(&head));
printf(" - Change some values\n");
printf(" Free the dictionnary (twice)\n");
gras_dict_free(&head);
- gras_dict_free(&head); // frees it twice to see if it triggers an error
+ gras_dict_free(&head);
printf(" - Traverse the resulting dictionnary\n");
TRYFAIL(traverse(head));
TRYEXPECT(debuged_remove(head,"Does not exist"),mismatch_error);
TRYFAIL(traverse(head));
+ gras_dict_free(&head);
+
+ printf(" - Remove data from the NULL dict (error message expected)\n");
TRYCATCH(debuged_remove(head,"12345"),mismatch_error);
- TRYFAIL(traverse(head));
+ printf(" - Remove each data manually (traversing the resulting dictionnary each time)\n");
+ TRYFAIL(fill(&head));
TRYFAIL(debuged_remove(head,"12a")); TRYFAIL(traverse(head));
TRYFAIL(debuged_remove(head,"12b")); TRYFAIL(traverse(head));
TRYFAIL(debuged_remove(head,"12")); TRYFAIL(traverse(head));
TRYFAIL(debuged_remove(head,"123")); TRYFAIL(traverse(head));
TRYEXPECT(debuged_remove(head,"12346"),mismatch_error); TRYFAIL(traverse(head));
+ printf(" - Free the dictionnary twice\n");
gras_dict_free(&head);
gras_dict_free(&head);
-
+ gras_exit();
return 0;
}