From d5039779137e75b0c9d6641023e5a5adf11c7599 Mon Sep 17 00:00:00 2001
From: Olivier Stasse <ostasse@laas.fr>
Date: Fri, 17 Jan 2020 11:45:24 +0100
Subject: [PATCH] [tests] Improve coverage of signal-cast-registered.

---
 tests/debug-real-time-tracer.cpp | 12 ++++--------
 tests/signal-all.cpp             | 18 ++++++++++++++++++
 tests/signal-cast-registerer.cpp |  9 +++++++++
 3 files changed, 31 insertions(+), 8 deletions(-)

diff --git a/tests/debug-real-time-tracer.cpp b/tests/debug-real-time-tracer.cpp
index c246746..54c7a98 100644
--- a/tests/debug-real-time-tracer.cpp
+++ b/tests/debug-real-time-tracer.cpp
@@ -42,12 +42,6 @@ struct MyEntity : public dynamicgraph::Entity {
     signalRegistration(m_sigdSIN << m_sigdTimeDepSOUT << m_sigdTwoTimeDepSOUT);
   }
 
-  virtual void display(std::ostream &os) const {
-    os << "Hello! My name is " << getName() << " !" << std::endl;
-  }
-
-  virtual const std::string &getClassName() const { return CLASS_NAME; }
-
   double &update(double &res, const int &inTime) {
     const double &aDouble = m_sigdSIN(inTime);
     res = aDouble;
@@ -64,8 +58,8 @@ BOOST_AUTO_TEST_CASE(test_tracer) {
   TracerRealTime &atracer = *dynamic_cast<TracerRealTime *>(
       FactoryStorage::getInstance()->newEntity("TracerRealTime", "my-tracer"));
 
-  Entity &entity =
-      *FactoryStorage::getInstance()->newEntity("MyEntity", "my-entity");
+  MyEntity &entity = *dynamic_cast<MyEntity *>(
+      FactoryStorage::getInstance()->newEntity("MyEntity", "my-entity"));
 
   std::string rootdir("/tmp");
   std::string basename("my-tracer");
@@ -80,6 +74,8 @@ BOOST_AUTO_TEST_CASE(test_tracer) {
   /// Add trace by name
   SignalBase<int> &aSignal = entity.getSignal("out2double");
 
+  entity.m_sigdTwoTimeDepSOUT.recompute(2);
+
   Signal<double, int> &aSignalInt =
       *(dynamic_cast<Signal<double, int> *>(&entity.getSignal("in_double")));
 
diff --git a/tests/signal-all.cpp b/tests/signal-all.cpp
index e7ba104..879546e 100644
--- a/tests/signal-all.cpp
+++ b/tests/signal-all.cpp
@@ -13,6 +13,7 @@
 #include <assert.h>
 #include <boost/test/output_test_stream.hpp>
 #include <boost/test/unit_test.hpp>
+#include <iostream>
 
 #define BOOST_TEST_MODULE signal_array
 
@@ -196,3 +197,20 @@ BOOST_AUTO_TEST_CASE(test_cast_helper) {
   DefaultCastRegisterer<std::string> defaultSR;
   boost::any aTest = defaultSR.cast(aiss);
 }
+
+BOOST_AUTO_TEST_CASE(signal_caster_basics) {
+  /// Get the singleton on registered types.
+  SignalCaster *asig_caster = SignalCaster::getInstance();
+
+  /// List the registered types.
+  std::vector<std::string> amap = asig_caster->listTypenames();
+  for (std::vector<std::string>::iterator it = amap.begin(); it != amap.end();
+       ++it)
+    std::cout << "signal_caster:listTypename: " << *it << std::endl;
+
+  /// Unregister a type
+  asig_caster->unregisterCast(typeid(double));
+
+  asig_caster->destroy();
+  BOOST_CHECK(true);
+}
diff --git a/tests/signal-cast-registerer.cpp b/tests/signal-cast-registerer.cpp
index a37d352..00ac027 100644
--- a/tests/signal-cast-registerer.cpp
+++ b/tests/signal-cast-registerer.cpp
@@ -139,6 +139,15 @@ BOOST_AUTO_TEST_CASE(standard_double_registerer) {
 BOOST_AUTO_TEST_CASE(custom_vector_registerer) {
   dynamicgraph::Signal<dynamicgraph::Vector, int> myVectorSignal("vector");
 
+  /// Create a second local vector registerer to generate an exception.
+  bool res = false;
+  try {
+    EigenCastRegisterer_V myVectorCast2;
+  } catch (const ExceptionSignal &aes) {
+    res = (aes.getCode() == ExceptionSignal::GENERIC);
+  }
+  //  BOOST_CHECK(res);
+
   // Print the signal name.
   {
     output_test_stream output;
-- 
GitLab