XBT_LOG_NEW_DEFAULT_CATEGORY(Test,"this test");
-#define NB_ELM 10/*00*/
+#define NB_ELM 100 /*00*/
#define DEPTH 5
-#define KEY_SIZE 6 /*512*/
-#define NB_TEST 20
-int verbose=1;
+#define KEY_SIZE 512
+#define NB_TEST 20 /*20*/
+int verbose=0;
static void str_free(void *s) {
char *c=*(char**)s;
int main(int argc, char *argv[]) {
xbt_error_t errcode;
- xbt_dict_t mdict=xbt_dict_new();
+ xbt_dict_t mdict = NULL;
int i,j,k,l;
xbt_dynar_t keys = xbt_dynar_new(sizeof(char*),str_free);
void *data;
printf(" Fill the struct and frees it %d times, using %d elements, depth of multicache=%d\n",NB_TEST,NB_ELM,DEPTH);
printf(" with %d chars long randomized keys. (a point is a test)\n",KEY_SIZE);
+ for (l=0 ; l<DEPTH ; l++) {
+ key=xbt_malloc(KEY_SIZE);
+ xbt_dynar_push(keys,&key);
+ }
+
+
for (i=0;i<NB_TEST;i++) {
- if (verbose) {
+ mdict = xbt_dict_new();
+ VERB1("mdict=%p",mdict);
+ if (verbose>0) {
printf("Test %d\n",i);
- } else {
+ } else if (verbose==0) {
if (i%10) printf("."); else printf("%d",i/10);
}
fflush(stdout);
for (j=0;j<NB_ELM;j++) {
- if (verbose) printf (" Add {");
+ if (verbose>0) printf (" Add {");
for (l=0 ; l<DEPTH ; l++) {
- key=xbt_malloc(KEY_SIZE);
+ key=*(char**)xbt_dynar_get_ptr(keys,l);
for (k=0;k<KEY_SIZE-1;k++)
key[k]=rand() % ('z' - 'a') + 'a';
key[k]='\0';
- if (verbose) printf("%p=%s %s ",key, key,(l<DEPTH-1?";":"}"));
- xbt_dynar_push(keys,&key);
+ if (verbose>0) printf("%p=%s %s ",key, key,(l<DEPTH-1?";":"}"));
}
- if (verbose) printf("in multitree %p.\n",mdict);
+ if (verbose>0) printf("in multitree %p.\n",mdict);
- TRYFAIL(xbt_multidict_set(mdict,keys,xbt_strdup(key),&str_free));
+ TRYFAIL(xbt_multidict_set(mdict,keys,xbt_strdup(key),free));
TRYFAIL(xbt_multidict_get(mdict,keys,&data));
"Retrieved value (%s) does not match the entrered one (%s)\n",
(char*)data,key);
}
+ xbt_dict_free(&mdict);
}
+
+ xbt_dynar_free(&keys);
-/* if (verbose)
+/* if (verbose>0)
xbt_dict_dump(mdict,&xbt_dict_print);*/
xbt_dict_free(&mdict);