diff --git a/doc/additionalDoc/extension.h b/doc/additionalDoc/extension.h index 130595fe4916a4bbe334a2685ab7505471369dfb..5142357bc3d1b24e9daceafbb81f64dc958aaa9d 100644 --- a/doc/additionalDoc/extension.h +++ b/doc/additionalDoc/extension.h @@ -36,11 +36,11 @@ It is providing a step-by-step way of building an entity \section sec_htw_helpers Helpers When writing entities you might use some macros which are very useful to write your class. -They are given also in the <a href="http://projects.laas.fr/gepetto/doc/stack-of-tasks/sot-core/master/doxygen-html">sot-core</a> package as well. \subsection subsec_howto_typedef Entity helpers The header <b>entity-helper.h</b> is defining a type called EntityClassName + \section sec_howto_macros_helpers Macro helpers \subsection subsec_howto_macros_helpers Preprocessing macros for signals @@ -95,17 +95,27 @@ The header <b>entity-helper.h</b> is defining a type called EntityClassName </ul> <li> - </li> + </li> Inner signals + <ul> <li> <b> DECLARE_SIGNAL_INNER(signal_name,type)</b> Inner signal are signal that depend on a state of the entity and not on input signals. This macro declares an inner signal with the following pattern: \code m_signal_nameSINNER \endcode - </li> - <li> <b>DEFINE_SIGNAL_INNER_FUNCTION</b> -This macro -</li> + It also creates a member function with the following pattern: + \code + type & EntityClassName::nameSINNER_function(signal_name)(type &, int) + \endcode + </li> + <li> <b>DEFINE_SIGNAL_INNER_FUNCTION(signal_name,type)</b> + This macro is used to implement the method related to signal_name. More precisely + it provides the header of the member function(i.e. method) declaration. + </li> + <li><b>DECLARE_SIGNAL_INNER_FUNCTION(signal_name,type)</b> + This macros declares the member function used to handle the access to this signal. + </li> + </ul> </ul> */ diff --git a/tests/debug-logger-winit.cpp b/tests/debug-logger-winit.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e13f8f3f464ce673328b7de78976801816bff23c --- /dev/null +++ b/tests/debug-logger-winit.cpp @@ -0,0 +1,89 @@ +/* Copyright 2019, LAAS-CNRS + * + * Olivier Stasse + * + * See LICENSE file + * + */ +#include <sstream> +#include <iostream> +#include <dynamic-graph/entity.h> +#include <dynamic-graph/exception-factory.h> +#include "dynamic-graph/factory.h" +#include "dynamic-graph/pool.h" + +#define ENABLE_RT_LOG +#include <dynamic-graph/real-time-logger.h> +#include <dynamic-graph/logger.h> + +#define BOOST_TEST_MODULE debug-logger + +#include <boost/test/unit_test.hpp> +#include <boost/test/output_test_stream.hpp> + +using boost::test_tools::output_test_stream; + + +namespace dynamicgraph +{ + class CustomEntity : public Entity + { + public: + static const std::string CLASS_NAME; + virtual const std::string& getClassName () const + { + return CLASS_NAME; + } + CustomEntity (const std::string n) + : Entity (n) + { + logger_.setTimeSample(0.001); + logger_.setStreamPrintPeriod(0.005); + logger_.setVerbosity(VERBOSITY_ALL); + LoggerVerbosity alv = logger_.getVerbosity(); + BOOST_CHECK(alv==VERBOSITY_ALL); + } + + ~CustomEntity() + { + } + void testDebugTrace() + { + sendMsg("This is a message of level MSG_TYPE_DEBUG",MSG_TYPE_DEBUG); + sendMsg("This is a message of level MSG_TYPE_INFO",MSG_TYPE_INFO); + sendMsg("This is a message of level MSG_TYPE_WARNING",MSG_TYPE_WARNING); + sendMsg("This is a message of level MSG_TYPE_ERROR",MSG_TYPE_ERROR); + sendMsg("This is a message of level MSG_TYPE_DEBUG_STREAM",MSG_TYPE_DEBUG_STREAM); + sendMsg("This is a message of level MSG_TYPE_INFO_STREAM",MSG_TYPE_INFO_STREAM); + sendMsg("This is a message of level MSG_TYPE_WARNING_STREAM",MSG_TYPE_WARNING_STREAM); + sendMsg("This is a message of level MSG_TYPE_ERROR_STREAM",MSG_TYPE_ERROR_STREAM); + + logger_.countdown(); + + } + }; + DYNAMICGRAPH_FACTORY_ENTITY_PLUGIN (CustomEntity,"CustomEntity"); +} + +BOOST_AUTO_TEST_CASE(debug_logger_wrong_initialization) +{ + std::ofstream of; + dynamicgraph::RealTimeLogger::instance(); + //of.open("/tmp/dg-LOGS.txt",std::ofstream::out|std::ofstream::app); + // dgADD_OSTREAM_TO_RTLOG (of); + + BOOST_CHECK_EQUAL (dynamicgraph::CustomEntity::CLASS_NAME, "CustomEntity"); + + dynamicgraph::CustomEntity& entity = *(dynamic_cast<dynamicgraph::CustomEntity *>( + dynamicgraph::FactoryStorage::getInstance()->newEntity("CustomEntity", + "my-entity-2"))); + + for(unsigned int i=0;i<10000;i++) + { + entity.testDebugTrace(); + } + + dynamicgraph::RealTimeLogger::destroy(); +} + +