GCC Code Coverage Report | |||||||||||||||||||||
|
|||||||||||||||||||||
Line | Branch | Exec | Source |
1 |
/* |
||
2 |
* Copyright 2010, |
||
3 |
* François Bleibel, |
||
4 |
* Olivier Stasse, |
||
5 |
* |
||
6 |
* CNRS/AIST |
||
7 |
* |
||
8 |
*/ |
||
9 |
|||
10 |
/* -------------------------------------------------------------------------- */ |
||
11 |
/* --- INCLUDES ------------------------------------------------------------- */ |
||
12 |
/* -------------------------------------------------------------------------- */ |
||
13 |
#include <dynamic-graph/all-signals.h> |
||
14 |
#include <dynamic-graph/linear-algebra.h> |
||
15 |
|||
16 |
#include <iostream> |
||
17 |
#include <sot/core/debug.hh> |
||
18 |
|||
19 |
using namespace std; |
||
20 |
using namespace dynamicgraph; |
||
21 |
|||
22 |
template <class Res = double> |
||
23 |
class DummyClass { |
||
24 |
public: |
||
25 |
std::string proname; |
||
26 |
list<SignalTimeDependent<double, int> *> inputsig; |
||
27 |
list<SignalTimeDependent<dynamicgraph::Vector, int> *> inputsigV; |
||
28 |
|||
29 |
public: |
||
30 |
✓✗ | 12 |
DummyClass(const std::string &n) : proname(n), res(), appel(0), timedata(0) {} |
31 |
|||
32 |
26 |
Res &fun(Res &res, int t) { |
|
33 |
26 |
appel++; |
|
34 |
26 |
timedata = t; |
|
35 |
|||
36 |
26 |
cout << "Inside " << proname << " -> " << this << endl; |
|
37 |
12 |
for (list<SignalTimeDependent<double, int> *>::iterator it = |
|
38 |
26 |
inputsig.begin(); |
|
39 |
✓✓ | 50 |
it != inputsig.end(); ++it) { |
40 |
✓✗✓✗ |
12 |
cout << *(*it) << endl; |
41 |
✓✗ | 12 |
(*it)->access(timedata); |
42 |
} |
||
43 |
28 |
for (list<SignalTimeDependent<dynamicgraph::Vector, int> *>::iterator it = |
|
44 |
26 |
inputsigV.begin(); |
|
45 |
✓✓ | 82 |
it != inputsigV.end(); ++it) { |
46 |
✓✗✓✗ |
28 |
cout << *(*it) << endl; |
47 |
✓✗ | 28 |
(*it)->access(timedata); |
48 |
} |
||
49 |
|||
50 |
26 |
return res = (*this)(); |
|
51 |
} |
||
52 |
|||
53 |
✓✗ | 6 |
void add(SignalTimeDependent<double, int> &sig) { inputsig.push_back(&sig); } |
54 |
7 |
void add(SignalTimeDependent<dynamicgraph::Vector, int> &sig) { |
|
55 |
✓✗ | 14 |
inputsigV.push_back(&sig); |
56 |
14 |
} |
|
57 |
|||
58 |
Res operator()(void); |
||
59 |
|||
60 |
Res res; |
||
61 |
int appel; |
||
62 |
int timedata; |
||
63 |
}; |
||
64 |
|||
65 |
template <class Res> |
||
66 |
Res DummyClass<Res>::operator()(void) { |
||
67 |
return this->res; |
||
68 |
} |
||
69 |
|||
70 |
template <> |
||
71 |
8 |
double DummyClass<double>::operator()(void) { |
|
72 |
8 |
res = appel * timedata; |
|
73 |
8 |
return res; |
|
74 |
} |
||
75 |
template <> |
||
76 |
5 |
dynamicgraph::Vector DummyClass<dynamicgraph::Vector>::operator()(void) { |
|
77 |
5 |
res.resize(3); |
|
78 |
✓✗ | 5 |
res.fill(appel * timedata); |
79 |
5 |
return res; |
|
80 |
} |
||
81 |
|||
82 |
1 |
int main(void) { |
|
83 |
✓✗✓✗ ✓✗✓✗ ✓✗✓✗ |
5 |
DummyClass<double> pro1("pro1"), pro3("pro3"), pro5("pro5"); |
84 |
✓✗✓✗ ✓✗✓✗ ✓✗✓✗ |
5 |
DummyClass<dynamicgraph::Vector> pro2("pro2"), pro4("pro4"), pro6("pro6"); |
85 |
|||
86 |
✓✗✓✗ |
3 |
SignalTimeDependent<double, int> sig5("Sig5"); |
87 |
✓✗✓✗ |
3 |
SignalTimeDependent<dynamicgraph::Vector, int> sig6("Sig6"); |
88 |
|||
89 |
✓✗✓✗ ✓✗ |
3 |
SignalTimeDependent<dynamicgraph::Vector, int> sig4(sig5, "Sig4"); |
90 |
SignalTimeDependent<dynamicgraph::Vector, int> sig2( |
||
91 |
✓✗✓✗ ✓✗✓✗ ✓✗ |
3 |
sig4 << sig4 << sig4 << sig6, "Sig2"); |
92 |
✓✗✓✗ ✓✗✓✗ |
3 |
SignalTimeDependent<double, int> sig3(sig2 << sig5 << sig6, "Sig3"); |
93 |
SignalTimeDependent<double, int> sig1( |
||
94 |
✓✗ | 2 |
boost::bind(&DummyClass<double>::fun, &pro1, _1, _2), sig2 << sig3, |
95 |
✓✗✓✗ ✓✗✓✗ |
4 |
"Sig1"); |
96 |
|||
97 |
// cout << "--- Test Array ------ "<<endl; |
||
98 |
// SignalArray<int> tarr(12); |
||
99 |
// tarr<<sig3<<sig2;//+sig2+sig3; |
||
100 |
// dispArray(sig4<<sig2<<sig3); |
||
101 |
// dispArray(tarr); |
||
102 |
|||
103 |
✓✗✓✗ ✓✗ |
1 |
sig2.setFunction( |
104 |
boost::bind(&DummyClass<dynamicgraph::Vector>::fun, &pro2, _1, _2)); |
||
105 |
✓✗✓✗ ✓✗ |
1 |
sig3.setFunction(boost::bind(&DummyClass<double>::fun, &pro3, _1, _2)); |
106 |
✓✗✓✗ ✓✗ |
1 |
sig4.setFunction( |
107 |
boost::bind(&DummyClass<dynamicgraph::Vector>::fun, &pro4, _1, _2)); |
||
108 |
✓✗✓✗ ✓✗ |
1 |
sig5.setFunction(boost::bind(&DummyClass<double>::fun, &pro5, _1, _2)); |
109 |
✓✗✓✗ ✓✗ |
1 |
sig6.setFunction( |
110 |
boost::bind(&DummyClass<dynamicgraph::Vector>::fun, &pro6, _1, _2)); |
||
111 |
|||
112 |
✓✗ | 1 |
pro1.add(sig2); |
113 |
✓✗ | 1 |
pro1.add(sig3); |
114 |
✓✗ | 1 |
pro2.add(sig4); |
115 |
✓✗ | 1 |
pro2.add(sig4); |
116 |
✓✗ | 1 |
pro2.add(sig4); |
117 |
✓✗ | 1 |
pro3.add(sig2); |
118 |
✓✗ | 1 |
pro4.add(sig5); |
119 |
✓✗ | 1 |
pro2.add(sig6); |
120 |
✓✗ | 1 |
pro3.add(sig5); |
121 |
✓✗ | 1 |
pro3.add(sig6); |
122 |
|||
123 |
1 |
sig5.setDependencyType(TimeDependency<int>::ALWAYS_READY); |
|
124 |
1 |
sig6.setDependencyType(TimeDependency<int>::BOOL_DEPENDENT); |
|
125 |
|||
126 |
1 |
sig6.setReady(); |
|
127 |
|||
128 |
✓✗✓✗ ✓✗✓✗ ✓✗ |
1 |
sig1.displayDependencies(cout) << endl; |
129 |
|||
130 |
✓✗✓✗ ✓✗✓✗ ✓✗ |
1 |
cout << "Needs update?" << endl << sig1.needUpdate(2) << endl; |
131 |
dgDEBUG(1) << "Access sig1(2) " << endl; |
||
132 |
✓✗ | 1 |
sig1.access(2); |
133 |
✓✗✓✗ ✓✗✓✗ ✓✗ |
1 |
sig1.displayDependencies(cout) << endl; |
134 |
dgDEBUG(1) << "Access sig2(4) " << endl; |
||
135 |
✓✗ | 1 |
sig2.access(4); |
136 |
✓✗✓✗ ✓✗✓✗ ✓✗ |
1 |
sig1.displayDependencies(cout) << endl; |
137 |
dgDEBUG(1) << "Access sig1(4) " << endl; |
||
138 |
✓✗ | 1 |
sig1.access(4); |
139 |
✓✗✓✗ ✓✗✓✗ ✓✗ |
1 |
sig1.displayDependencies(cout) << endl; |
140 |
|||
141 |
✓✗ | 1 |
sig1.needUpdate(6); |
142 |
✓✗ | 1 |
sig1.needUpdate(6); |
143 |
|||
144 |
1 |
return 0; |
|
145 |
} |
Generated by: GCOVR (Version 4.2) |