From 8d5e79d3d31646713135286d709b98cec8bb2d5a Mon Sep 17 00:00:00 2001
From: Giovanni La Mura <giovanni.lamura@inaf.it>
Date: Wed, 7 Feb 2024 16:32:10 +0100
Subject: [PATCH] Set up a testing folder

---
 .gitignore                |  1 +
 build/testing/.gitkeep    |  0
 src/testing/test_TEDF.cpp | 63 +++++++++++++++++++++++++++++++++++++++
 src/testing/test_TTMS.cpp | 44 +++++++++++++++++++++++++++
 4 files changed, 108 insertions(+)
 create mode 100644 build/testing/.gitkeep
 create mode 100644 src/testing/test_TEDF.cpp
 create mode 100644 src/testing/test_TTMS.cpp

diff --git a/.gitignore b/.gitignore
index 0f5a2cfd..67cb9551 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 00000000..e69de29b
diff --git a/src/testing/test_TEDF.cpp b/src/testing/test_TEDF.cpp
new file mode 100644
index 00000000..037a7351
--- /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 00000000..bdf0daae
--- /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;
+}
-- 
GitLab