test_sdis_interface.c (6269B)
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 int 20 main(int argc, char** argv) 21 { 22 struct sdis_data* data = NULL; 23 struct sdis_device* dev = NULL; 24 struct sdis_medium* fluid = NULL; 25 struct sdis_medium* solid = NULL; 26 struct sdis_interface* interf = NULL; 27 struct sdis_interface* interf2 = NULL; 28 struct sdis_fluid_shader fluid_shader = DUMMY_FLUID_SHADER; 29 struct sdis_solid_shader solid_shader = DUMMY_SOLID_SHADER; 30 struct sdis_interface_shader shader = DUMMY_INTERFACE_SHADER; 31 struct sdis_interface_shader shader2 = SDIS_INTERFACE_SHADER_NULL; 32 (void)argc, (void)argv; 33 34 OK(sdis_device_create(&SDIS_DEVICE_CREATE_ARGS_DEFAULT, &dev)); 35 36 OK(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid)); 37 OK(sdis_solid_create(dev, &solid_shader, NULL, &solid)); 38 39 shader = SDIS_INTERFACE_SHADER_NULL; 40 41 #define CREATE sdis_interface_create 42 BA(CREATE(NULL, NULL, NULL, NULL, NULL, NULL)); 43 BA(CREATE(dev, NULL, NULL, NULL, NULL, NULL)); 44 BA(CREATE(NULL, solid, NULL, NULL, NULL, NULL)); 45 BA(CREATE(dev, solid, NULL, NULL, NULL, NULL)); 46 BA(CREATE(NULL, NULL, fluid, NULL, NULL, NULL)); 47 BA(CREATE(dev, NULL, fluid, NULL, NULL, NULL)); 48 BA(CREATE(NULL, solid, fluid, NULL, NULL, NULL)); 49 BA(CREATE(dev, solid, fluid, NULL, NULL, NULL)); 50 BA(CREATE(NULL, NULL, NULL, &shader, NULL, NULL)); 51 BA(CREATE(dev, NULL, NULL, &shader, NULL, NULL)); 52 BA(CREATE(NULL, solid, NULL, &shader, NULL, NULL)); 53 BA(CREATE(dev, solid, NULL, &shader, NULL, NULL)); 54 BA(CREATE(NULL, NULL, fluid, &shader, NULL, NULL)); 55 BA(CREATE(dev, NULL, fluid, &shader, NULL, NULL)); 56 BA(CREATE(NULL, solid, fluid, &shader, NULL, NULL)); 57 BA(CREATE(dev, solid, fluid, &shader, NULL, NULL)); 58 BA(CREATE(NULL, NULL, NULL, NULL, NULL, &interf)); 59 BA(CREATE(dev, NULL, NULL, NULL, NULL, &interf)); 60 BA(CREATE(NULL, solid, NULL, NULL, NULL, &interf)); 61 BA(CREATE(dev, solid, NULL, NULL, NULL, &interf)); 62 BA(CREATE(NULL, NULL, fluid, NULL, NULL, &interf)); 63 BA(CREATE(dev, NULL, fluid, NULL, NULL, &interf)); 64 BA(CREATE(NULL, solid, fluid, NULL, NULL, &interf)); 65 BA(CREATE(dev, solid, fluid, NULL, NULL, &interf)); 66 BA(CREATE(NULL, NULL, NULL, &shader, NULL, &interf)); 67 BA(CREATE(dev, NULL, NULL, &shader, NULL, &interf)); 68 BA(CREATE(NULL, solid, NULL, &shader, NULL, &interf)); 69 BA(CREATE(dev, solid, NULL, &shader, NULL, &interf)); 70 BA(CREATE(NULL, NULL, fluid, &shader, NULL, &interf)); 71 BA(CREATE(dev, NULL, fluid, &shader, NULL, &interf)); 72 BA(CREATE(NULL, solid, fluid, &shader, NULL, &interf)); 73 OK(CREATE(dev, solid, fluid, &shader, NULL, &interf)); 74 75 BA(sdis_interface_ref_get(NULL)); 76 OK(sdis_interface_ref_get(interf)); 77 BA(sdis_interface_ref_put(NULL)); 78 OK(sdis_interface_ref_put(interf)); 79 OK(sdis_interface_ref_put(interf)); 80 81 OK(CREATE(dev, solid, solid, &shader, NULL, &interf)); 82 OK(sdis_interface_ref_put(interf)); 83 shader = SDIS_INTERFACE_SHADER_NULL; 84 OK(CREATE(dev, solid, solid, &shader, NULL, &interf)); 85 OK(sdis_interface_ref_put(interf)); 86 87 shader.front.temperature = dummy_interface_getter; 88 OK(CREATE(dev, solid, solid, &shader, NULL, &interf)); 89 OK(sdis_interface_ref_put(interf)); 90 91 shader.back.emissivity = dummy_radiative_interface_getter; 92 OK(CREATE(dev, solid, fluid, &shader, NULL, &interf)); 93 OK(sdis_interface_ref_put(interf)); 94 shader.back.specular_fraction = dummy_radiative_interface_getter; 95 OK(CREATE(dev, solid, fluid, &shader, NULL, &interf)); 96 OK(sdis_interface_ref_put(interf)); 97 shader.back = SDIS_INTERFACE_SIDE_SHADER_NULL; 98 shader.front.emissivity = dummy_radiative_interface_getter; 99 OK(CREATE(dev, solid, fluid, &shader, NULL, &interf)); /* Warning */ 100 OK(sdis_interface_ref_put(interf)); 101 shader.front.emissivity = NULL; 102 shader.front.specular_fraction = dummy_radiative_interface_getter; 103 OK(CREATE(dev, solid, fluid, &shader, NULL, &interf)); /* Warning */ 104 OK(sdis_interface_ref_put(interf)); 105 shader.front.specular_fraction = NULL; 106 shader.convection_coef_upper_bound = -1; 107 OK(CREATE(dev, solid, solid, &shader, NULL, &interf)); /* Warning */ 108 OK(sdis_interface_ref_put(interf)); 109 BA(CREATE(dev, solid, fluid, &shader, NULL, &interf)); 110 shader.convection_coef_upper_bound = 0; 111 112 OK(sdis_data_create(dev, 4, 16, NULL, &data)); 113 OK(CREATE(dev, solid, fluid, &shader, data, &interf)); 114 OK(CREATE(dev, solid, fluid, &shader, NULL, &interf2)); 115 116 CHK(sdis_interface_get_data(interf) == data); 117 CHK(sdis_interface_get_data(interf2) == NULL); 118 CHK(sdis_interface_get_id(interf) != sdis_interface_get_id(interf2)); 119 120 BA(sdis_interface_get_shader(NULL, &shader2)); 121 BA(sdis_interface_get_shader(interf, NULL)); 122 OK(sdis_interface_get_shader(interf, &shader2)); 123 124 CHK(shader.convection_coef == shader2.convection_coef); 125 CHK(shader.convection_coef_upper_bound == shader2.convection_coef_upper_bound); 126 CHK(shader.front.temperature == shader2.front.temperature); 127 CHK(shader.front.flux == shader2.front.flux); 128 CHK(shader.front.emissivity == shader2.front.emissivity); 129 CHK(shader.front.specular_fraction == shader2.front.specular_fraction); 130 CHK(shader.back.temperature == shader2.back.temperature); 131 CHK(shader.back.flux == shader2.back.flux); 132 CHK(shader.back.emissivity == shader2.back.emissivity); 133 CHK(shader.back.specular_fraction == shader2.back.specular_fraction); 134 135 OK(sdis_interface_ref_put(interf)); 136 OK(sdis_interface_ref_put(interf2)); 137 OK(sdis_data_ref_put(data)); 138 139 #undef CREATE 140 141 OK(sdis_device_ref_put(dev)); 142 OK(sdis_medium_ref_put(fluid)); 143 OK(sdis_medium_ref_put(solid)); 144 145 CHK(mem_allocated_size() == 0); 146 return 0; 147 } 148