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));
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);
114 TEST(MultiChannelFilterChain, GetFilters){
121 EXPECT_TRUE(chain.
configure(5,
"TwoFilters"));
126 ASSERT_EQ(2u, filtersAfter.size());
127 EXPECT_EQ(0u, filtersBefore.size());
128 EXPECT_EQ(
"median_test_unique", chain.
getFilters()[0]->getName());
129 EXPECT_EQ(
"filters/MultiChannelMedianFilterDouble", chain.
getFilters()[0]->getType());
130 EXPECT_EQ(
"median_test2", chain.
getFilters()[1]->getName());
131 EXPECT_EQ(
"filters/MultiChannelMedianFilterDouble", chain.
getFilters()[1]->getType());
135 filtersAfter.clear();
143 ASSERT_EQ(2u, filtersAfter.size());
147 EXPECT_EQ(
"median_test_unique", filtersAfter[0]->
getName());
148 EXPECT_EQ(
"median_test2", filtersAfter[1]->
getName());
152 TEST(MultiChannelFilterChain, TransferFunction){
156 EXPECT_TRUE(chain.
configure(3,
"TransferFunction" ));
158 std::vector<double> in1,in2,in3,in4,in5,in6,in7;
159 std::vector<double> out1;
186 in7.push_back(-30.0);
189 out1.push_back(17.1112);
190 out1.push_back(9.0285);
191 out1.push_back(8.3102);
192 EXPECT_TRUE(chain.
update(in1, in1));
193 EXPECT_TRUE(chain.
update(in2, in2));
194 EXPECT_TRUE(chain.
update(in3, in3));
195 EXPECT_TRUE(chain.
update(in4, in4));
196 EXPECT_TRUE(chain.
update(in5, in5));
197 EXPECT_TRUE(chain.
update(in6, in6));
198 EXPECT_TRUE(chain.
update(in7, in7));
202 for(
unsigned int i=0; i<out1.size(); i++)
204 EXPECT_NEAR(out1[i], in7[i],
epsilon);
208 TEST(FilterChain, ReconfiguringChain){
214 EXPECT_TRUE(chain.
configure(
"OneIncrements"));
215 EXPECT_TRUE(chain.
update(v1, v1a));
219 EXPECT_TRUE(chain.
configure(
"TwoIncrements"));
220 EXPECT_TRUE(chain.
update(v1, v1a));
232 EXPECT_TRUE(chain.
configure(
"TwoIncrements"));
237 ASSERT_EQ(2u, filtersAfter.size());
238 EXPECT_EQ(0u, filtersBefore.size());
239 EXPECT_EQ(
"increment1", chain.
getFilters()[0]->getName());
240 EXPECT_EQ(
"filters/IncrementFilterInt", chain.
getFilters()[0]->getType());
241 EXPECT_EQ(
"increment2", chain.
getFilters()[1]->getName());
242 EXPECT_EQ(
"filters/IncrementFilterInt", chain.
getFilters()[1]->getType());
246 filtersAfter.clear();
254 ASSERT_EQ(2u, filtersAfter.size());
258 EXPECT_EQ(
"increment1", filtersAfter[0]->
getName());
259 EXPECT_EQ(
"increment2", filtersAfter[1]->
getName());
262 TEST(FilterChain, ThreeIncrementChains){
267 EXPECT_TRUE(chain.
configure(
"ThreeIncrements"));
268 EXPECT_TRUE(chain.
update(v1, v1a));
274 TEST(FilterChain, TenIncrementChains){
279 EXPECT_TRUE(chain.
configure(
"TenIncrements"));
280 EXPECT_TRUE(chain.
update(v1, v1a));
286 TEST(MultiChannelFilterChain, TenMultiChannelIncrementChains){
292 std::vector<int> v1a = v1;
294 EXPECT_TRUE(chain.
configure(3,
"TenMultiChannelIncrements"));
295 EXPECT_TRUE(chain.
update(v1, v1a));
296 for (
unsigned int i = 0; i < 3; i++)
298 EXPECT_EQ(11, v1a[i]);
305 int main(
int argc,
char **argv){
306 testing::InitGoogleTest(&argc, argv);
308 return RUN_ALL_TESTS();