X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=test%2Ftest_mutex.c;h=52853b14cad0e17c0fd13f3b6f7eac5eb0126cb4;hb=a7eee1a2528940018127af361ba214b8688879f0;hp=843ea8f40a9c8163f71305038d262fdcecd92cae;hpb=83bf5a83b9296d6fe16e55d2c54209c35d2fa20b;p=yaz-moved-to-github.git diff --git a/test/test_mutex.c b/test/test_mutex.c index 843ea8f..52853b1 100644 --- a/test/test_mutex.c +++ b/test/test_mutex.c @@ -7,10 +7,18 @@ #include #include +#if HAVE_SYS_TIME_H +#include +#endif +#ifdef WIN32 +#include +#endif + #include #include +#include -static void tst(void) +static void tst_mutex(void) { YAZ_MUTEX p = 0; @@ -32,11 +40,43 @@ static void tst(void) yaz_mutex_destroy(&p); /* OK to "destroy" NULL handle */ } +static void tst_cond(void) +{ + YAZ_MUTEX p = 0; + YAZ_COND c; + struct timeval abstime; + int r; + + yaz_mutex_create(&p); + YAZ_CHECK(p); + if (!p) + return; + + yaz_cond_create(&c); + YAZ_CHECK(c); + if (!c) + return; + + r = yaz_gettimeofday(&abstime); + YAZ_CHECK_EQ(r, 0); + + abstime.tv_sec += 1; /* wait 1 second */ + + r = yaz_cond_wait(c, p, &abstime); + YAZ_CHECK(r != 0); + + yaz_cond_destroy(&c); + YAZ_CHECK(c == 0); + yaz_mutex_destroy(&p); + YAZ_CHECK(p == 0); +} + int main (int argc, char **argv) { YAZ_CHECK_INIT(argc, argv); YAZ_CHECK_LOG(); - tst(); + tst_mutex(); + tst_cond(); YAZ_CHECK_TERM; }