diff --git a/.gitignore b/.gitignore index 0f5a2cfd44297542c8b1bac2d1e9b277f4753bba..67cb955181b0aa93c80f1590c7d8ed0d73ee27a2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ build/include build/cluster/* build/sphere/* +build/testing/* build/trapping/* doc/build/* src/objects/* \ No newline at end of file diff --git a/build/testing/.gitkeep b/build/testing/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/testing/test_TEDF.cpp b/src/testing/test_TEDF.cpp new file mode 100644 index 0000000000000000000000000000000000000000..037a7351505c809ca8d2609e81a68ef9b91baf71 --- /dev/null +++ b/src/testing/test_TEDF.cpp @@ -0,0 +1,63 @@ +//! \file test_TEDF.cpp + +#include <complex> +#include <cstdio> +#include <hdf5.h> +#include <string> +#include "../include/List.h" +#include "../include/file_io.h" +#include "../include/Configuration.h" + +using namespace std; + +/*! \brief Main program execution body. + * + * This program executes a test to compare whether three configuration + * instances, loaded respectively from an EDFB configuration file, a + * legacy binary, or a HDF5 binary are actually equivalent. The test + * writes a result message to `stdout` then it returns 0 (OS flag for + * a successful process) or some kind of error code, depending on + * whether the test files were found all equal or not. The test accepts + * three command line arguments: the name of the EDFB configuration + * file, the name of the legacy binary file and the name of the HDF5 + * binary configuration file. + * + * \param argc: `int` Number of command line arguments + * \param argv: `char **` Array of command argument character strings. + * \return result: `int` Can be: 0 (all files equal); 1 (EDFB and + * legacy binary are different); 10 (EDFB and HDF5 are different); + * 100 (legacy and HDF5 are different). In case more differences are + * found, the error codes sum up together (e.g. 111 means all files + * are different). + */ +int main(int argc, char **argv) { + int result = 0; + string dedfb_file = "DEDFB"; + string legacy_file = "c_TEDF"; + string hdf5_file = "c_TEDF.hd5"; + if (argc == 4) { + dedfb_file = string(argv[1]); + legacy_file = string(argv[2]); + hdf5_file = string(argv[3]); + } + ScattererConfiguration *a, *b, *c; + a = ScattererConfiguration::from_dedfb(dedfb_file); + b = ScattererConfiguration::from_binary(legacy_file); + c = ScattererConfiguration::from_binary(hdf5_file, "HDF5"); + if (*a == *b) printf("Configuration objects a and b are equal.\n"); + else { + printf("Configuration objects a and b are different.\n"); + result += 1; + } + if (*a == *c) printf("Configuration objects a and c are equal.\n"); + else { + printf("Configuration objects a and c are different.\n"); + result += 10; + } + if (*c == *b) printf("Configuration objects c and b are equal.\n"); + else { + printf("Configuration objects c and b are different.\n"); + result += 100; + } + return 0; +} diff --git a/src/testing/test_TTMS.cpp b/src/testing/test_TTMS.cpp new file mode 100644 index 0000000000000000000000000000000000000000..bdf0daaedc510a210ac1e314f69cf93b91a36f88 --- /dev/null +++ b/src/testing/test_TTMS.cpp @@ -0,0 +1,44 @@ +//! \file test_TTMS.cpp + +#include <complex> +#include <cstdio> +#include <hdf5.h> +#include <string> +#include "../include/List.h" +#include "../include/file_io.h" +#include "../include/TransitionMatrix.h" + +using namespace std; + +/*! \brief Main program execution body. + * + * This program executes a test to compare whether two transition + * matrix instances, loaded respectively from a legacy and a HDF5 + * binary file are actually equivalent. The test writes a result + * message to `stdout` then it returns 0 (OS flag for a successful + * process) or 1 (OS flag for failing process) depending on whether + * the two instances were considered equivalent or not. + * + * \param argc: `int` Number of command line arguments + * \param argv: `char **` Array of command argument character strings. + * \return result: `int` Can be 0 (files are equal) or 1 (files are + * different). + */ +int main(int argc, char **argv) { + int result = 0; + TransitionMatrix *a, *b; + string legacy_file = "c_TTMS"; + string hdf5_file = "c_TTMS.hd5"; + if (argc == 3) { + legacy_file = string(argv[1]); + hdf5_file = string(argv[2]); + } + a = TransitionMatrix::from_binary(legacy_file); + b = TransitionMatrix::from_binary(hdf5_file, "HDF5"); + if (*a == *b) printf("Transition matrixes a and b are equal.\n"); + else { + printf("Transition matrixes a and b are different.\n"); + result = 1; + } + return result; +}