Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
/* 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"
#include "dynamic-graph/command-bind.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;
using namespace dynamicgraph::command;
namespace dynamicgraph
{
class CustomEntity : public Entity
{
public:
static const std::string CLASS_NAME;
bool test_zero_arg_;
bool test_one_arg_;
bool test_two_args_;
bool test_three_args_;
bool test_four_args_;
virtual const std::string& getClassName () const
{
return CLASS_NAME;
}
CustomEntity (const std::string n)
: Entity (n)
{
test_zero_arg_ = false;
test_one_arg_ = false;
test_two_args_ = false;
test_three_args_ = false;
test_four_args_ = false;
addCommand("0_arg",
makeCommandVoid0(*this, &CustomEntity::zero_arg,
docCommandVoid0("zero arg")));
addCommand("1_arg",
makeCommandVoid1(*this, &CustomEntity::one_arg,
docCommandVoid1("one arg",
"int")));
addCommand("2_args",
makeCommandVoid2(*this, &CustomEntity::two_args,
docCommandVoid2("two args",
"int",
"int")));
addCommand("3_args",
makeCommandVoid3(*this, &CustomEntity::three_args,
docCommandVoid3("three args",
"int","int","int")));
addCommand("4_args",
makeCommandVoid4(*this, &CustomEntity::four_args,
docCommandVoid4("four args",
"int",
"int",
"int",
"int")));
}
~CustomEntity()
{
}
void zero_arg()
{
test_zero_arg_ = true;
}
void one_arg(const int & )
{
test_one_arg_ = true;
}
void two_args(const int & ,
const int & )
{
test_two_args_ = true;
}
void three_args(const int & ,
const int & ,
const int & )
{
test_three_args_ = true;
}
void four_args(const int & ,
const int & ,
const int & ,
const int & )
{
test_four_args_ = true;
}
};
DYNAMICGRAPH_FACTORY_ENTITY_PLUGIN (CustomEntity,"CustomEntity");
}
BOOST_AUTO_TEST_CASE(command_test)
{
dynamicgraph::CustomEntity& entity =
*(dynamic_cast<dynamicgraph::CustomEntity *>
(dynamicgraph::FactoryStorage::getInstance()->newEntity("CustomEntity",
"my-entity")));
std::map<const std::string,Command *> aCommandMap =
entity.getNewStyleCommandMap();
std::map<const std::string,Command *>::iterator it_map;
it_map = aCommandMap.find("0_arg");
if (it_map==aCommandMap.end())
BOOST_CHECK(false);
it_map->second->execute();
BOOST_CHECK(entity.test_zero_arg_);
int first_arg=1;
Value aValue(first_arg);
std::vector<std::string> vec_fname(4);
vec_fname[0]="1_arg";
vec_fname[1]="2_args";
vec_fname[2]="3_args";
vec_fname[3]="4_args";
std::vector<Value> values;
for (unsigned int i=0;i<4;i++)
{
it_map = aCommandMap.find(vec_fname[i]);
if (it_map==aCommandMap.end())
BOOST_CHECK(false);
values.push_back(aValue);
it_map->second->setParameterValues(values);
it_map->second->execute();
}
BOOST_CHECK(entity.test_one_arg_);
BOOST_CHECK(entity.test_two_args_);
BOOST_CHECK(entity.test_three_args_);
BOOST_CHECK(entity.test_four_args_);
}