From e7614bebdd9fba66fa164abf3c4e7ccc73b76370 Mon Sep 17 00:00:00 2001 From: Olivier Stasse <ostasse@laas.fr> Date: Thu, 28 Feb 2019 13:00:05 +0100 Subject: [PATCH] [tests] Improve test on pool Testing and checking output of writeGraph. --- tests/pool.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/tests/pool.cpp b/tests/pool.cpp index b14a64f..bce4d75 100644 --- a/tests/pool.cpp +++ b/tests/pool.cpp @@ -19,6 +19,8 @@ #include <dynamic-graph/factory.h> #include <dynamic-graph/exception-factory.h> #include <dynamic-graph/pool.h> +#include <dynamic-graph/signal-ptr.h> +#include <dynamic-graph/signal-time-dependent.h> #define BOOST_TEST_MODULE pool @@ -31,9 +33,18 @@ struct MyEntity : public dynamicgraph::Entity { static const std::string CLASS_NAME; + 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); + } virtual void display (std::ostream& os) const { @@ -44,6 +55,14 @@ struct MyEntity : public dynamicgraph::Entity { 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"); @@ -80,7 +99,41 @@ BOOST_AUTO_TEST_CASE (pool_display) // Testing the completion list of pool storage dg::PoolStorage::getInstance()->writeCompletionList (output); - BOOST_CHECK (output.is_equal ("print\nsignals\nsignalDep\n")); + BOOST_CHECK (output.is_equal ("MyEntityInst.in_double\nMyEntityInst.out_double\nprint\nsignals\nsignalDep\n")); + + // Checking the graph generated by the pool + dg::PoolStorage::getInstance()->writeGraph("output.dot"); + std::fstream the_debug_file; + the_debug_file.open("output.dot"); + std::ostringstream oss_output_wgph; + oss_output_wgph << the_debug_file.rdbuf(); + the_debug_file.close(); + + /* Use a predefined output */ + std::string str_to_test="/* This graph has been automatically generated.\n" + " 2019 Month: 2 Day: 28 Time: 11:28 */\n" + "digraph \"output\" { graph [ label=\"output\" bgcolor = white rankdir=LR ]\n" + "\t node [ fontcolor = black, color = black, fillcolor = gold1, style=filled, shape=box ] ; \n" + "\tsubgraph cluster_Entities { \n" + "\t} \n" + "\"MyEntityInst\" [ label = \"MyEntityInst\" ,\n" + " fontcolor = black, color = black, fillcolor=cyan, style=filled, shape=box ]\n" + "}\n"; + + /* Check the two substring (remove the date) */ + std::string s_output_wgph = oss_output_wgph.str(); + std::string s_crmk="*/"; + + std::size_t find_s_output_wgph = s_output_wgph.find(s_crmk); + std::string sub_s_output_wgph =s_output_wgph.substr(find_s_output_wgph, s_output_wgph.length()); + std::size_t find_str_to_test = str_to_test.find(s_crmk); + std::string sub_str_to_test =str_to_test.substr(find_str_to_test, str_to_test.length()); + + bool two_sub_string_identical; + two_sub_string_identical=sub_str_to_test==sub_s_output_wgph; + + BOOST_CHECK(two_sub_string_identical); + // Deregister the entity. dg::PoolStorage::getInstance()->deregisterEntity -- GitLab