X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8981262edc050375bacd962f5ff149f89712a032..cf56a22da60094d8e7f14b1457526dc194d40226:/src/dynar_unit.c diff --git a/src/dynar_unit.c b/src/dynar_unit.c index 931c9685a8..7c451b5213 100644 --- a/src/dynar_unit.c +++ b/src/dynar_unit.c @@ -2,22 +2,24 @@ /* GENERATED FILE, DO NOT EDIT */ /*******************************/ +#include #include "xbt.h" /*******************************/ /* GENERATED FILE, DO NOT EDIT */ /*******************************/ -# 619 "xbt/dynar.c" +# 728 "xbt/dynar.c" #define NB_ELEM 5000 XBT_LOG_EXTERNAL_CATEGORY(xbt_dyn); XBT_LOG_DEFAULT_CATEGORY(xbt_dyn); -XBT_TEST_UNIT("int",test_dynar_int,"Dyars of integers") { +XBT_TEST_UNIT("int",test_dynar_int,"Dynars of integers") { /* Vars_decl [doxygen cruft] */ xbt_dynar_t d; - int i,cpt,cursor; + int i,cpt; + unsigned int cursor; int *iptr; xbt_test_add0("==== Traverse the empty dynar"); @@ -157,10 +159,13 @@ XBT_TEST_UNIT("int",test_dynar_int,"Dyars of integers") { xbt_dynar_free(&d); xbt_dynar_free(&d); } - -XBT_TEST_UNIT("double",test_dynar_double,"Dyars of doubles") { +/*******************************************************************************/ +/*******************************************************************************/ +/*******************************************************************************/ +XBT_TEST_UNIT("double",test_dynar_double,"Dynars of doubles") { xbt_dynar_t d; - int cpt,cursor; + int cpt; + unsigned int cursor; double d1,d2; xbt_test_add0("==== Traverse the empty dynar"); @@ -275,15 +280,19 @@ static void free_string(void *d){ free(*(void**)d); } +/*******************************************************************************/ +/*******************************************************************************/ +/*******************************************************************************/ XBT_TEST_UNIT("string",test_dynar_string,"Dyars of strings") { xbt_dynar_t d; int cpt; + unsigned int iter; char buf[1024]; char *s1,*s2; xbt_test_add0("==== Traverse the empty dynar"); d=xbt_dynar_new(sizeof(char *),&free_string); - xbt_dynar_foreach(d,cpt,s1){ + xbt_dynar_foreach(d,iter,s1){ xbt_test_assert0(FALSE, "Damnit, there is something in the empty dynar"); } @@ -334,8 +343,8 @@ XBT_TEST_UNIT("string",test_dynar_string,"Dyars of strings") { xbt_dynar_unshift(d,&s1); } /* 2. Traverse the dynar with the macro */ - xbt_dynar_foreach(d,cpt,s1) { - sprintf(buf,"%d",NB_ELEM - cpt -1); + xbt_dynar_foreach(d,iter,s1) { + sprintf(buf,"%d",NB_ELEM - iter -1); xbt_test_assert2 (!strcmp(buf,s1), "The retrieved value is not the same than the injected one (%s!=%s)", buf,s1); @@ -412,6 +421,54 @@ XBT_TEST_UNIT("string",test_dynar_string,"Dyars of strings") { } xbt_dynar_free(&d); /* end_of_doxygen */ } + + +/*******************************************************************************/ +/*******************************************************************************/ +/*******************************************************************************/ +#include "xbt/synchro.h" +static void pusher_f(void *a) { + xbt_dynar_t d=(xbt_dynar_t)a; + int i; + for (i=0; i<500; i++) { + xbt_dynar_push(d,&i); + } +} +static void poper_f(void *a) { + xbt_dynar_t d=(xbt_dynar_t)a; + int i; + int data; + xbt_ex_t e; + + for (i=0; i<500; i++) { + TRY { + xbt_dynar_pop(d,&data); + } CATCH(e) { + if (e.category == bound_error) { + xbt_ex_free(e); + i--; + } else { + RETHROW; + } + } + } +} + + +XBT_TEST_UNIT("synchronized int",test_dynar_sync_int,"Synchronized dynars of integers") { + /* Vars_decl [doxygen cruft] */ + xbt_dynar_t d; + xbt_thread_t pusher,poper; + + xbt_test_add0("==== Have a pusher and a popper on the dynar"); + d=xbt_dynar_new_sync(sizeof(int),NULL); + pusher = xbt_thread_create("pusher",pusher_f,d); + poper = xbt_thread_create("poper",poper_f,d); + xbt_thread_join(pusher); + xbt_thread_join(poper); + xbt_dynar_free(&d); +} + /*******************************/ /* GENERATED FILE, DO NOT EDIT */ /*******************************/