diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index a3c2dfe0f7a6abc3c13c661f68cf3475a18b5ab2..d832826b758521b5f280fb36488ae2758fc8aa3b 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -69,3 +69,5 @@ DYNAMIC_GRAPH_TEST(value) DYNAMIC_GRAPH_TEST(signal-ptr) DYNAMIC_GRAPH_TEST(real-time-logger) DYNAMIC_GRAPH_TEST(debug-trace) +DYNAMIC_GRAPH_TEST(debug-tracer) +TARGET_LINK_LIBRARIES(debug-tracer tracer) diff --git a/tests/debug-tracer.cpp b/tests/debug-tracer.cpp index f7f7a26f5ae8b10d11cd3e4c762f642a433c36dc..34a8cfd3e85380bd25a95c27b080186565828997 100644 --- a/tests/debug-tracer.cpp +++ b/tests/debug-tracer.cpp @@ -6,57 +6,114 @@ * */ +#include <iostream> + #include <dynamic-graph/entity.h> #include <dynamic-graph/exception-factory.h> #include <dynamic-graph/factory.h> #include <dynamic-graph/pool.h> - +#include <dynamic-graph/signal-ptr.h> +#include <dynamic-graph/signal-time-dependent.h> #include <dynamic-graph/tracer.h> -struct MyEntity : public dynamicgraph::Entity -{ - static const std::string CLASS_NAME; +#define BOOST_TEST_MODULE debug-tracer - dynamicgraph::SignalPtr<double, int> m_sigdSIN; - dynamicgraph::SignalTimeDependent<double, int> m_sigdTimeDepSOUT; - - MyEntity (const std::string& name) - : Entity (name) - ,m_sigdSIN(NULL,"MyEntity("+name+")::input(double)::in_double") - ,m_sigdTimeDepSOUT(boost::bind(&MyEntity::update,this,_1,_2), - m_sigdSIN, - "MyEntity("+name+")::input(double)::out_double") - { - signalRegistration(m_sigdSIN << m_sigdTimeDepSOUT); - } +#include <boost/test/unit_test.hpp> +#include <boost/test/output_test_stream.hpp> - 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) +namespace dynamicgraph +{ + struct MyEntity : public dynamicgraph::Entity { - const double &aDouble = m_sigdSIN(inTime); - res = aDouble; - return res; - } - -}; + static const std::string CLASS_NAME; + + dynamicgraph::Signal<double, int> m_sigdSIN; + dynamicgraph::SignalTimeDependent<double, int> m_sigdTimeDepSOUT; + dynamicgraph::SignalTimeDependent<double, int> m_sigdTwoTimeDepSOUT; + + MyEntity (const std::string& name) + : Entity (name) + ,m_sigdSIN("MyEntity("+name+")::input(double)::in_double") + ,m_sigdTimeDepSOUT(boost::bind(&MyEntity::update,this,_1,_2), + m_sigdSIN, + "MyEntity("+name+")::input(double)::out_double") + ,m_sigdTwoTimeDepSOUT(boost::bind(&MyEntity::update,this,_1,_2), + m_sigdSIN, + "MyEntity("+name+")::input(double)::out2double") + + { + 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; + return res; + } + + }; + DYNAMICGRAPH_FACTORY_ENTITY_PLUGIN (MyEntity,"MyEntity"); +} BOOST_AUTO_TEST_CASE(test_tracer) { // Creates a tracer. - dynamicgraph::Entity& entity = - *dynamicgraph::FactoryStorage::getInstance()->newEntity("Tracer", - "my-tracer"); + dynamicgraph::Tracer & atracer = + *dynamic_cast<dynamicgraph::Tracer *> + (dynamicgraph::FactoryStorage::getInstance()->newEntity("Tracer", + "my-tracer")); + + dynamicgraph::Entity & entity = + *dynamicgraph::FactoryStorage::getInstance()->newEntity("MyEntity", + "my-entity"); + + /// Add trace by name + atracer.addSignalToTraceByName("my-entity.out_double","output"); + + + dynamicgraph::SignalBase<int> & aSignal = + entity.getSignal("out2double"); + + dynamicgraph::Signal<double,int> & aSignalInt = + *(dynamic_cast<dynamicgraph::Signal<double,int> *> + (& entity.getSignal("in_double"))); + + /// Add trace by signal object + atracer.addSignalToTrace(aSignal,"output2"); + + aSignalInt.setConstant(1.5); + + std::string rootdir("/tmp"); + std::string basename("my-tracer"); + std::string suffix(".dat"); + + /// Test openfiles + atracer.openFiles(rootdir,basename,suffix); + + atracer.start(); + for(int i=0;i<1000;i++) + { + aSignal.setTime(i); + aSignalInt.setTime(i); + atracer.recordTrigger(i,i); + } + atracer.stop(); + atracer.closeFiles(); }