Skip to content

Commit 12c86ee

Browse files
committed
Convert into parametrized tests
1 parent 8fd303b commit 12c86ee

File tree

1 file changed

+74
-18
lines changed

1 file changed

+74
-18
lines changed

transmission_interface/test/transmission_interface_variable_test.cpp

Lines changed: 74 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,20 @@
33
#include <transmission_interface/simple_transmission.h>
44
#include <transmission_interface/transmission_interface.h>
55
#include <vector>
6+
#include <sstream>
67

7-
using std::vector;
88
using namespace testing;
99

1010
namespace transmission_interface
1111
{
12-
// Floating-point value comparison threshold
13-
const double EPS = 1e-6;
12+
template <typename T>
13+
std::vector<T> operator+(const std::vector<T>& v1, const std::vector<T>& v2)
14+
{
15+
std::vector<T> result;
16+
result.insert(result.end(), v1.begin(), v1.end());
17+
result.insert(result.end(), v2.begin(), v2.end());
18+
return result;
19+
}
1420

1521
class PositionOnlyActuatorData : public ActuatorDataContainer<PositionActuatorData>
1622
{
@@ -29,6 +35,11 @@ class PositionOnlyActuatorData : public ActuatorDataContainer<PositionActuatorDa
2935
{
3036
return hasValidPointers(position);
3137
}
38+
39+
size_t size() const
40+
{
41+
return position.size();
42+
}
3243
};
3344

3445
class DummyHandle : public TransmissionHandle<PositionOnlyActuatorData>
@@ -41,56 +52,95 @@ class DummyHandle : public TransmissionHandle<PositionOnlyActuatorData>
4152
}
4253
};
4354

44-
TEST(HandlePreconditionsTest, ValidHandle)
55+
struct TransmissionTestParams
56+
{
57+
PositionOnlyActuatorData actuator_data;
58+
JointData joint_data;
59+
bool should_throw;
60+
};
61+
62+
std::string PrintToString(const TransmissionTestParams& param)
63+
{
64+
std::stringstream ss;
65+
ss << "ActuatorDataSize: " << param.actuator_data.size()
66+
<< " JointDataPositionSize: " << param.joint_data.position.size()
67+
<< " VelocitySize: " << param.joint_data.velocity.size() << " EffortSize: " << param.joint_data.effort.size()
68+
<< " ShouldThrow: " << (param.should_throw ? "Yes" : "No");
69+
return ss.str();
70+
}
71+
72+
class VariableTransmissionInterfaceTest : public TestWithParam<TransmissionTestParams>
73+
{
74+
public:
75+
VariableTransmissionInterfaceTest() : trans(1.0)
76+
{
77+
}
78+
79+
SimpleTransmission trans;
80+
};
81+
82+
TEST_P(VariableTransmissionInterfaceTest, transmissionHandleInitialization)
83+
{
84+
if (GetParam().should_throw)
85+
{
86+
EXPECT_THROW(DummyHandle("trans", &trans, GetParam().actuator_data, GetParam().joint_data),
87+
TransmissionInterfaceException);
88+
}
89+
else
90+
{
91+
EXPECT_NO_THROW(DummyHandle("trans", &trans, GetParam().actuator_data, GetParam().joint_data));
92+
}
93+
}
94+
95+
std::vector<TransmissionTestParams> makeTransmissionHandleTestParams(const int num_dof)
4596
{
97+
std::vector<TransmissionTestParams> result;
98+
constexpr bool SHOULD_THROW = true;
99+
constexpr bool SHOULD_NOT_THROW = false;
100+
46101
double val = 0.0;
47-
vector<double*> good_vec(1, &val);
48-
SimpleTransmission trans(1.0);
102+
std::vector<double*> good_vec(num_dof, &val);
49103

50104
{
51105
PositionOnlyActuatorData a_data;
52-
JointData j_data;
53106
a_data.position = good_vec;
54-
EXPECT_NO_THROW(DummyHandle("trans", &trans, a_data, j_data));
107+
result.push_back({ a_data, JointData(), SHOULD_NOT_THROW });
55108
}
56109
{
57110
PositionOnlyActuatorData a_data;
58111
a_data.position = good_vec;
59112
JointData j_data;
60113
j_data.position = good_vec;
61-
EXPECT_NO_THROW(DummyHandle("trans", &trans, a_data, j_data));
114+
result.push_back({ a_data, j_data, SHOULD_NOT_THROW });
62115
}
63116
{
64117
PositionOnlyActuatorData a_data;
65118
a_data.position = good_vec;
66119
JointData j_data;
67120
j_data.velocity = good_vec;
68-
EXPECT_NO_THROW(DummyHandle("trans", &trans, a_data, j_data));
121+
result.push_back({ a_data, j_data, SHOULD_NOT_THROW });
69122
}
70123
{
71124
PositionOnlyActuatorData a_data;
72125
a_data.position = good_vec;
73126
JointData j_data;
74127
j_data.effort = good_vec;
75-
EXPECT_NO_THROW(DummyHandle("trans", &trans, a_data, j_data));
128+
result.push_back({ a_data, j_data, SHOULD_NOT_THROW });
76129
}
77130
{
78-
PositionOnlyActuatorData a_data;
79131
JointData j_data;
80132
j_data.position = good_vec;
81-
EXPECT_THROW(DummyHandle("trans", &trans, a_data, j_data), TransmissionInterfaceException);
133+
result.push_back({ PositionOnlyActuatorData(), j_data, SHOULD_THROW });
82134
}
83135
{
84-
PositionOnlyActuatorData a_data;
85136
JointData j_data;
86137
j_data.velocity = good_vec;
87-
EXPECT_THROW(DummyHandle("trans", &trans, a_data, j_data), TransmissionInterfaceException);
138+
result.push_back({ PositionOnlyActuatorData(), j_data, SHOULD_THROW });
88139
}
89140
{
90-
PositionOnlyActuatorData a_data;
91141
JointData j_data;
92142
j_data.effort = good_vec;
93-
EXPECT_THROW(DummyHandle("trans", &trans, a_data, j_data), TransmissionInterfaceException);
143+
result.push_back({ PositionOnlyActuatorData(), j_data, SHOULD_THROW });
94144
}
95145
{
96146
PositionOnlyActuatorData a_data;
@@ -99,10 +149,16 @@ TEST(HandlePreconditionsTest, ValidHandle)
99149
j_data.position = good_vec;
100150
j_data.velocity = good_vec;
101151
j_data.effort = good_vec;
102-
EXPECT_NO_THROW(DummyHandle("trans", &trans, a_data, j_data));
152+
result.push_back({ a_data, j_data, SHOULD_NOT_THROW });
103153
}
154+
155+
return result;
104156
}
105157

158+
// SimpleTransmission only handles one joint
159+
INSTANTIATE_TEST_CASE_P(TransmissionHandleInitialization, VariableTransmissionInterfaceTest,
160+
ValuesIn(makeTransmissionHandleTestParams(1)));
161+
106162
} // namespace transmission_interface
107163

108164
int main(int argc, char** argv)

0 commit comments

Comments
 (0)