From 7ee68e8f7a85aba4c839bb9d4bac09f4740632c5 Mon Sep 17 00:00:00 2001
From: armar-user <armar-user@kit.edu>
Date: Wed, 5 May 2021 15:59:06 +0200
Subject: [PATCH] changes by Rainer and Fabian PK

---
 .../core/workingmemory/ice_conversions.cpp    |  4 ++
 .../libraries/armem/test/ArMemMemoryTest.cpp  | 37 ++++++++++++++++++-
 2 files changed, 39 insertions(+), 2 deletions(-)

diff --git a/source/RobotAPI/libraries/armem/core/workingmemory/ice_conversions.cpp b/source/RobotAPI/libraries/armem/core/workingmemory/ice_conversions.cpp
index 7dded8943..53378a697 100644
--- a/source/RobotAPI/libraries/armem/core/workingmemory/ice_conversions.cpp
+++ b/source/RobotAPI/libraries/armem/core/workingmemory/ice_conversions.cpp
@@ -74,6 +74,7 @@ namespace armarx::armem
         {
             ice.aronType = providerSegment.aronType()->getResult();
         }
+        ARMARX_CHECK(!providerSegment.aronType() || ice.aronType);
         toIce(ice.entities, providerSegment.entities());
     }
     void fromIce(const data::ProviderSegment& ice, wm::ProviderSegment& providerSegment)
@@ -84,6 +85,7 @@ namespace armarx::armem
         {
             providerSegment.aronType() = aron::typenavigator::ObjectNavigator::DynamicCastAndCheck(aron::typenavigator::Navigator::FromAronType(ice.aronType));
         }
+        ARMARX_CHECK(!providerSegment.aronType() || ice.aronType);
         fromIce(ice.entities, providerSegment.entities());
     }
 
@@ -95,6 +97,7 @@ namespace armarx::armem
         {
             ice.aronType = coreSegment.aronType()->getResult();
         }
+        ARMARX_CHECK(!coreSegment.aronType() || ice.aronType);
         toIce(ice.providerSegments, coreSegment.providerSegments());
     }
     void fromIce(const data::CoreSegment& ice, wm::CoreSegment& coreSegment)
@@ -105,6 +108,7 @@ namespace armarx::armem
         {
             coreSegment.aronType() = aron::typenavigator::ObjectNavigator::DynamicCastAndCheck(aron::typenavigator::Navigator::FromAronType(ice.aronType));
         }
+        ARMARX_CHECK(!coreSegment.aronType() || ice.aronType);
         fromIce(ice.providerSegments, coreSegment.providerSegments());
     }
 
diff --git a/source/RobotAPI/libraries/armem/test/ArMemMemoryTest.cpp b/source/RobotAPI/libraries/armem/test/ArMemMemoryTest.cpp
index 3c2564689..7588230d8 100644
--- a/source/RobotAPI/libraries/armem/test/ArMemMemoryTest.cpp
+++ b/source/RobotAPI/libraries/armem/test/ArMemMemoryTest.cpp
@@ -171,7 +171,7 @@ namespace ArMemMemoryTest
 
         MemoryContainerCtorOpTestFixture()
         {
-            cont.container() = std::vector<int>{ -1, 2, -3 };
+            cont.container() = std::vector<int> { -1, 2, -3 };
             BOOST_CHECK_EQUAL(cont.id(), id);
             BOOST_CHECK_EQUAL(cont.size(), 3);
         }
@@ -496,6 +496,12 @@ struct CopyMoveCtorsOpsTest : public CopyMoveCtorsOpsTestBase
 
         BOOST_CHECK_EQUAL(in.id(), id);
         BOOST_CHECK_EQUAL(in.size(), 1);
+
+        if constexpr(std::is_base_of_v <armarx::armem::base::detail::AronTyped, T>)
+        {
+            in.aronType() = std::make_shared<aron::typenavigator::ObjectNavigator>();
+            BOOST_CHECK(in.aronType());
+        }
     }
 
     void testCopyCtor() override
@@ -506,6 +512,13 @@ struct CopyMoveCtorsOpsTest : public CopyMoveCtorsOpsTestBase
         BOOST_CHECK_EQUAL(out.id(), id);
         BOOST_CHECK_EQUAL(out.size(), 1);
 
+        if constexpr(std::is_base_of_v <armarx::armem::base::detail::AronTyped, T>)
+        {
+            BOOST_CHECK(in.aronType());
+            BOOST_CHECK(out.aronType());
+            BOOST_CHECK_EQUAL(in.aronType(), out.aronType());
+        }
+
         CustomChecks<T>::checkEqual(out, in);
     }
     void testCopyOp() override
@@ -517,6 +530,13 @@ struct CopyMoveCtorsOpsTest : public CopyMoveCtorsOpsTestBase
         BOOST_CHECK_EQUAL(out.id(), id);
         BOOST_CHECK_EQUAL(out.size(), 1);
 
+        if constexpr(std::is_base_of_v <armarx::armem::base::detail::AronTyped, T>)
+        {
+            BOOST_CHECK(in.aronType());
+            BOOST_CHECK(out.aronType());
+            BOOST_CHECK_EQUAL(in.aronType(), out.aronType());
+        }
+
         CustomChecks<T>::checkEqual(out, in);
     }
     void testMoveCtor() override
@@ -528,6 +548,12 @@ struct CopyMoveCtorsOpsTest : public CopyMoveCtorsOpsTestBase
         BOOST_CHECK_EQUAL(out.id(), id);
         BOOST_CHECK_EQUAL(out.size(), 1);
 
+        if constexpr(std::is_base_of_v <armarx::armem::base::detail::AronTyped, T>)
+        {
+            BOOST_CHECK(out.aronType());
+            BOOST_CHECK_EQUAL(in.aronType(), nullptr);
+        }
+
         CustomChecks<T>::checkMoved(in);
     }
     void testMoveOp() override
@@ -540,6 +566,12 @@ struct CopyMoveCtorsOpsTest : public CopyMoveCtorsOpsTestBase
         BOOST_CHECK_EQUAL(out.id(), id);
         BOOST_CHECK_EQUAL(out.size(), 1);
 
+        if constexpr(std::is_base_of_v <armarx::armem::base::detail::AronTyped, T>)
+        {
+            BOOST_CHECK(out.aronType());
+            BOOST_CHECK_EQUAL(in.aronType(), nullptr);
+        }
+
         CustomChecks<T>::checkMoved(in);
     }
 };
@@ -781,7 +813,7 @@ struct CopyTest
         T t;
         T t2 = t.copy();
 
-        if constexpr (!std::is_base_of_v<armem::base::EntityInstanceBase<T>, T>)
+        if constexpr(!std::is_base_of_v<armem::base::EntityInstanceBase<T>, T>)
         {
             t2 = t.copyEmpty();
         }
@@ -816,3 +848,4 @@ BOOST_AUTO_TEST_CASE(test_copy)
         CopyTest<armem::d_ltm::Memory>().test();
     }
 }
+
-- 
GitLab