From 49fed662e5b71c96fccaecc98721af0bce2ac8ea Mon Sep 17 00:00:00 2001
From: Mirko Waechter <mirko.waechter@kit.edu>
Date: Mon, 16 Jul 2018 17:39:00 +0200
Subject: [PATCH] RobotPool: added possibility to create n robots on RobotPool
 creation

---
 source/RobotAPI/libraries/core/RobotPool.cpp  | 10 ++++++--
 source/RobotAPI/libraries/core/RobotPool.h    |  2 +-
 .../libraries/core/test/RobotTest.cpp         | 25 ++++++++++---------
 3 files changed, 22 insertions(+), 15 deletions(-)

diff --git a/source/RobotAPI/libraries/core/RobotPool.cpp b/source/RobotAPI/libraries/core/RobotPool.cpp
index 52dc4f8d6..d12f6f2b1 100644
--- a/source/RobotAPI/libraries/core/RobotPool.cpp
+++ b/source/RobotAPI/libraries/core/RobotPool.cpp
@@ -28,10 +28,14 @@
 namespace armarx
 {
 
-    RobotPool::RobotPool(VirtualRobot::RobotPtr robot) :
+    RobotPool::RobotPool(VirtualRobot::RobotPtr robot, size_t defaultSize) :
         baseRobot(robot)
     {
-
+        std::vector<VirtualRobot::RobotPtr> tempVec;
+        for (size_t i = 0; i < defaultSize; ++i)
+        {
+            tempVec.push_back(getRobot());
+        }
     }
 
     VirtualRobot::RobotPtr RobotPool::getRobot(int inflation)
@@ -94,7 +98,9 @@ namespace armarx
                     newList.push_back(r);
                 }
                 else
+                {
                     count++;
+                }
             }
             pair.second = newList;
         }
diff --git a/source/RobotAPI/libraries/core/RobotPool.h b/source/RobotAPI/libraries/core/RobotPool.h
index cb205f613..e22c1a898 100644
--- a/source/RobotAPI/libraries/core/RobotPool.h
+++ b/source/RobotAPI/libraries/core/RobotPool.h
@@ -36,7 +36,7 @@ namespace armarx
         //        VirtualRobot::RobotPtr robot;
         //    };
 
-        RobotPool(VirtualRobot::RobotPtr robot);
+        RobotPool(VirtualRobot::RobotPtr robot, size_t defaultSize = 1);
         /**
          * @brief getRobot
          * @param inflation inflation of collision model in mm
diff --git a/source/RobotAPI/libraries/core/test/RobotTest.cpp b/source/RobotAPI/libraries/core/test/RobotTest.cpp
index ebc75bb9f..c34a4d38a 100644
--- a/source/RobotAPI/libraries/core/test/RobotTest.cpp
+++ b/source/RobotAPI/libraries/core/test/RobotTest.cpp
@@ -50,25 +50,26 @@ BOOST_AUTO_TEST_CASE(RobotPoolTest)
     ArmarXDataPath::getAbsolutePath(fn, fn);
     std::string robotFilename = fn;
     VirtualRobot::RobotPtr robot = VirtualRobot::RobotIO::loadRobot(robotFilename, VirtualRobot::RobotIO::eCollisionModel);
-    RobotPool pool(robot);
+    RobotPool pool(robot, 2);
     {
+        BOOST_CHECK_EQUAL(pool.getPoolSize(), 2);
         auto clone = pool.getRobot();
-        ARMARX_CHECK_EQUAL(pool.getPoolSize(), 1);
-        ARMARX_CHECK_EQUAL(pool.getRobotsInUseCount(), 1);
+        BOOST_CHECK_EQUAL(pool.getPoolSize(), 2);
+        BOOST_CHECK_EQUAL(pool.getRobotsInUseCount(), 1);
         {
             auto clone2 = pool.getRobot();
-            ARMARX_CHECK_EQUAL(pool.getPoolSize(), 2);
-            ARMARX_CHECK_EQUAL(pool.getRobotsInUseCount(), 2);
+            BOOST_CHECK_EQUAL(pool.getPoolSize(), 2);
+            BOOST_CHECK_EQUAL(pool.getRobotsInUseCount(), 2);
         }
-        ARMARX_CHECK_EQUAL(pool.getPoolSize(), 2);
-        ARMARX_CHECK_EQUAL(pool.getRobotsInUseCount(), 1);
+        BOOST_CHECK_EQUAL(pool.getPoolSize(), 2);
+        BOOST_CHECK_EQUAL(pool.getRobotsInUseCount(), 1);
         auto clone2 = pool.getRobot();
-        ARMARX_CHECK_EQUAL(pool.getPoolSize(), 2);
-        ARMARX_CHECK_EQUAL(pool.getRobotsInUseCount(), 2);
+        BOOST_CHECK_EQUAL(pool.getPoolSize(), 2);
+        BOOST_CHECK_EQUAL(pool.getRobotsInUseCount(), 2);
     }
-    ARMARX_CHECK_EQUAL(pool.getRobotsInUseCount(), 0);
-    ARMARX_CHECK_EQUAL(pool.clean(), 2);
-    ARMARX_CHECK_EQUAL(pool.getPoolSize(), 0);
+    BOOST_CHECK_EQUAL(pool.getRobotsInUseCount(), 0);
+    BOOST_CHECK_EQUAL(pool.clean(), 2);
+    BOOST_CHECK_EQUAL(pool.getPoolSize(), 0);
 
 }
 
-- 
GitLab