star-buffer

Load 1D arrays in binary format
git clone git://git.meso-star.fr/star-buffer.git
Log | Files | Refs | README | LICENSE

commit 8570bc7e66b8ea92daa1c57ecdf2ecea29e7fcda
parent 342a12252af5ec8659e1329cc9af5281b03797ac
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Mon, 13 Jun 2022 16:09:29 +0200

Refactoring of the loading tests

Diffstat:
Msrc/test_sbuf_load.c | 113++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------
1 file changed, 72 insertions(+), 41 deletions(-)

diff --git a/src/test_sbuf_load.c b/src/test_sbuf_load.c @@ -195,32 +195,39 @@ write_buffer } static void -test_load(struct sbuf* buf, const struct type_desc* type) +test_misc(struct sbuf* buf) { struct sbuf_desc desc = SBUF_DESC_NULL; struct header header; + struct type_desc type; FILE* fp = NULL; - const char* filename = "test_file.sbuf"; - - CHK(buf && type); + CHK(buf); - fp = fopen(filename, "w+"); - CHK(fp); + type.set = f32_set; + type.eq = f32_eq; + type.size = sizeof(float); + type.alignment = ALIGNOF(float); header.pagesize = 16384; - header.size = 287; - header.szitem = type->size; - header.alitem = type->alignment; - write_buffer(fp, &header, type); + header.size = 123; + header.szitem = type.size; + header.alitem = type.alignment; + CHK(fp = tmpfile()); + write_buffer(fp, &header, &type); rewind(fp); - CHK(sbuf_load_stream(NULL, fp, filename) == RES_BAD_ARG); - CHK(sbuf_load_stream(buf, NULL, filename) == RES_BAD_ARG); + + CHK(sbuf_load_stream(NULL, fp, NULL) == RES_BAD_ARG); + CHK(sbuf_load_stream(buf, NULL, NULL) == RES_BAD_ARG); CHK(sbuf_load_stream(buf, fp, NULL) == RES_OK); + + rewind(fp); + CHK(sbuf_load_stream(buf, fp, "<stream>") == RES_OK); + CHK(sbuf_get_desc(NULL, &desc) == RES_BAD_ARG); CHK(sbuf_get_desc(buf, NULL) == RES_BAD_ARG); CHK(sbuf_get_desc(buf, &desc) == RES_OK); - check_sbuf_desc(&desc, header.size, type); + check_sbuf_desc(&desc, header.size, &type); CHK(fclose(fp) == 0); } @@ -233,14 +240,64 @@ test_buffer const res_T res) { FILE* fp = NULL; + CHK(buf && type); + CHK(fp = tmpfile()); write_buffer(fp, header, type); rewind(fp); + CHK(sbuf_load_stream(buf, fp, NULL) == res); + + if(res == RES_OK) { + struct sbuf_desc desc = SBUF_DESC_NULL; + CHK(sbuf_get_desc(buf, &desc) == RES_OK); + check_sbuf_desc(&desc, header->size, type); + } + CHK(fclose(fp) == 0); } static void +test_load(struct sbuf* buf) +{ + struct header header; + struct type_desc type; + + type.set = i16_f32_set; + type.eq = i16_f32_eq; + type.size = sizeof(struct i16_f32); + type.alignment = ALIGNOF(struct i16_f32); + + header.pagesize = 16384; + header.size = 287; + header.szitem = type.size; + header.alitem = type.alignment; + + test_buffer(buf, &header, &type, RES_OK); + + type.alignment = header.alitem = 32; + test_buffer(buf, &header, &type, RES_OK); + + type.set = char7_set; + type.eq = char7_eq; + type.size = header.szitem = sizeof(char7_T); + type.alignment = header.alitem = ALIGNOF(char7_T); + test_buffer(buf, &header, &type, RES_OK); + + type.set = ui32_f32_set; + type.eq = ui32_f32_eq; + type.size = header.szitem = sizeof(struct ui32_f32); + type.alignment = header.alitem = ALIGNOF(struct ui32_f32); + test_buffer(buf, &header, &type, RES_OK); + + type.set = f32_set; + type.eq = f32_eq; + type.size = header.szitem = sizeof(float); + type.alignment = header.alitem = ALIGNOF(float); + test_buffer(buf, &header, &type, RES_OK); +} + +static void test_load_fail(struct sbuf* buf) { struct type_desc type; @@ -337,40 +394,14 @@ int main(int argc, char** argv) { struct sbuf_create_args args = SBUF_CREATE_ARGS_DEFAULT; - struct type_desc type; struct sbuf* buf = NULL; (void)argc, (void)argv; args.verbose = 1; CHK(sbuf_create(&args, &buf) == RES_OK); - type.set = i16_f32_set; - type.eq = i16_f32_eq; - type.size = sizeof(struct i16_f32); - type.alignment = ALIGNOF(struct i16_f32); - test_load(buf, &type); - - type.alignment = 32; - test_load(buf, &type); - - type.set = char7_set; - type.eq = char7_eq; - type.size = sizeof(char7_T); - type.alignment = ALIGNOF(char7_T); - test_load(buf, &type); - - type.set = ui32_f32_set; - type.eq = ui32_f32_eq; - type.size = sizeof(struct ui32_f32); - type.alignment = ALIGNOF(struct ui32_f32); - test_load(buf, &type); - - type.set = f32_set; - type.eq = f32_eq; - type.size = sizeof(float); - type.alignment = ALIGNOF(float); - test_load(buf, &type); - + test_misc(buf); + test_load(buf); test_load_fail(buf); test_load_files(buf, argc, argv);