X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8981262edc050375bacd962f5ff149f89712a032..3cc9325535240d20ab9eab51ad116889b53bf20e:/src/dynar_unit.c diff --git a/src/dynar_unit.c b/src/dynar_unit.c index 931c9685a8..1b0245e538 100644 --- a/src/dynar_unit.c +++ b/src/dynar_unit.c @@ -2,19 +2,20 @@ /* 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; @@ -157,8 +158,10 @@ 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; double d1,d2; @@ -275,6 +278,9 @@ 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; @@ -412,6 +418,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 */ /*******************************/