#include <stdio.h>
#include "gras.h"
+#include "portable.h"
XBT_LOG_EXTERNAL_CATEGORY(dict);
XBT_LOG_NEW_DEFAULT_CATEGORY(test,"Logging specific to this test");
static void print_str(void *str);
static void print_str(void *str) {
- printf("%s",(char*)str);
+ printf("%s",(char*)PRINTF_STR(str));
}
static void fill(xbt_dict_t *head) {
{
char *data=xbt_strdup(key);
- printf(" - Add %s\n",key);
+ printf(" - Add %s\n",PRINTF_STR(key));
xbt_dict_set(head,key,data,&free);
if (XBT_LOG_ISENABLED(dict,xbt_log_priority_debug)) {
xbt_dict_dump(head,(void (*)(void*))&printf);
errcode=xbt_dict_get(head,key,&data);
- printf(" - Search %s. Found %s\n",key,data?(char*)data:"(null)");fflush(stdout);
+ printf(" - Search %s. Found %s\n",PRINTF_STR(key),(char*) PRINTF_STR(data));fflush(stdout);
+ if (!data)
+ return errcode;
if (strcmp((char*)data,key))
return mismatch_error;
return errcode;
{
xbt_error_t errcode;
- printf(" Remove '%s'\n",key);fflush(stdout);
+ printf(" Remove '%s'\n",PRINTF_STR(key));fflush(stdout);
errcode=xbt_dict_remove(head,key);
/* xbt_dict_dump(head,(void (*)(void*))&printf); */
return errcode;
char *data;
xbt_dict_foreach(head,cursor,key,data) {
- printf(" - Seen: %s->%s\n",key,data);
- xbt_assert2(!strcmp(key,data),
+ printf(" - Seen: %s->%s\n",PRINTF_STR(key),PRINTF_STR(data));
+ xbt_assert2(!data || !strcmp(key,data),
"Key(%s) != value(%s). Abording\n",key,data);
}
return no_error;
fill(&head);
+ /* xbt_dict_dump(head,(void (*)(void*))&printf);*/
+ printf(" - Test that it works with NULL data\n");
+ printf(" - Store NULL under 'null'\n");fflush(stdout);
+ xbt_dict_set(head,"null",NULL,NULL);
+ TRYFAIL(search(head,"null"));
+ /* xbt_dict_dump(head,(void (*)(void*))&printf); */
+ printf(" Check whether I see it while traversing\n");fflush(stdout);
+ {
+ xbt_dict_cursor_t cursor=NULL;
+ char *key;
+ int found=0;
+
+ xbt_dict_foreach(head,cursor,key,data) {
+ printf(" - Seen: %s->%s\n",PRINTF_STR(key),PRINTF_STR(data));fflush(stdout);
+ if (!strcmp(key,"null"))
+ found = 1;
+ }
+ xbt_assert0(found,"the key 'null', associated to NULL is not found");
+ }
+
printf(" - Change some values\n");
printf(" - Change 123 to 'Changed 123'\n");
xbt_dict_set(head,"123",strdup("Changed 123"),&free);