Skip to content

Commit 9bd18a2

Browse files
[tests] Add debug-tracer.cpp
1 parent 669af61 commit 9bd18a2

File tree

2 files changed

+95
-36
lines changed

2 files changed

+95
-36
lines changed

tests/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,5 @@ DYNAMIC_GRAPH_TEST(value)
6969
DYNAMIC_GRAPH_TEST(signal-ptr)
7070
DYNAMIC_GRAPH_TEST(real-time-logger)
7171
DYNAMIC_GRAPH_TEST(debug-trace)
72+
DYNAMIC_GRAPH_TEST(debug-tracer)
73+
TARGET_LINK_LIBRARIES(debug-tracer tracer)

tests/debug-tracer.cpp

Lines changed: 93 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -6,57 +6,114 @@
66
*
77
*/
88

9+
#include <iostream>
10+
911
#include <dynamic-graph/entity.h>
1012
#include <dynamic-graph/exception-factory.h>
1113
#include <dynamic-graph/factory.h>
1214
#include <dynamic-graph/pool.h>
13-
15+
#include <dynamic-graph/signal-ptr.h>
16+
#include <dynamic-graph/signal-time-dependent.h>
1417
#include <dynamic-graph/tracer.h>
1518

16-
struct MyEntity : public dynamicgraph::Entity
17-
{
18-
static const std::string CLASS_NAME;
19+
#define BOOST_TEST_MODULE debug-tracer
1920

20-
dynamicgraph::SignalPtr<double, int> m_sigdSIN;
21-
dynamicgraph::SignalTimeDependent<double, int> m_sigdTimeDepSOUT;
22-
23-
MyEntity (const std::string& name)
24-
: Entity (name)
25-
,m_sigdSIN(NULL,"MyEntity("+name+")::input(double)::in_double")
26-
,m_sigdTimeDepSOUT(boost::bind(&MyEntity::update,this,_1,_2),
27-
m_sigdSIN,
28-
"MyEntity("+name+")::input(double)::out_double")
29-
{
30-
signalRegistration(m_sigdSIN << m_sigdTimeDepSOUT);
31-
}
21+
#include <boost/test/unit_test.hpp>
22+
#include <boost/test/output_test_stream.hpp>
3223

33-
virtual void display (std::ostream& os) const
34-
{
35-
os << "Hello! My name is " << getName () << " !" << std::endl;
36-
}
37-
38-
virtual const std::string& getClassName () const
39-
{
40-
return CLASS_NAME;
41-
}
42-
43-
double & update(double &res, const int &inTime)
24+
namespace dynamicgraph
25+
{
26+
struct MyEntity : public dynamicgraph::Entity
4427
{
45-
const double &aDouble = m_sigdSIN(inTime);
46-
res = aDouble;
47-
return res;
48-
}
49-
50-
};
28+
static const std::string CLASS_NAME;
29+
30+
dynamicgraph::Signal<double, int> m_sigdSIN;
31+
dynamicgraph::SignalTimeDependent<double, int> m_sigdTimeDepSOUT;
32+
dynamicgraph::SignalTimeDependent<double, int> m_sigdTwoTimeDepSOUT;
33+
34+
MyEntity (const std::string& name)
35+
: Entity (name)
36+
,m_sigdSIN("MyEntity("+name+")::input(double)::in_double")
37+
,m_sigdTimeDepSOUT(boost::bind(&MyEntity::update,this,_1,_2),
38+
m_sigdSIN,
39+
"MyEntity("+name+")::input(double)::out_double")
40+
,m_sigdTwoTimeDepSOUT(boost::bind(&MyEntity::update,this,_1,_2),
41+
m_sigdSIN,
42+
"MyEntity("+name+")::input(double)::out2double")
43+
44+
{
45+
signalRegistration(m_sigdSIN
46+
<< m_sigdTimeDepSOUT
47+
<< m_sigdTwoTimeDepSOUT);
48+
}
49+
50+
virtual void display (std::ostream& os) const
51+
{
52+
os << "Hello! My name is " << getName () << " !" << std::endl;
53+
}
54+
55+
virtual const std::string& getClassName () const
56+
{
57+
return CLASS_NAME;
58+
}
59+
60+
double & update(double &res, const int &inTime)
61+
{
62+
const double &aDouble = m_sigdSIN(inTime);
63+
res = aDouble;
64+
return res;
65+
}
66+
67+
};
68+
DYNAMICGRAPH_FACTORY_ENTITY_PLUGIN (MyEntity,"MyEntity");
69+
}
5170

5271
BOOST_AUTO_TEST_CASE(test_tracer)
5372
{
5473

5574
// Creates a tracer.
56-
dynamicgraph::Entity& entity =
57-
*dynamicgraph::FactoryStorage::getInstance()->newEntity("Tracer",
58-
"my-tracer");
75+
dynamicgraph::Tracer & atracer =
76+
*dynamic_cast<dynamicgraph::Tracer *>
77+
(dynamicgraph::FactoryStorage::getInstance()->newEntity("Tracer",
78+
"my-tracer"));
79+
80+
dynamicgraph::Entity & entity =
81+
*dynamicgraph::FactoryStorage::getInstance()->newEntity("MyEntity",
82+
"my-entity");
83+
84+
/// Add trace by name
85+
atracer.addSignalToTraceByName("my-entity.out_double","output");
86+
87+
88+
dynamicgraph::SignalBase<int> & aSignal =
89+
entity.getSignal("out2double");
90+
91+
dynamicgraph::Signal<double,int> & aSignalInt =
92+
*(dynamic_cast<dynamicgraph::Signal<double,int> *>
93+
(& entity.getSignal("in_double")));
94+
95+
/// Add trace by signal object
96+
atracer.addSignalToTrace(aSignal,"output2");
97+
98+
aSignalInt.setConstant(1.5);
99+
100+
std::string rootdir("/tmp");
101+
std::string basename("my-tracer");
102+
std::string suffix(".dat");
103+
104+
/// Test openfiles
105+
atracer.openFiles(rootdir,basename,suffix);
106+
107+
atracer.start();
59108

109+
for(int i=0;i<1000;i++)
110+
{
111+
aSignal.setTime(i);
112+
aSignalInt.setTime(i);
113+
atracer.recordTrigger(i,i);
114+
}
60115

116+
atracer.stop();
61117

118+
atracer.closeFiles();
62119
}

0 commit comments

Comments
 (0)