|
6 | 6 | * |
7 | 7 | */ |
8 | 8 |
|
| 9 | +#include <iostream> |
| 10 | + |
9 | 11 | #include <dynamic-graph/entity.h> |
10 | 12 | #include <dynamic-graph/exception-factory.h> |
11 | 13 | #include <dynamic-graph/factory.h> |
12 | 14 | #include <dynamic-graph/pool.h> |
13 | | - |
| 15 | +#include <dynamic-graph/signal-ptr.h> |
| 16 | +#include <dynamic-graph/signal-time-dependent.h> |
14 | 17 | #include <dynamic-graph/tracer.h> |
15 | 18 |
|
16 | | -struct MyEntity : public dynamicgraph::Entity |
17 | | -{ |
18 | | - static const std::string CLASS_NAME; |
| 19 | +#define BOOST_TEST_MODULE debug-tracer |
19 | 20 |
|
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> |
32 | 23 |
|
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 |
44 | 27 | { |
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 | +} |
51 | 70 |
|
52 | 71 | BOOST_AUTO_TEST_CASE(test_tracer) |
53 | 72 | { |
54 | 73 |
|
55 | 74 | // 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(); |
59 | 108 |
|
| 109 | + for(int i=0;i<1000;i++) |
| 110 | + { |
| 111 | + aSignal.setTime(i); |
| 112 | + aSignalInt.setTime(i); |
| 113 | + atracer.recordTrigger(i,i); |
| 114 | + } |
60 | 115 |
|
| 116 | + atracer.stop(); |
61 | 117 |
|
| 118 | + atracer.closeFiles(); |
62 | 119 | } |
0 commit comments