stardis-solver

Solve coupled heat transfers
git clone git://git.meso-star.fr/stardis-solver.git
Log | Files | Refs | README | LICENSE

commit c19eb02ef78e13b4b5290a2ce4dd48c50fb318d0
parent 5e32fe8a48d0f6722e1984b051ba172872a2f650
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Fri, 15 Dec 2017 15:47:55 +0100

Test the medium API

Diffstat:
Mcmake/CMakeLists.txt | 1+
Msrc/sdis_medium.c | 4++--
Asrc/test_sdis_medium.c | 105+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/test_sdis_utils.h | 27+++++++++++++++++++++++++++
4 files changed, 135 insertions(+), 2 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt @@ -101,6 +101,7 @@ if(NOT NO_TEST) new_test(test_sdis_data) new_test(test_sdis_device) + new_test(test_sdis_medium) endif() ################################################################################ diff --git a/src/sdis_medium.c b/src/sdis_medium.c @@ -115,7 +115,7 @@ sdis_fluid_create struct sdis_medium* medium = NULL; res_T res = RES_OK; - if(!shader || !out_medium) { + if(!dev || !shader || !out_medium) { res = RES_BAD_ARG; goto error; } @@ -160,7 +160,7 @@ sdis_solid_create struct sdis_medium* medium = NULL; res_T res = RES_OK; - if(!shader || !out_medium) { + if(!dev || !shader || !out_medium) { res = RES_BAD_ARG; goto error; } diff --git a/src/test_sdis_medium.c b/src/test_sdis_medium.c @@ -0,0 +1,105 @@ +/* Copyright (C) |Meso|Star> 2016-2017 (contact@meso-star.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include "sdis.h" +#include "test_sdis_utils.h" + +int +main(int argc, char** argv) +{ + struct mem_allocator allocator; + struct sdis_device* dev = NULL; + struct sdis_medium* fluid = NULL; + struct sdis_medium* solid = NULL; + struct sdis_fluid_shader fluid_shader = DUMMY_FLUID_SHADER; + struct sdis_solid_shader solid_shader = DUMMY_SOLID_SHADER; + (void)argc, (void)argv; + + CHK(mem_init_proxy_allocator(&allocator, &mem_default_allocator) == RES_OK); + CHK(sdis_device_create + (NULL, &allocator, SDIS_NTHREADS_DEFAULT, 0, &dev) == RES_OK); + + CHK(sdis_fluid_create(NULL, NULL, NULL, NULL) == RES_BAD_ARG); + CHK(sdis_fluid_create(dev, NULL, NULL, NULL) == RES_BAD_ARG); + CHK(sdis_fluid_create(NULL, &fluid_shader, NULL, NULL) == RES_BAD_ARG); + CHK(sdis_fluid_create(dev, &fluid_shader, NULL, NULL) == RES_BAD_ARG); + CHK(sdis_fluid_create(NULL, NULL, NULL, &fluid) == RES_BAD_ARG); + CHK(sdis_fluid_create(dev, NULL, NULL, &fluid) == RES_BAD_ARG); + CHK(sdis_fluid_create(NULL, &fluid_shader, NULL, &fluid) == RES_BAD_ARG); + CHK(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid) == RES_OK); + + CHK(sdis_medium_ref_get(NULL) == RES_BAD_ARG); + CHK(sdis_medium_ref_get(fluid) == RES_OK); + CHK(sdis_medium_ref_put(NULL) == RES_BAD_ARG); + CHK(sdis_medium_ref_put(fluid) == RES_OK); + CHK(sdis_medium_ref_put(fluid) == RES_OK); + + fluid_shader.calorific_capacity = NULL; + CHK(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid) == RES_BAD_ARG); + fluid_shader.calorific_capacity = DUMMY_FLUID_SHADER.calorific_capacity; + + fluid_shader.volumic_mass = NULL; + CHK(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid) == RES_BAD_ARG); + fluid_shader.volumic_mass = DUMMY_FLUID_SHADER.volumic_mass; + + fluid_shader.initial_temperature = NULL; + CHK(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid) == RES_BAD_ARG); + fluid_shader.initial_temperature = DUMMY_FLUID_SHADER.initial_temperature; + + CHK(sdis_fluid_create + (dev, &SDIS_FLUID_SHADER_NULL, NULL, &fluid) == RES_BAD_ARG); + + CHK(sdis_solid_create(NULL, NULL, NULL, NULL) == RES_BAD_ARG); + CHK(sdis_solid_create(dev, NULL, NULL, NULL) == RES_BAD_ARG); + CHK(sdis_solid_create(NULL, &solid_shader, NULL, NULL) == RES_BAD_ARG); + CHK(sdis_solid_create(dev, &solid_shader, NULL, NULL) == RES_BAD_ARG); + CHK(sdis_solid_create(NULL, NULL, NULL, &solid) == RES_BAD_ARG); + CHK(sdis_solid_create(dev, NULL, NULL, &solid) == RES_BAD_ARG); + CHK(sdis_solid_create(NULL, &solid_shader, NULL, &solid) == RES_BAD_ARG); + CHK(sdis_solid_create(dev, &solid_shader, NULL, &solid) == RES_OK); + CHK(sdis_medium_ref_put(solid) == RES_OK); + + solid_shader.calorific_capacity = NULL; + CHK(sdis_solid_create(dev, &solid_shader, NULL, &solid) == RES_BAD_ARG); + solid_shader.calorific_capacity = DUMMY_SOLID_SHADER.calorific_capacity; + + solid_shader.thermal_conductivity = NULL; + CHK(sdis_solid_create(dev, &solid_shader, NULL, &solid) == RES_BAD_ARG); + solid_shader.thermal_conductivity = DUMMY_SOLID_SHADER.thermal_conductivity; + + solid_shader.volumic_mass = NULL; + CHK(sdis_solid_create(dev, &solid_shader, NULL, &solid) == RES_BAD_ARG); + solid_shader.volumic_mass = DUMMY_SOLID_SHADER.volumic_mass; + + solid_shader.delta_solid = NULL; + CHK(sdis_solid_create(dev, &solid_shader, NULL, &solid) == RES_BAD_ARG); + solid_shader.delta_solid = DUMMY_SOLID_SHADER.delta_solid; + + solid_shader.delta_boundary = NULL; + CHK(sdis_solid_create(dev, &solid_shader, NULL, &solid) == RES_BAD_ARG); + solid_shader.delta_boundary = DUMMY_SOLID_SHADER.delta_boundary; + + solid_shader.initial_temperature = NULL; + CHK(sdis_solid_create(dev, &solid_shader, NULL, &solid) == RES_BAD_ARG); + solid_shader.initial_temperature = DUMMY_SOLID_SHADER.initial_temperature; + + CHK(sdis_device_ref_put(dev) == RES_OK); + + check_memory_allocator(&allocator); + mem_shutdown_proxy_allocator(&allocator); + CHK(mem_allocated_size() == 0); + + return 0; +} diff --git a/src/test_sdis_utils.h b/src/test_sdis_utils.h @@ -20,6 +20,33 @@ #include <stdio.h> static INLINE void +dummy_getter + (struct sdis_device* dev, + struct sdis_data* data, + const struct sdis_rwalk_vertex* vert, + double* val) +{ + (void)dev, (void)data; + CHK(val != NULL && vert != NULL); + *val = 1; +} + +static const struct sdis_solid_shader DUMMY_SOLID_SHADER = { + dummy_getter, + dummy_getter, + dummy_getter, + dummy_getter, + dummy_getter, + dummy_getter +}; + +static const struct sdis_fluid_shader DUMMY_FLUID_SHADER = { + dummy_getter, + dummy_getter, + dummy_getter +}; + +static INLINE void check_memory_allocator(struct mem_allocator* allocator) { if(MEM_ALLOCATED_SIZE(allocator)) {