commit 41003e0912f6baf80ab1d32bb0a968c0891990d6
parent fe83d96a6d11d758dd3522c9db1f8174cf87047a
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Tue, 27 Oct 2015 16:28:19 +0100
Add and test the smc_device_get_rng_type function
Retrieve the type of the RNG used by the Star Monte Carlo device.
Diffstat:
3 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/src/smc.h b/src/smc.h
@@ -156,6 +156,11 @@ smc_device_set_rng_type
(struct smc_device* dev,
const struct ssp_rng_type* type);
+SMC_API res_T
+smc_device_get_rng_type
+ (struct smc_device* dev,
+ struct ssp_rng_type* type);
+
/*******************************************************************************
* Integration API
******************************************************************************/
diff --git a/src/smc_device.c b/src/smc_device.c
@@ -187,3 +187,10 @@ error:
goto exit;
}
+res_T
+smc_device_get_rng_type(struct smc_device* dev, struct ssp_rng_type* type)
+{
+ if(!dev || !type) return RES_BAD_ARG;
+ return ssp_rng_proxy_get_type(dev->rng_proxy, type);
+}
+
diff --git a/src/test_smc_device.c b/src/test_smc_device.c
@@ -46,6 +46,7 @@ main(int argc, char** argv)
{
struct logger logger;
struct mem_allocator allocator;
+ struct ssp_rng_type type;
struct smc_device* dev;
(void)argc, (void)argv;
@@ -84,7 +85,17 @@ main(int argc, char** argv)
CHECK(smc_device_set_rng_type(dev, NULL), RES_BAD_ARG);
CHECK(smc_device_set_rng_type(NULL, &ssp_rng_ranlux48), RES_BAD_ARG);
CHECK(smc_device_set_rng_type(dev, &ssp_rng_ranlux48), RES_OK);
+
+ CHECK(smc_device_get_rng_type(NULL, NULL), RES_BAD_ARG);
+ CHECK(smc_device_get_rng_type(dev, NULL), RES_BAD_ARG);
+ CHECK(smc_device_get_rng_type(NULL, &type), RES_BAD_ARG);
+ CHECK(smc_device_get_rng_type(dev, &type), RES_OK);
+ CHECK(ssp_rng_type_eq(&type, &ssp_rng_ranlux48), 1);
+
CHECK(smc_device_set_rng_type(dev, &ssp_rng_kiss), RES_OK);
+ CHECK(smc_device_get_rng_type(dev, &type), RES_OK);
+ CHECK(ssp_rng_type_eq(&type, &ssp_rng_kiss), 1);
+
CHECK(smc_device_ref_put(dev), RES_OK);
CHECK(smc_device_create(&logger, &allocator, 4, &ssp_rng_ranlux48, &dev), RES_OK);