test_sdis_medium.c (6007B)
1 /* Copyright (C) 2016-2025 |Méso|Star> (contact@meso-star.com) 2 * 3 * This program is free software: you can redistribute it and/or modify 4 * it under the terms of the GNU General Public License as published by 5 * the Free Software Foundation, either version 3 of the License, or 6 * (at your option) any later version. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 * 13 * You should have received a copy of the GNU General Public License 14 * along with this program. If not, see <http://www.gnu.org/licenses/>. */ 15 16 #include "sdis.h" 17 #include "test_sdis_utils.h" 18 19 #include <rsys/math.h> 20 21 int 22 main(int argc, char** argv) 23 { 24 struct sdis_data* data = NULL; 25 struct sdis_device* dev = NULL; 26 struct sdis_medium* fluid = NULL; 27 struct sdis_medium* solid = NULL; 28 struct sdis_fluid_shader fluid_shader = DUMMY_FLUID_SHADER; 29 struct sdis_solid_shader solid_shader = DUMMY_SOLID_SHADER; 30 struct sdis_fluid_shader fluid_shader2 = SDIS_FLUID_SHADER_NULL; 31 struct sdis_solid_shader solid_shader2 = SDIS_SOLID_SHADER_NULL; 32 (void)argc, (void)argv; 33 34 OK(sdis_device_create(&SDIS_DEVICE_CREATE_ARGS_DEFAULT, &dev)); 35 36 BA(sdis_fluid_create(NULL, NULL, NULL, NULL)); 37 BA(sdis_fluid_create(dev, NULL, NULL, NULL)); 38 BA(sdis_fluid_create(NULL, &fluid_shader, NULL, NULL)); 39 BA(sdis_fluid_create(dev, &fluid_shader, NULL, NULL)); 40 BA(sdis_fluid_create(NULL, NULL, NULL, &fluid)); 41 BA(sdis_fluid_create(dev, NULL, NULL, &fluid)); 42 BA(sdis_fluid_create(NULL, &fluid_shader, NULL, &fluid)); 43 OK(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid)); 44 45 CHK(sdis_medium_get_type(fluid) == SDIS_FLUID); 46 CHK(sdis_medium_get_data(fluid) == NULL); 47 48 BA(sdis_medium_ref_get(NULL)); 49 OK(sdis_medium_ref_get(fluid)); 50 BA(sdis_medium_ref_put(NULL)); 51 OK(sdis_medium_ref_put(fluid)); 52 OK(sdis_medium_ref_put(fluid)); 53 54 fluid_shader.calorific_capacity = NULL; 55 BA(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid)); 56 fluid_shader.calorific_capacity = DUMMY_FLUID_SHADER.calorific_capacity; 57 58 fluid_shader.volumic_mass = NULL; 59 BA(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid)); 60 fluid_shader.volumic_mass = DUMMY_FLUID_SHADER.volumic_mass; 61 62 fluid_shader.temperature = NULL; 63 BA(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid)); 64 fluid_shader.temperature = DUMMY_FLUID_SHADER.temperature; 65 66 fluid_shader.t0 = -INF; 67 OK(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid)); 68 OK(sdis_medium_ref_put(fluid)); 69 fluid_shader.t0 = INF; 70 OK(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid)); 71 OK(sdis_medium_ref_put(fluid)); 72 fluid_shader.t0 = DUMMY_FLUID_SHADER.t0; 73 74 BA(sdis_fluid_create(dev, &SDIS_FLUID_SHADER_NULL, NULL, &fluid)); 75 76 OK(sdis_data_create(dev, 4, 16, NULL, &data)); 77 BA(sdis_solid_create(NULL, NULL, data, NULL)); 78 BA(sdis_solid_create(dev, NULL, data, NULL)); 79 BA(sdis_solid_create(NULL, &solid_shader, data, NULL)); 80 BA(sdis_solid_create(dev, &solid_shader, data, NULL)); 81 BA(sdis_solid_create(NULL, NULL, data, &solid)); 82 BA(sdis_solid_create(dev, NULL, data, &solid)); 83 BA(sdis_solid_create(NULL, &solid_shader, data, &solid)); 84 OK(sdis_solid_create(dev, &solid_shader, data, &solid)); 85 CHK(sdis_medium_get_type(solid) == SDIS_SOLID); 86 CHK(sdis_medium_get_data(solid) == data); 87 88 OK(sdis_medium_ref_put(solid)); 89 OK(sdis_data_ref_put(data)); 90 91 solid_shader.calorific_capacity = NULL; 92 BA(sdis_solid_create(dev, &solid_shader, NULL, &solid)); 93 solid_shader.calorific_capacity = DUMMY_SOLID_SHADER.calorific_capacity; 94 95 solid_shader.thermal_conductivity = NULL; 96 BA(sdis_solid_create(dev, &solid_shader, NULL, &solid)); 97 solid_shader.thermal_conductivity = DUMMY_SOLID_SHADER.thermal_conductivity; 98 99 solid_shader.volumic_mass = NULL; 100 BA(sdis_solid_create(dev, &solid_shader, NULL, &solid)); 101 solid_shader.volumic_mass = DUMMY_SOLID_SHADER.volumic_mass; 102 103 solid_shader.delta = NULL; 104 BA(sdis_solid_create(dev, &solid_shader, NULL, &solid)); 105 solid_shader.delta = DUMMY_SOLID_SHADER.delta; 106 107 solid_shader.temperature = NULL; 108 BA(sdis_solid_create(dev, &solid_shader, NULL, &solid)); 109 solid_shader.temperature = DUMMY_SOLID_SHADER.temperature; 110 111 solid_shader.t0 = -INF; 112 OK(sdis_solid_create(dev, &solid_shader, NULL, &solid)); 113 OK(sdis_medium_ref_put(solid)); 114 solid_shader.t0 = INF; 115 OK(sdis_solid_create(dev, &solid_shader, NULL, &solid)); 116 OK(sdis_medium_ref_put(solid)); 117 solid_shader.t0 = DUMMY_SOLID_SHADER.t0; 118 119 OK(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid)); 120 OK(sdis_solid_create(dev, &solid_shader, NULL, &solid)); 121 122 CHK(sdis_medium_get_id(fluid) != sdis_medium_get_id(solid)); 123 124 BA(sdis_fluid_get_shader(NULL, &fluid_shader2)); 125 BA(sdis_fluid_get_shader(fluid, NULL)); 126 BA(sdis_fluid_get_shader(solid, &fluid_shader2)); 127 OK(sdis_fluid_get_shader(fluid, &fluid_shader2)); 128 129 CHK(fluid_shader.calorific_capacity == fluid_shader2.calorific_capacity); 130 CHK(fluid_shader.volumic_mass == fluid_shader2.volumic_mass); 131 CHK(fluid_shader.temperature == fluid_shader2.temperature); 132 CHK(fluid_shader.t0 == fluid_shader2.t0); 133 134 BA(sdis_solid_get_shader(NULL, &solid_shader2)); 135 BA(sdis_solid_get_shader(solid, NULL)); 136 BA(sdis_solid_get_shader(fluid, &solid_shader2)); 137 OK(sdis_solid_get_shader(solid, &solid_shader2)); 138 139 CHK(solid_shader.calorific_capacity == solid_shader2.calorific_capacity); 140 CHK(solid_shader.thermal_conductivity == solid_shader2.thermal_conductivity); 141 CHK(solid_shader.volumic_mass == solid_shader2.volumic_mass); 142 CHK(solid_shader.delta == solid_shader2.delta); 143 CHK(solid_shader.volumic_power == solid_shader2.volumic_power); 144 CHK(solid_shader.temperature == solid_shader2.temperature); 145 CHK(solid_shader.t0 == solid_shader2.t0); 146 147 OK(sdis_medium_ref_put(solid)); 148 OK(sdis_medium_ref_put(fluid)); 149 OK(sdis_device_ref_put(dev)); 150 151 CHK(mem_allocated_size() == 0); 152 153 return 0; 154 }