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:
| M | src/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);