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;
+}