stardis-solver

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

test_sdis_data.c (2843B)


      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 <string.h>
     20 
     21 struct param {
     22   struct sdis_data* name;
     23   double d;
     24   int i;
     25 };
     26 
     27 static void
     28 param_release(void* mem)
     29 {
     30   struct param* param = mem;
     31   CHK(param != NULL);
     32   if(param->name) OK(sdis_data_ref_put(param->name));
     33 }
     34 
     35 int
     36 main(int argc, char** argv)
     37 {
     38   const char* str = "Hello world!";
     39   struct sdis_device* dev = NULL;
     40   struct sdis_data* data = NULL;
     41   struct param* param = NULL;
     42   (void)argc, (void)argv;
     43 
     44   OK(sdis_device_create(&SDIS_DEVICE_CREATE_ARGS_DEFAULT, &dev));
     45   BA(sdis_data_create(NULL, 0, 0, NULL, NULL));
     46   BA(sdis_data_create(dev, 0, 0, NULL, NULL));
     47   BA(sdis_data_create(NULL, 8, 0, NULL, NULL));
     48   BA(sdis_data_create(dev, 8, 0, NULL, NULL));
     49   BA(sdis_data_create(NULL, 0, 8, NULL, NULL));
     50   BA(sdis_data_create(dev, 0, 8, NULL, NULL));
     51   BA(sdis_data_create(NULL, 8, 8, NULL, NULL));
     52   BA(sdis_data_create(dev, 8, 8, NULL, NULL));
     53 
     54   BA(sdis_data_create(NULL, 0, 0, NULL, &data));
     55   BA(sdis_data_create(dev, 0, 0, NULL, &data));
     56   BA(sdis_data_create(NULL, 8, 0, NULL, &data));
     57   BA(sdis_data_create(dev, 8, 0, NULL, &data));
     58   BA(sdis_data_create(NULL, 0, 8, NULL, &data));
     59   BA(sdis_data_create(dev, 0, 8, NULL, &data));
     60   BA(sdis_data_create(NULL, 8, 8, NULL, &data));
     61   OK(sdis_data_create(dev, 8, 8, NULL, &data));
     62 
     63   CHK(sdis_data_get(data) != NULL);
     64   CHK(sdis_data_cget(data) == sdis_data_get(data));
     65   CHK(IS_ALIGNED(sdis_data_get(data), 8));
     66 
     67   BA(sdis_data_ref_get(NULL));
     68   OK(sdis_data_ref_get(data));
     69   BA(sdis_data_ref_put(NULL));
     70   OK(sdis_data_ref_put(data));
     71   OK(sdis_data_ref_put(data));
     72 
     73   OK(sdis_data_create(dev, sizeof(struct param), 64, param_release, &data));
     74   param = sdis_data_get(data);
     75   OK(sdis_data_create(dev, strlen(str)+1, ALIGNOF(char), NULL, &param->name));
     76   strcpy(sdis_data_get(param->name), str);
     77   param->d = 3.14159;
     78   param->i = 314159;
     79 
     80   param = sdis_data_get(data);
     81   CHK(strcmp(sdis_data_cget(param->name), str) == 0);
     82   CHK(param->d == 3.14159);
     83   CHK(param->i == 314159);
     84 
     85   OK(sdis_data_ref_put(data));
     86 
     87   OK(sdis_device_ref_put(dev));
     88   CHK(mem_allocated_size() == 0);
     89   return 0;
     90 }
     91