commit af80b87f0dffb12f0429229c64f8725f65c0b49e
parent b95348c666e7c6345f2e4c33168f7df4e5abeba8
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Mon, 23 May 2022 16:14:57 +0200
Test the mixture [de]serialization
Diffstat:
1 file changed, 62 insertions(+), 0 deletions(-)
diff --git a/src/test_sln_mixture.c b/src/test_sln_mixture.c
@@ -128,6 +128,67 @@ test_mixture
CHK(sln_mixture_create(sln, &mixture_args, &mixture) == RES_BAD_ARG);
}
+static void
+test_mixture_serialization
+ (struct sln_device* sln,
+ struct shtr* shtr,
+ struct shtr_isotope_metadata* metadata,
+ struct shtr_line_list* line_list)
+{
+ struct sln_mixture_create_args mixture_args = SLN_MIXTURE_CREATE_ARGS_DEFAULT;
+ struct sln_mixture_desc desc1 = SLN_MIXTURE_DESC_NULL;
+ struct sln_mixture_desc desc2 = SLN_MIXTURE_DESC_NULL;
+ struct sln_mixture* mixture1 = NULL;
+ struct sln_mixture* mixture2 = NULL;
+ FILE* fp = NULL;
+
+ mixture_args.metadata = metadata;
+ mixture_args.lines = line_list;
+ mixture_args.molecules[0].nisotopes = 0; /* Handle all isotopes */
+ mixture_args.molecules[0].concentration = 1.0/3.0;
+ mixture_args.molecules[0].cutoff = 25;
+ mixture_args.molecules[0].id = 1; /* H2O */
+ mixture_args.molecules[1].nisotopes = 0; /* Handle all isotopes */
+ mixture_args.molecules[1].concentration = 1.0/3.0;
+ mixture_args.molecules[1].cutoff = 50;
+ mixture_args.molecules[1].id = 2; /* CO2 */
+ mixture_args.molecules[2].nisotopes = 0; /* Handle all isotopes */
+ mixture_args.molecules[2].concentration = 1.0/3.0;
+ mixture_args.molecules[2].cutoff = 25;
+ mixture_args.molecules[2].id = 3; /* O3 */
+ mixture_args.nmolecules = 3;
+ mixture_args.wavenumber_range[0] = 0;
+ mixture_args.wavenumber_range[1] = INF;
+ mixture_args.pressure = 1;
+ mixture_args.temperature = 296;
+ CHK(sln_mixture_create(sln, &mixture_args, &mixture1) == RES_OK);
+
+ CHK(fp = tmpfile());
+ CHK(sln_mixture_write(NULL, fp) == RES_BAD_ARG);
+ CHK(sln_mixture_write(mixture1, NULL) == RES_BAD_ARG);
+ CHK(sln_mixture_write(mixture1, fp) == RES_OK);
+ rewind(fp);
+
+ CHK(sln_mixture_create_from_stream(NULL, shtr, fp, &mixture2) == RES_BAD_ARG);
+ CHK(sln_mixture_create_from_stream(sln, NULL, fp, &mixture2) == RES_BAD_ARG);
+ CHK(sln_mixture_create_from_stream(sln, shtr, NULL, &mixture2) == RES_BAD_ARG);
+ CHK(sln_mixture_create_from_stream(sln, shtr, fp, NULL) == RES_BAD_ARG);
+ CHK(sln_mixture_create_from_stream(sln, shtr, fp, &mixture2) == RES_OK);
+ fclose(fp);
+
+ CHK(sln_mixture_get_desc(mixture1, &desc1) == RES_OK);
+ CHK(sln_mixture_get_desc(mixture2, &desc2) == RES_OK);
+
+ CHK(desc1.wavenumber_range[0] == desc2.wavenumber_range[0]);
+ CHK(desc1.wavenumber_range[1] == desc2.wavenumber_range[1]);
+ CHK(desc1.pressure == desc2.pressure);
+ CHK(desc1.temperature == desc2.temperature);
+ CHK(desc1.nlines == desc2.nlines);
+
+ CHK(sln_mixture_ref_put(mixture1) == RES_OK);
+ CHK(sln_mixture_ref_put(mixture2) == RES_OK);
+}
+
/*******************************************************************************
* Test function
******************************************************************************/
@@ -173,6 +234,7 @@ main(int argc, char** argv)
CHK(sln_device_create(&dev_args, &sln) == RES_OK);
test_mixture(sln, metadata, line_list);
+ test_mixture_serialization(sln, shtr, metadata, line_list);
CHK(sln_device_ref_put(sln) == RES_OK);
CHK(shtr_ref_put(shtr) == RES_OK);