/* dict_crash - A crash test for dictionnaries */
-/* Authors: Martin Quinson */
-/* Copyright (C) 2003 the OURAGAN project. */
+/* Copyright (c) 2003, 2004 Martin Quinson. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
- under the terms of the license (GNU LGPL) which comes with this package. */
+ * under the terms of the license (GNU LGPL) which comes with this package. */
-#include <gras.h>
+#include "gras.h"
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
XBT_LOG_NEW_DEFAULT_CATEGORY(test,"Logging specific to this test");
-static xbt_error_t traverse(xbt_dict_t head) {
+static void traverse(xbt_dict_t head) {
xbt_dict_cursor_t cursor=NULL;
char *key;
char *data;
xbt_assert2 (!strcmp(key,data),
"Key(%s) != value(%s). Abording\n",key,data);
}
- return no_error;
}
-static xbt_error_t countelems(xbt_dict_t head,int*count) {
+static int countelems(xbt_dict_t head) {
xbt_dict_cursor_t cursor;
char *key;
void *data;
- *count=0;
+ int res = 0;
xbt_dict_foreach(head,cursor,key,data) {
- (*count)++;
+ res++;
}
- return no_error;
+ return res;
}
int main(int argc,char **argv) {
- xbt_error_t errcode;
xbt_dict_t head=NULL;
int i,j,k, nb;
char *key;
void *data;
- xbt_init_defaultlog(&argc,argv,"dict.thresh=verbose");
+ xbt_init(&argc,argv);
srand((unsigned int)time(NULL));
printf("Dictionnary: CRASH test:\n");
/* printf("[%d %s]\n",j,key); */
xbt_dict_set(head,key,key,&free);
}
- nb=0;
/* xbt_dict_dump(head,(void (*)(void*))&printf); */
- TRYFAIL(countelems(head,&nb));
+ nb = countelems(head);
if (nb != 1000) {
printf ("\nI found %d elements, and not 1000\n",nb);
abort();
}
- TRYFAIL(traverse(head));
+ traverse(head);
xbt_dict_free(&head);
xbt_dict_free(&head);
}
}
printf("\n Count the elements (retrieving the key and data for each): \n");
- TRYFAIL(countelems(head,&i));
+ i = countelems(head);
printf(" There is %d elements\n",i);
printf("\n Search my 20 000 elements 20 times. (a point is a test)\n");
for (j=0;j<NB_ELM;j++) {
sprintf(key,"%d",j);
- TRYFAIL(xbt_dict_get(head,key,&data));
+ data = xbt_dict_get(head,key);
if (strcmp(key,(char*)data)) {
printf("key=%s != data=%s\n",key,(char*)data);
abort();
if (!(j%10000)) printf("."); fflush(stdout);
sprintf(key,"%d",j);
- TRYFAIL(xbt_dict_remove(head,key));
+ xbt_dict_remove(head,key);
}
printf("\n");
free(key);