star-sp

Random number generators and distributions
git clone git://git.meso-star.fr/star-sp.git
Log | Files | Refs | README | LICENSE

commit 4a326e9337304a3b4c5692f9085490e0ead03d63
parent 2a2c2572b07857b108d983feab45c27ab2470f41
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Fri, 28 Aug 2015 13:31:30 +0200

Add some tests for proxy RNG

Diffstat:
Msrc/test_ssp_rng_proxy.c | 25++++++++++++++-----------
1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/src/test_ssp_rng_proxy.c b/src/test_ssp_rng_proxy.c @@ -38,6 +38,7 @@ main(int argc, char** argv) struct ssp_rng_proxy* proxy1, *proxy2; struct ssp_rng* rng[4]; struct ssp_rng* rng1[4], * rng2[4]; + struct ssp_rng* rng3; struct mem_allocator allocator; size_t i = 0; (void)argc, (void)argv; @@ -58,7 +59,6 @@ main(int argc, char** argv) CHECK(ssp_rng_proxy_ref_get(proxy), RES_OK); CHECK(ssp_rng_proxy_ref_put(NULL), RES_BAD_ARG); CHECK(ssp_rng_proxy_ref_put(proxy), RES_OK); - CHECK(ssp_rng_proxy_ref_put(proxy), RES_OK); CHECK(ssp_rng_proxy_create(&allocator, &ssp_rng_mt19937_64, 4, &proxy), RES_OK); @@ -86,21 +86,24 @@ main(int argc, char** argv) } } - CHECK(ssp_rng_proxy_create(&allocator, &ssp_rng_threefry, 4, &proxy1), RES_OK); - CHECK(ssp_rng_proxy_create(&allocator, &ssp_rng_threefry, 4, &proxy2), RES_OK); - FOR_EACH(i, 0, 4) { - CHECK(ssp_rng_proxy_create_rng(proxy1, i, &rng1[i]), RES_OK); - CHECK(ssp_rng_proxy_create_rng(proxy2, i, &rng2[i]), RES_OK); - } + CHECK(ssp_rng_proxy_create(&allocator, &ssp_rng_threefry, 1, &proxy1), RES_OK); + CHECK(ssp_rng_proxy_create(&allocator, &ssp_rng_threefry, 1, &proxy2), RES_OK); + CHECK(ssp_rng_proxy_create_rng(proxy1, 0, &rng1[0]), RES_OK); + CHECK(ssp_rng_proxy_create_rng(proxy2, 0, &rng2[0]), RES_OK); + ssp_rng_create(NULL, &ssp_rng_threefry, &rng3); CHECK(ssp_rng_proxy_ref_put(proxy1), RES_OK); CHECK(ssp_rng_proxy_ref_put(proxy2), RES_OK); - ssp_rng_discard(rng1[0], 1000307); - for (i = 0; i < 1000307; i++) ssp_rng_get(rng2[0]); +#define COUNT 4605307 + ssp_rng_discard(rng1[0], COUNT); + ssp_rng_discard(rng3, COUNT+1); + for (i = 0; i < COUNT; i++) ssp_rng_get(rng2[0]); CHECK(ssp_rng_get(rng1[0]), ssp_rng_get(rng2[0])); + CHECK(ssp_rng_get(rng1[0]), ssp_rng_get(rng3)); FOR_EACH(i, 0, 4) CHECK(ssp_rng_ref_put(rng[i]), RES_OK); - FOR_EACH(i, 0, 4) CHECK(ssp_rng_ref_put(rng1[i]), RES_OK); - FOR_EACH(i, 0, 4) CHECK(ssp_rng_ref_put(rng2[i]), RES_OK); + CHECK(ssp_rng_ref_put(rng1[0]), RES_OK); + CHECK(ssp_rng_ref_put(rng2[0]), RES_OK); + CHECK(ssp_rng_ref_put(rng3), RES_OK); check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator);