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, ¶m->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