star-ck

Describe the radiative properties of gas mixtures
git clone git://git.meso-star.fr/star-ck.git
Log | Files | Refs | README | LICENSE

commit 348ca93a0687f28ccbd687e1c3841384aa4bbc1f
parent 5178802a0749116983a05e43804924bafb55e18b
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Wed, 15 Jun 2022 10:51:50 +0200

Refactor load tests

Diffstat:
Msrc/test_sck_load.c | 194+++++++++++++++++++++++++++----------------------------------------------------
1 file changed, 66 insertions(+), 128 deletions(-)

diff --git a/src/test_sck_load.c b/src/test_sck_load.c @@ -20,12 +20,12 @@ #include <rsys/mem_allocator.h> #include <math.h> -static INLINE float +static INLINE double rand_canonic(void) { int r; while((r = rand()) == RAND_MAX); - return (float)r / (float)RAND_MAX; + return (double)r / (double)RAND_MAX; } /******************************************************************************* @@ -142,19 +142,15 @@ check_sck_load } static void -test_load(struct sck* sck) +write_sck + (FILE* fp, + const uint64_t pagesize, + const uint64_t nbands, + const uint64_t nnodes) { - FILE* fp = NULL; - const char* filename = "test_file.sck"; - const uint64_t pagesize = 16384; - const uint64_t nbands = 11; - const uint64_t nnodes = 1000; uint64_t iband; const char byte = 0; - fp = fopen(filename, "w+"); - CHK(fp); - /* Write the header */ CHK(fwrite(&pagesize, sizeof(pagesize), 1, fp) == 1); CHK(fwrite(&nbands, sizeof(nbands), 1, fp) == 1); @@ -206,172 +202,111 @@ test_load(struct sck* sck) /* Padding. Write one char to position the EOF indicator */ CHK(fseek(fp, (long)ALIGN_SIZE((size_t)ftell(fp), pagesize)-1, SEEK_SET) == 0); CHK(fwrite(&byte, sizeof(byte), 1, fp) == 1); +} + +static void +test_load(struct sck* sck) +{ + FILE* fp = NULL; + const char* filename = "test_file.sck"; + const uint64_t pagesize = 16384; + const uint64_t nbands = 11; + const uint64_t nnodes = 1000; + + CHK(fp = fopen(filename, "w+")); + write_sck(fp, pagesize, nbands, nnodes); rewind(fp); CHK(sck_load_stream(NULL, fp, filename) == RES_BAD_ARG); CHK(sck_load_stream(sck, NULL, filename) == RES_BAD_ARG); CHK(sck_load_stream(sck, fp, NULL) == RES_OK); check_sck_load(sck, nbands, nnodes); - rewind(fp); + CHK(sck_load_stream(sck, fp, filename) == RES_OK); + CHK(fclose(fp) == 0); CHK(sck_load(NULL, filename) == RES_BAD_ARG); CHK(sck_load(sck, NULL) == RES_BAD_ARG); CHK(sck_load(sck, "nop") == RES_IO_ERR); CHK(sck_load(sck, filename) == RES_OK); - - CHK(fclose(fp) == 0); + check_sck_load(sck, nbands, nnodes); } static void test_load_fail(struct sck* sck) { - const char byte = 1; FILE* fp = NULL; - uint64_t pagesize; - uint64_t nnodes; - uint64_t nbands; - uint64_t nqpts; double low; double upp; - double weight; - float ks; - float ka; - - /* Wrong pagesize */ - fp = tmpfile(); - CHK(fp); - pagesize = 2048; - nnodes = 1; - nbands = 1; - CHK(fwrite(&pagesize, sizeof(pagesize), 1, fp) == 1); - CHK(fwrite(&nbands, sizeof(nbands), 1, fp) == 1); - CHK(fwrite(&nnodes, sizeof(nnodes), 1, fp) == 1); - low = 0; - upp = 1; - nqpts = 1; - CHK(fwrite(&low, sizeof(low), 1, fp) == 1); - CHK(fwrite(&upp, sizeof(upp), 1, fp) == 1); - CHK(fwrite(&nqpts, sizeof(nqpts), 1, fp) == 1); - weight = 1; - CHK(fwrite(&weight, sizeof(weight), 1, fp) == 1); - CHK(fseek(fp, (long)ALIGN_SIZE((size_t)ftell(fp), pagesize), SEEK_SET) == 0); - ks = 1; - CHK(fwrite(&ks, sizeof(ka), 1, fp) == 1); - CHK(fseek(fp, (long)ALIGN_SIZE((size_t)ftell(fp), pagesize), SEEK_SET) == 0); - ka = 1; - CHK(fwrite(&ka, sizeof(ka), 1, fp) == 1); - CHK(fseek(fp, (long)ALIGN_SIZE((size_t)ftell(fp), pagesize)-1, SEEK_SET) == 0); - CHK(fwrite(&byte, sizeof(byte), 1, fp) == 1); /* Positioned the EOF */ + + /* The pagesize is less than the operating system page size*/ + CHK(fp = tmpfile()); + write_sck(fp, 2048, 1, 1); rewind(fp); + CHK(sck_load_stream(sck, fp, NULL) == RES_BAD_ARG); + CHK(fclose(fp) == 0); + /* The pagesize is not a power of two */ + CHK(fp = tmpfile()); + write_sck(fp, 4100, 1, 1); + rewind(fp); CHK(sck_load_stream(sck, fp, NULL) == RES_BAD_ARG); CHK(fclose(fp) == 0); /* Wrong #bands */ - fp = tmpfile(); - CHK(fp); - pagesize = 4096; - nnodes = 1; - nbands = 0; - CHK(fwrite(&pagesize, sizeof(pagesize), 1, fp) == 1); - CHK(fwrite(&nbands, sizeof(nbands), 1, fp) == 1); - CHK(fwrite(&nnodes, sizeof(nnodes), 1, fp) == 1); + CHK(fp = tmpfile()); + write_sck(fp, 4096, 0, 1); rewind(fp); - CHK(sck_load_stream(sck, fp, NULL) == RES_BAD_ARG); CHK(fclose(fp) == 0); /* Wrong #nodes */ - fp = tmpfile(); - CHK(fp); - pagesize = 4096; - nnodes = 0; - nbands = 1; - CHK(fwrite(&pagesize, sizeof(pagesize), 1, fp) == 1); - CHK(fwrite(&nbands, sizeof(nbands), 1, fp) == 1); - CHK(fwrite(&nnodes, sizeof(nnodes), 1, fp) == 1); - low = 0; - upp = 1; - nqpts = 1; - CHK(fwrite(&low, sizeof(low), 1, fp) == 1); - CHK(fwrite(&upp, sizeof(upp), 1, fp) == 1); - CHK(fwrite(&nqpts, sizeof(nqpts), 1, fp) == 1); - weight = 1; - CHK(fwrite(&weight, sizeof(weight), 1, fp) == 1); - CHK(fseek(fp, (long)ALIGN_SIZE((size_t)ftell(fp), pagesize)-1, SEEK_SET) == 0); - CHK(fwrite(&byte, sizeof(byte), 1, fp) == 1); /* Positioned the EOF */ + CHK(fp = tmpfile()); + write_sck(fp, 4096, 1, 0); rewind(fp); - CHK(sck_load_stream(sck, fp, NULL) == RES_BAD_ARG); CHK(fclose(fp) == 0); /* Wrong band boundaries */ - fp = tmpfile(); - CHK(fp); - pagesize = 16384; - nnodes = 1; - nbands = 1; - CHK(fwrite(&pagesize, sizeof(pagesize), 1, fp) == 1); - CHK(fwrite(&nbands, sizeof(nbands), 1, fp) == 1); - CHK(fwrite(&nnodes, sizeof(nnodes), 1, fp) == 1); low = 1; upp = 0; - nqpts = 1; + CHK(fp = tmpfile()); + write_sck(fp, 4096, 1, 1); + CHK(fseek(fp, 24, SEEK_SET) == 0); CHK(fwrite(&low, sizeof(low), 1, fp) == 1); CHK(fwrite(&upp, sizeof(upp), 1, fp) == 1); - CHK(fwrite(&nqpts, sizeof(nqpts), 1, fp) == 1); - weight = 1; - CHK(fwrite(&weight, sizeof(weight), 1, fp) == 1); - CHK(fseek(fp, (long)ALIGN_SIZE((size_t)ftell(fp), pagesize), SEEK_SET) == 0); - ks = 1; - CHK(fwrite(&ka, sizeof(ks), 1, fp) == 1); - CHK(fseek(fp, (long)ALIGN_SIZE((size_t)ftell(fp), pagesize), SEEK_SET) == 0); - ka = 1; - CHK(fwrite(&ka, sizeof(ka), 1, fp) == 1); - CHK(fseek(fp, (long)ALIGN_SIZE((size_t)ftell(fp), pagesize)-1, SEEK_SET) == 0); - CHK(fwrite(&byte, sizeof(byte), 1, fp) == 1); /* Positioned the EOF */ rewind(fp); - CHK(sck_load_stream(sck, fp, NULL) == RES_BAD_ARG); CHK(fclose(fp) == 0); /* Unsorted bands */ - fp = tmpfile(); - CHK(fp); - pagesize = 16384; - nnodes = 1; - nbands = 2; - CHK(fwrite(&pagesize, sizeof(pagesize), 1, fp) == 1); - CHK(fwrite(&nbands, sizeof(nbands), 1, fp) == 1); - CHK(fwrite(&nnodes, sizeof(nnodes), 1, fp) == 1); - low = 1; - upp = 2; - nqpts = 1; + CHK(fp = tmpfile()); + write_sck(fp, 4096, 2, 1); + CHK(fseek(fp, 24, SEEK_SET) == 0); + low = 1; upp = 2; CHK(fwrite(&low, sizeof(low), 1, fp) == 1); CHK(fwrite(&upp, sizeof(upp), 1, fp) == 1); - CHK(fwrite(&nqpts, sizeof(nqpts), 1, fp) == 1); - weight = 1; - CHK(fwrite(&weight, sizeof(weight), 1, fp) == 1); - low = 0; - upp = 1; - nqpts = 1; + CHK(fseek(fp, 56, SEEK_SET) == 0); + low = 0; upp = 1; CHK(fwrite(&low, sizeof(low), 1, fp) == 1); CHK(fwrite(&upp, sizeof(upp), 1, fp) == 1); - CHK(fwrite(&nqpts, sizeof(nqpts), 1, fp) == 1); - weight = 1; - CHK(fwrite(&weight, sizeof(weight), 1, fp) == 1); - CHK(fseek(fp, (long)ALIGN_SIZE((size_t)ftell(fp), pagesize), SEEK_SET) == 0); - ks = 1; - CHK(fwrite(&ka, sizeof(ks), 1, fp) == 1); - CHK(fseek(fp, (long)ALIGN_SIZE((size_t)ftell(fp), pagesize), SEEK_SET) == 0); - ka = 1; - CHK(fwrite(&ka, sizeof(ka), 1, fp) == 1); - CHK(fseek(fp, (long)ALIGN_SIZE((size_t)ftell(fp), pagesize)-1, SEEK_SET) == 0); - CHK(fwrite(&byte, sizeof(byte), 1, fp) == 1); /* Positioned the EOF */ rewind(fp); + CHK(sck_load_stream(sck, fp, NULL) == RES_BAD_ARG); + CHK(fclose(fp) == 0); + /* Bands overlap */ + CHK(fp = tmpfile()); + write_sck(fp, 4096, 2, 1); + CHK(fseek(fp, 24, SEEK_SET) == 0); + low = 0; upp = 1; + CHK(fwrite(&low, sizeof(low), 1, fp) == 1); + CHK(fwrite(&upp, sizeof(upp), 1, fp) == 1); + CHK(fseek(fp, 56, SEEK_SET) == 0); + low = 0.5; upp = 1.5; + CHK(fwrite(&low, sizeof(low), 1, fp) == 1); + CHK(fwrite(&upp, sizeof(upp), 1, fp) == 1); + rewind(fp); CHK(sck_load_stream(sck, fp, NULL) == RES_BAD_ARG); CHK(fclose(fp) == 0); } @@ -442,9 +377,12 @@ main(int argc, char** argv) args.verbose = 1; CHK(sck_create(&args, &sck) == RES_OK); - test_load(sck); - test_load_fail(sck); - test_load_files(sck, argc, argv); + if(argc > 1) { + test_load_files(sck, argc, argv); + } else { + test_load(sck); + test_load_fail(sck); + } CHK(sck_ref_put(sck) == RES_OK); CHK(mem_allocated_size() == 0);