30 #include "gtest/gtest.h" 35 TEST(MultiChannelFilterChain, configuring){
39 EXPECT_TRUE(chain.
configure(5,
"MultiChannelMeanFilterDouble5"));
41 double input1[] = {1,2,3,4,5};
42 double input1a[] = {9,9,9,9,9};
43 std::vector<double> v1 (input1, input1 +
sizeof(input1) /
sizeof(
double));
44 std::vector<double> v1a (input1a, input1a +
sizeof(input1a) /
sizeof(
double));
47 EXPECT_TRUE(chain.
update(v1, v1a));
51 for (
unsigned int i = 1; i < v1.size(); i++)
53 EXPECT_NEAR(input1[i], v1a[i], epsilon);
56 TEST(FilterChain, configuring){
60 EXPECT_TRUE(chain.
configure(
"MeanFilterFloat5"));
65 EXPECT_TRUE(chain.
update(v1, v1a));
69 EXPECT_NEAR(v1, v1a, epsilon);
73 TEST(MultiChannelFilterChain, MisconfiguredNumberOfChannels){
76 EXPECT_TRUE(chain.
configure(10,
"MultiChannelMedianFilterDouble5"));
80 double input1[] = {1,2,3,4,5};
81 double input1a[] = {1,2,3,4,5};
82 std::vector<double> v1 (input1, input1 +
sizeof(input1) /
sizeof(
double));
83 std::vector<double> v1a (input1a, input1a +
sizeof(input1a) /
sizeof(
double));
86 EXPECT_FALSE(chain.
update(v1, v1a));
92 TEST(MultiChannelFilterChain, TwoFilters){
96 EXPECT_TRUE(chain.
configure(5,
"TwoFilters"));
98 double input1[] = {1,2,3,4,5};
99 double input1a[] = {9,9,9,9,9};
100 std::vector<double> v1 (input1, input1 +
sizeof(input1) /
sizeof(
double));
101 std::vector<double> v1a (input1a, input1a +
sizeof(input1a) /
sizeof(
double));
104 EXPECT_TRUE(chain.
update(v1, v1a));
108 for (
unsigned int i = 1; i < v1.size(); i++)
110 EXPECT_NEAR(input1[i], v1a[i], epsilon);
115 TEST(MultiChannelFilterChain, TransferFunction){
119 EXPECT_TRUE(chain.
configure(3,
"TransferFunction" ));
121 std::vector<double> in1,in2,in3,in4,in5,in6,in7;
122 std::vector<double> out1;
149 in7.push_back(-30.0);
152 out1.push_back(17.1112);
153 out1.push_back(9.0285);
154 out1.push_back(8.3102);
155 EXPECT_TRUE(chain.
update(in1, in1));
156 EXPECT_TRUE(chain.
update(in2, in2));
157 EXPECT_TRUE(chain.
update(in3, in3));
158 EXPECT_TRUE(chain.
update(in4, in4));
159 EXPECT_TRUE(chain.
update(in5, in5));
160 EXPECT_TRUE(chain.
update(in6, in6));
161 EXPECT_TRUE(chain.
update(in7, in7));
165 for(
unsigned int i=0; i<out1.size(); i++)
167 EXPECT_NEAR(out1[i], in7[i], epsilon);
187 TEST(FilterChain, ReconfiguringChain){
193 EXPECT_TRUE(chain.
configure(
"OneIncrements"));
194 EXPECT_TRUE(chain.
update(v1, v1a));
198 EXPECT_TRUE(chain.
configure(
"TwoIncrements"));
199 EXPECT_TRUE(chain.
update(v1, v1a));
205 TEST(FilterChain, ThreeIncrementChains){
210 EXPECT_TRUE(chain.
configure(
"ThreeIncrements"));
211 EXPECT_TRUE(chain.
update(v1, v1a));
217 TEST(FilterChain, TenIncrementChains){
222 EXPECT_TRUE(chain.
configure(
"TenIncrements"));
223 EXPECT_TRUE(chain.
update(v1, v1a));
259 TEST(MultiChannelFilterChain, TenMultiChannelIncrementChains){
265 std::vector<int> v1a = v1;
267 EXPECT_TRUE(chain.
configure(3,
"TenMultiChannelIncrements"));
268 EXPECT_TRUE(chain.
update(v1, v1a));
269 for (
unsigned int i = 0; i < 3; i++)
271 EXPECT_EQ(11, v1a[i]);
278 int main(
int argc,
char **argv){
279 testing::InitGoogleTest(&argc, argv);
281 return RUN_ALL_TESTS();
bool clear()
Clear all filters from this chain.
A class which will construct and sequentially call Filters according to xml This is the primary way i...
ROSCPP_DECL void init(int &argc, char **argv, const std::string &name, uint32_t options=0)
bool update(const std::vector< T > &data_in, std::vector< T > &data_out)
process data through each of the filters added sequentially
int main(int argc, char **argv)
A class which will construct and sequentially call Filters according to xml This is the primary way i...
TEST(MultiChannelFilterChain, configuring)
bool clear()
Clear all filters from this chain.
bool update(const T &data_in, T &data_out)
process data through each of the filters added sequentially
bool configure(std::string param_name, ros::NodeHandle node=ros::NodeHandle())
Configure the filter chain from a configuration stored on the parameter server.
bool configure(unsigned int size, std::string param_name, ros::NodeHandle node=ros::NodeHandle())
Configure the filter chain from a configuration stored on the parameter server.