From 4c1c0369e3c95222d544d4892d89ded9a29bb72a Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@kit.edu>
Date: Wed, 1 Sep 2021 11:38:33 +0200
Subject: [PATCH] Refactor test, use proper boost checks and log tools

---
 .../aron/core/test/aron/OpenCVMatTest.xml     |   4 +-
 .../aron/core/test/aronRandomizedTest.cpp     | 382 +++++++++---------
 2 files changed, 200 insertions(+), 186 deletions(-)

diff --git a/source/RobotAPI/libraries/aron/core/test/aron/OpenCVMatTest.xml b/source/RobotAPI/libraries/aron/core/test/aron/OpenCVMatTest.xml
index d45362236..1eb67f338 100644
--- a/source/RobotAPI/libraries/aron/core/test/aron/OpenCVMatTest.xml
+++ b/source/RobotAPI/libraries/aron/core/test/aron/OpenCVMatTest.xml
@@ -5,13 +5,13 @@
         <Include include="<opencv2/core/core.hpp>" />
     </CodeIncludes>
     <GenerateTypes>
-        <Object name='armarx::ImageTest'>
+        <Object name='armarx::OpenCVMatTest'>
 
             <ObjectChild key='the_rgb24_image'>
                 <Image pixelType="rgb24" />
             </ObjectChild>
 
-            <ObjectChild key='the_depth_32_image'>
+            <ObjectChild key='the_depth32_image'>
                 <Image pixelType="depth32" />
             </ObjectChild>
 
diff --git a/source/RobotAPI/libraries/aron/core/test/aronRandomizedTest.cpp b/source/RobotAPI/libraries/aron/core/test/aronRandomizedTest.cpp
index 395de492c..4ff0724c9 100644
--- a/source/RobotAPI/libraries/aron/core/test/aronRandomizedTest.cpp
+++ b/source/RobotAPI/libraries/aron/core/test/aronRandomizedTest.cpp
@@ -24,11 +24,46 @@
 
 #define ARMARX_BOOST_TEST
 
-// STD/STL
-#include <iostream>
-#include <cstdlib>
-#include <ctime>
-#include <numeric>
+
+// Generated File - include them first to check whether their includes are complete.
+#include <RobotAPI/libraries/aron/core/test/aron/ListTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/core/test/aron/DictTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/core/test/aron/PrimitiveTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/core/test/aron/ObjectTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/core/test/aron/ImageTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/core/test/aron/IVTCByteImageTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/core/test/aron/EigenMatrixTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/core/test/aron/EigenQuaternionTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/core/test/aron/OpenCVMatTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/core/test/aron/PCLPointCloudTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/core/test/aron/PositionTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/core/test/aron/OrientationTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/core/test/aron/PoseTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/core/test/aron/EnumTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/core/test/aron/OptionalTest.aron.generated.h>
+
+// Aron
+#include <RobotAPI/libraries/aron/core/Debug.h>
+#include <RobotAPI/libraries/aron/core/Randomizer.h>
+
+#include <RobotAPI/libraries/aron/core/io/dataIO/reader/navigator/NavigatorReader.h>
+#include <RobotAPI/libraries/aron/core/io/dataIO/reader/nlohmannJSON/NlohmannJSONReader.h>
+
+#include <RobotAPI/libraries/aron/core/io/dataIO/writer/navigator/NavigatorWriter.h>
+#include <RobotAPI/libraries/aron/core/io/dataIO/writer/nlohmannJSON/NlohmannJSONWriter.h>
+
+#include <RobotAPI/libraries/aron/core/io/typeIO/reader/navigator/NavigatorReader.h>
+#include <RobotAPI/libraries/aron/core/io/typeIO/reader/nlohmannJSON/NlohmannJSONReader.h>
+
+#include <RobotAPI/libraries/aron/core/io/typeIO/writer/navigator/NavigatorWriter.h>
+#include <RobotAPI/libraries/aron/core/io/typeIO/writer/nlohmannJSON/NlohmannJSONWriter.h>
+
+
+// ArmarX
+#include <ArmarXCore/libraries/cppgen/CppMethod.h>
+#include <ArmarXCore/libraries/cppgen/CppClass.h>
+#include <RobotAPI/libraries/aron/core/Exception.h>
+
 
 // IVT
 #include <Image/ByteImage.h>
@@ -43,226 +78,201 @@
 #include <pcl/point_cloud.h>
 #include <pcl/point_types.h>
 
-// Test
-#include <RobotAPI/Test.h>
-
-// ArmarX
-#include <ArmarXCore/libraries/cppgen/CppMethod.h>
-#include <ArmarXCore/libraries/cppgen/CppClass.h>
-#include <RobotAPI/libraries/aron/core/Exception.h>
-
-// Aron
-#include <RobotAPI/libraries/aron/core/Debug.h>
-#include <RobotAPI/libraries/aron/core/Randomizer.h>
 
-#include <RobotAPI/libraries/aron/core/io/dataIO/reader/navigator/NavigatorReader.h>
-#include <RobotAPI/libraries/aron/core/io/dataIO/reader/nlohmannJSON/NlohmannJSONReader.h>
+// STD/STL
+#include <iostream>
+#include <cstdlib>
+#include <ctime>
+#include <numeric>
 
-#include <RobotAPI/libraries/aron/core/io/dataIO/writer/navigator/NavigatorWriter.h>
-#include <RobotAPI/libraries/aron/core/io/dataIO/writer/nlohmannJSON/NlohmannJSONWriter.h>
 
-#include <RobotAPI/libraries/aron/core/io/typeIO/reader/navigator/NavigatorReader.h>
-#include <RobotAPI/libraries/aron/core/io/typeIO/reader/nlohmannJSON/NlohmannJSONReader.h>
+// Test
+#include <RobotAPI/Test.h>
 
-#include <RobotAPI/libraries/aron/core/io/typeIO/writer/navigator/NavigatorWriter.h>
-#include <RobotAPI/libraries/aron/core/io/typeIO/writer/nlohmannJSON/NlohmannJSONWriter.h>
 
 // Files without code generation
 //#include "aronDataWithoutCodeGeneration.h"
 
-// Generated File
-#include <RobotAPI/libraries/aron/core/test/aron/ListTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/DictTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/PrimitiveTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/ObjectTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/IVTCByteImageTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/EigenMatrixTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/EigenQuaternionTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/OpenCVMatTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/PCLPointCloudTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/PositionTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/OrientationTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/PoseTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/EnumTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/OptionalTest.aron.generated.h>
 
 using namespace armarx;
 using namespace aron;
 
+
 template <typename T>
-void runTestWithInstances(T& k1, T& k2)
+void test_toAronType(T& in, T& out)
 {
-    // assumes not nullptrs as k1 and k2. If you have a maybe type then make sure that it is set properly
+    nlohmann::json in_type_json;
+    nlohmann::json out_type_json;
 
-    int echo_debug_lv = 1;
+    BOOST_TEST_CONTEXT("getting in type")
+    {
+        typenavigator::ObjectNavigatorPtr in_type_nav = in.toAronType();
 
-    Randomizer r;
+        type::AronObjectPtr in_type = in_type_nav->toAronObjectPtr();
+        BOOST_CHECK(in_type);
+
+        armarx::aron::typeIO::writer::NlohmannJSONWriter json_writer_in;
+        in.writeType(json_writer_in);
+        in_type_json = json_writer_in.getResult();
+        BOOST_CHECK(in_type_json.is_object());
+    }
 
+    BOOST_TEST_CONTEXT("getting out type")
     {
-        if (echo_debug_lv)
-        {
-            std::cout << "\t getting type 1" << std::endl;
-        }
-        typenavigator::ObjectNavigatorPtr k1_type_nav = k1.toAronType();
-        type::AronObjectPtr k1_type = k1_type_nav->toAronObjectPtr();
-        BOOST_CHECK_EQUAL((bool) k1_type, true);
+        typenavigator::ObjectNavigatorPtr out_type_nav = out.toAronType();
 
-        armarx::aron::typeIO::writer::NlohmannJSONWriter json_writer_k1;
-        k1.writeType(json_writer_k1);
-        nlohmann::json k1_type_json = json_writer_k1.getResult();
-        BOOST_CHECK_EQUAL(k1_type_json.is_object(), true);
+        type::AronObjectPtr out_type = out_type_nav->toAronObjectPtr();
+        BOOST_CHECK(out_type);
 
-        if (echo_debug_lv)
-        {
-            std::cout << "\t getting type 2" << std::endl;
-        }
-        typenavigator::ObjectNavigatorPtr k2_type_nav = k2.toAronType();
-        type::AronObjectPtr k2_type = k2_type_nav->toAronObjectPtr();
-        BOOST_CHECK_EQUAL((bool) k2_type, true);
-
-        armarx::aron::typeIO::writer::NlohmannJSONWriter json_writer_k2;
-        k2.writeType(json_writer_k2);
-        nlohmann::json k2_type_json = json_writer_k2.getResult();
-        BOOST_CHECK_EQUAL(k2_type_json.is_object(), true);
-        BOOST_CHECK_EQUAL(k1_type_json.dump(2), k2_type_json.dump(2));
+        armarx::aron::typeIO::writer::NlohmannJSONWriter json_writer_out;
+        out.writeType(json_writer_out);
+        out_type_json = json_writer_out.getResult();
+        BOOST_CHECK(out_type_json.is_object());
     }
 
-    {
-        typenavigator::ObjectNavigatorPtr k1_type_nav = k1.toAronType();
-        datanavigator::DictNavigatorPtr k1_aron_nav = k1.toAron();
+    BOOST_CHECK_EQUAL(out_type_json.dump(2), in_type_json.dump(2));
+}
 
-        if (echo_debug_lv)
-        {
-            std::cout << "\t initialize aron 1 randomly" << std::endl;
-        }
-        r.initializeRandomly(k1_aron_nav, k1_type_nav);
 
-        if (echo_debug_lv)
-        {
-            std::cout << "\t getting aron 1" << std::endl;
-        }
-        data::AronDictPtr k1_aron = k1_aron_nav->toAronDictPtr();
-        BOOST_CHECK_EQUAL((bool) k1_aron, true);
 
-        if (echo_debug_lv >= 2)
-        {
-            std::cout << "K1 Aron:" << std::endl;
-            std::cout << armarx::aron::Debug::AronDataPtrToString(k1_aron) << std::endl;
-            std::cout << "K2 Aron:" << std::endl;
-            std::cout << armarx::aron::Debug::AronDataPtrToString(k2.toAron()->toAronDictPtr()) << std::endl;
-        }
 
-        if (echo_debug_lv)
-        {
-            std::cout << "\t setting aron 2 from aron 1" << std::endl;
-        }
-        k2.fromAron(k1_aron);
+template <typename T>
+void test_toAron(T& in, T& out)
+{
+    datanavigator::DictNavigatorPtr in_aron_nav = in.toAron();
+    Randomizer r;
 
-        if (echo_debug_lv)
-        {
-            std::cout << "\t getting aron 2" << std::endl;
-        }
-        datanavigator::DictNavigatorPtr k2_aron_nav = k2.toAron();
-        BOOST_CHECK_EQUAL((*k1_aron_nav == *k2_aron_nav), true);
+    BOOST_TEST_CONTEXT("initialize in aron randomly")
+    {
+        typenavigator::ObjectNavigatorPtr in_type_nav = in.toAronType();
+        r.initializeRandomly(in_aron_nav, in_type_nav);
+    }
 
-        data::AronDictPtr k2_aron = k2_aron_nav->toAronDictPtr();
-        BOOST_CHECK_EQUAL((bool) k2_aron, true);
+    BOOST_TEST_INFO("getting in aron");
+    data::AronDictPtr in_aron = in_aron_nav->toAronDictPtr();
+    BOOST_CHECK(in_aron);
 
-        if (echo_debug_lv)
-        {
-            std::cout << "\t setting aron 1 from aron 2 and check for equality" << std::endl;
-        }
-        k1.fromAron(k2_aron_nav);
+    BOOST_TEST_MESSAGE("in aron: \n" << armarx::aron::Debug::AronDataPtrToString(in_aron));
+    BOOST_TEST_MESSAGE("out aron: \n" << armarx::aron::Debug::AronDataPtrToString(out.toAron()->toAronDictPtr()));
 
-        if (echo_debug_lv >= 2)
-        {
-            std::cout << "K1 Aron:" << std::endl;
-            std::cout << armarx::aron::Debug::AronDataPtrToString(k1.toAron()->toAronDictPtr()) << std::endl;
-            std::cout << "K2 Aron:" << std::endl;
-            std::cout << armarx::aron::Debug::AronDataPtrToString(k2.toAron()->toAronDictPtr()) << std::endl;
-        }
-        BOOST_CHECK_EQUAL((k1 == k2), true);
+    datanavigator::DictNavigatorPtr out_aron_nav;
+    BOOST_TEST_CONTEXT("setting out aron from in aron")
+    {
+        out.fromAron(in_aron);
 
-        datanavigator::DictNavigatorPtr k1_aron_nav_again = k1.toAron();
-        BOOST_CHECK_EQUAL((*k1_aron_nav == *k1_aron_nav_again), true);
+        BOOST_TEST_INFO("getting out aron");
+        out_aron_nav = out.toAron();
+        BOOST_CHECK(*in_aron_nav == *out_aron_nav);
+
+        data::AronDictPtr out_aron = out_aron_nav->toAronDictPtr();
+        BOOST_CHECK(out_aron);
     }
 
+    BOOST_TEST_CONTEXT("setting in aron from out aron and check for equality")
     {
-        typenavigator::ObjectNavigatorPtr k1_type_nav = k1.toAronType();
-        datanavigator::DictNavigatorPtr k1_aron_nav = k1.toAron();
+        in.fromAron(out_aron_nav);
 
-        r.initializeRandomly(k1_aron_nav, k1_type_nav);
+        BOOST_TEST_MESSAGE("in Aron: \n" << armarx::aron::Debug::AronDataPtrToString(in.toAron()->toAronDictPtr()));
+        BOOST_TEST_MESSAGE("out Aron: \n" << armarx::aron::Debug::AronDataPtrToString(out.toAron()->toAronDictPtr()));
+        BOOST_CHECK(in == out);
 
-        data::AronDictPtr k1_aron = k1_aron_nav->toAronDictPtr();
-        k1.fromAron(k1_aron);
+        datanavigator::DictNavigatorPtr in_aron_nav_again = in.toAron();
+        BOOST_CHECK(*in_aron_nav == *in_aron_nav_again);
+    }
+}
 
-        if (echo_debug_lv)
-        {
-            std::cout << "\t check JSON export of k and k2 for equality" << std::endl;
-        }
-        armarx::aron::dataIO::writer::NlohmannJSONWriter json_writer_for_k1;
-        armarx::aron::dataIO::writer::NlohmannJSONWriter json_writer_for_k2;
 
-        k1.write(json_writer_for_k1);
-        nlohmann::json k1_aron_json = json_writer_for_k1.getResult();
-        std::string k1_aron_json_str = k1_aron_json.dump(4);
+template <typename T>
+void test_toJson(T& in, T& out)
+{
+    datanavigator::DictNavigatorPtr in_aron_nav = in.toAron();
 
-        armarx::aron::dataIO::writer::NlohmannJSONWriter direct_json_writer_for_k1;
-        armarx::aron::dataIO::Visitor::VisitAndSetup(direct_json_writer_for_k1, k1_aron);
-        nlohmann::json direct_k1_aron_json = direct_json_writer_for_k1.getResult();
-        std::string direct_k1_aron_json_str = direct_k1_aron_json.dump(4);
+    Randomizer r;
+    {
+        typenavigator::ObjectNavigatorPtr in_type_nav = in.toAronType();
+        r.initializeRandomly(in_aron_nav, in_type_nav);
+    }
 
-        if (echo_debug_lv >= 2)
-        {
-            std::cout << "\t K1 as json: " << std::endl << k1_aron_json_str << std::endl;
-            std::cout << "\t K1 as direct json: " << std::endl << direct_k1_aron_json_str << std::endl;
-        }
-        BOOST_CHECK_EQUAL((k1_aron_json_str == direct_k1_aron_json_str), true);
+    data::AronDictPtr in_aron = in_aron_nav->toAronDictPtr();
+    in.fromAron(in_aron);
 
-        armarx::aron::dataIO::reader::NlohmannJSONReader json_reader_for_k2(k1_aron_json);
+    armarx::aron::dataIO::writer::NlohmannJSONWriter json_writer_for_in;
+    armarx::aron::dataIO::writer::NlohmannJSONWriter json_writer_for_out;
 
-        k2.read(json_reader_for_k2);
-        k2.write(json_writer_for_k2);
+    nlohmann::json in_aron_json;
+    std::string in_aron_json_str;
+    BOOST_TEST_CONTEXT("check JSON export of k and out for equality")
+    {
+        in.write(json_writer_for_in);
+        in_aron_json = json_writer_for_in.getResult();
+        in_aron_json_str = in_aron_json.dump(4);
 
-        nlohmann::json k2_aron_json = json_writer_for_k2.getResult();
-        std::string k2_aron_json_str = k2_aron_json.dump(4);
+        armarx::aron::dataIO::writer::NlohmannJSONWriter direct_json_writer_for_in;
+        armarx::aron::dataIO::Visitor::VisitAndSetup(direct_json_writer_for_in, in_aron);
+        nlohmann::json direct_in_aron_json = direct_json_writer_for_in.getResult();
+        std::string direct_in_aron_json_str = direct_in_aron_json.dump(4);
 
-        if (echo_debug_lv >= 2)
+        BOOST_TEST_CONTEXT(   "\n> in as json: \n" << in_aron_json_str
+                           << "\n> n as direct json: \n" << direct_in_aron_json_str)
         {
-            std::cout << "\t K1 as json: " << std::endl << k1_aron_json_str << std::endl;
-            std::cout << "\t K2 as json: " << std::endl << k2_aron_json_str << std::endl;
+            BOOST_CHECK(in_aron_json_str == direct_in_aron_json_str);
         }
-        BOOST_CHECK_EQUAL((k1_aron_json_str == k2_aron_json_str), true);
+    }
+
+    armarx::aron::dataIO::reader::NlohmannJSONReader json_reader_for_out(in_aron_json);
+
+    out.read(json_reader_for_out);
+    out.write(json_writer_for_out);
+
+    nlohmann::json out_aron_json = json_writer_for_out.getResult();
+    std::string out_aron_json_str = out_aron_json.dump(4);
+
+    BOOST_TEST_CONTEXT(   "\n> in as json: \n" << in_aron_json_str
+                       << "\n> out as json: \n" << out_aron_json_str)
+    {
+        BOOST_CHECK(in_aron_json_str == out_aron_json_str);
     }
 }
 
-BOOST_AUTO_TEST_CASE(AronListTest)
+
+template <typename T>
+void runTestWithInstances(T& in, T& out)
+{
+    // assumes not nullptrs as in and out. If you have a maybe type then make sure that it is set properly
+
+    test_toAronType(in, out);
+    test_toAron(in, out);
+    test_toJson(in, out);
+}
+
+
+BOOST_AUTO_TEST_CASE(test_List)
 {
-    std::cout << "Running List test" << std::endl;
+    BOOST_TEST_MESSAGE("Running List test");
     ListTest l;
     ListTest l2;
     runTestWithInstances<ListTest>(l, l2);
 }
 
-BOOST_AUTO_TEST_CASE(AronDictTest)
+BOOST_AUTO_TEST_CASE(test_Dict)
 {
-    std::cout << "Running Dict test" << std::endl;
+    BOOST_TEST_MESSAGE("Running Dict test");
     DictTest d;
     DictTest d2;
     runTestWithInstances<DictTest>(d, d2);
 }
 
-BOOST_AUTO_TEST_CASE(AronPrimitiveTest)
+BOOST_AUTO_TEST_CASE(test_Primitive)
 {
-    std::cout << "Running Primitive test" << std::endl;
+    BOOST_TEST_MESSAGE("Running Primitive test");
     PrimitiveTest p;
     PrimitiveTest p2;
     runTestWithInstances<PrimitiveTest>(p, p2);
 }
 
-BOOST_AUTO_TEST_CASE(AronObjectTest)
+BOOST_AUTO_TEST_CASE(test_Object)
 {
-    std::cout << "Running Object test" << std::endl;
+    BOOST_TEST_MESSAGE("Running Object test");
     ObjectTest1 o1;
     ObjectTest1 o12;
     runTestWithInstances<ObjectTest1>(o1, o12);
@@ -272,9 +282,9 @@ BOOST_AUTO_TEST_CASE(AronObjectTest)
     runTestWithInstances<ObjectTest2>(o2, o22);
 }
 
-BOOST_AUTO_TEST_CASE(AronImageTest)
+BOOST_AUTO_TEST_CASE(test_IVTCByteImage)
 {
-    std::cout << "Running Image test" << std::endl;
+    BOOST_TEST_MESSAGE("Running Image test");
     IVTCByteImageTest ii;
     IVTCByteImageTest ii2;
 
@@ -293,32 +303,36 @@ BOOST_AUTO_TEST_CASE(AronImageTest)
     runTestWithInstances<IVTCByteImageTest>(ii, ii2);
 }
 
-BOOST_AUTO_TEST_CASE(AronEigenMatrixTest)
+BOOST_AUTO_TEST_CASE(test_EigenMatrix)
 {
     // Eigen may cause problems with dimensions > 145
-    std::cout << "Running EigenMatrix test" << std::endl;
+    BOOST_TEST_MESSAGE("Running EigenMatrix test");
     EigenMatrixTest em;
     EigenMatrixTest em2;
     runTestWithInstances<EigenMatrixTest>(em, em2);
 }
 
-BOOST_AUTO_TEST_CASE(AronOpenCVTest)
+BOOST_AUTO_TEST_CASE(test_Image)
 {
-    std::cout << "Running OpenCVMat test" << std::endl;
-    OpenCVMatTest ocv;
-    OpenCVMatTest ocv2;
-
-    ocv.the_2d_opencv_matrix = cv::Mat(2, 2, CV_64F);
-    ocv.the_3d_opencv_matrix = cv::Mat(std::vector<int>({2, 2, 2}), CV_32F);
-    ocv.the_4d_opencv_matrix = cv::Mat(std::vector<int>({2, 2, 2, 2}), CV_16S);
-    ocv.the_5d_opencv_matrix = cv::Mat(std::vector<int>({2, 2, 2, 2, 2}), CV_8U);
-
-    runTestWithInstances<OpenCVMatTest>(ocv, ocv2);
+    BOOST_TEST_MESSAGE("Running Image test");
+    ImageTest image;
+    ImageTest image2;
+
+    image.the_rgb24_image.create(3, 4, image.the_rgb24_image.type());
+    image.the_depth32_image.create(3, 4, image.the_depth32_image.type());
+
+    /* Could be used for ndarray test
+    image.the_2d_opencv_matrix = cv::Mat(2, 2, CV_64F);
+    image.the_3d_opencv_matrix = cv::Mat(std::vector<int>({2, 2, 2}), CV_32F);
+    image.the_4d_opencv_matrix = cv::Mat(std::vector<int>({2, 2, 2, 2}), CV_16S);
+    image.the_5d_opencv_matrix = cv::Mat(std::vector<int>({2, 2, 2, 2, 2}), CV_8U);
+    */
+    runTestWithInstances<ImageTest>(image, image2);
 }
 
-BOOST_AUTO_TEST_CASE(AronPCLPointCloudTest)
+BOOST_AUTO_TEST_CASE(test_PCLPointCloud)
 {
-    std::cout << "Running PCLPointCloud test" << std::endl;
+    BOOST_TEST_MESSAGE("Running PCLPointCloud test");
     PointCloudTest pc;
     PointCloudTest pc2;
 
@@ -331,41 +345,41 @@ BOOST_AUTO_TEST_CASE(AronPCLPointCloudTest)
     runTestWithInstances<PointCloudTest>(pc, pc2);
 }
 
-BOOST_AUTO_TEST_CASE(AronEigenQuaternionTest)
+BOOST_AUTO_TEST_CASE(test_EigenQuaternion)
 {
-    std::cout << "Running EigenQuaternion test" << std::endl;
+    BOOST_TEST_MESSAGE("Running EigenQuaternion test");
     EigenQuaternionTest eq;
     EigenQuaternionTest eq2;
     runTestWithInstances<EigenQuaternionTest>(eq, eq2);
 }
 
-BOOST_AUTO_TEST_CASE(AronPositionTest)
+BOOST_AUTO_TEST_CASE(test_Position)
 {
-    std::cout << "Running Position test" << std::endl;
+    BOOST_TEST_MESSAGE("Running Position test");
     PositionTest pc;
     PositionTest pc2;
     runTestWithInstances<PositionTest>(pc, pc2);
 }
 
-BOOST_AUTO_TEST_CASE(AronOrientationTest)
+BOOST_AUTO_TEST_CASE(test_Orientation)
 {
-    std::cout << "Running Orientation test" << std::endl;
+    BOOST_TEST_MESSAGE("Running Orientation test");
     OrientationTest pc;
     OrientationTest pc2;
     runTestWithInstances<OrientationTest>(pc, pc2);
 }
 
-BOOST_AUTO_TEST_CASE(AronPoseTest)
+BOOST_AUTO_TEST_CASE(test_Pose)
 {
-    std::cout << "Running Pose test" << std::endl;
+    BOOST_TEST_MESSAGE("Running Pose test");
     PoseTest pc;
     PoseTest pc2;
     runTestWithInstances<PoseTest>(pc, pc2);
 }
 
-BOOST_AUTO_TEST_CASE(AronOptionalTest)
+BOOST_AUTO_TEST_CASE(test_Optional)
 {
-    std::cout << "Running Optional test" << std::endl;
+    BOOST_TEST_MESSAGE("Running Optional test");
     OptionalTest pc;
     OptionalTest pc2;
     runTestWithInstances<OptionalTest>(pc, pc2);
-- 
GitLab