Go to the documentation of this file.00001 #include <iostream>
00002 #include <gtest/gtest.h>
00003 #include "robodyn_utilities/MedianFilter.h"
00004 #include <ros/package.h>
00005 #include <stdexcept>
00006 #include <math.h>
00007 #include <fstream>
00008
00009 class MedianFilterTest : public ::testing::Test
00010 {
00011 protected:
00012 virtual void SetUp()
00013 {
00014 }
00015
00016 virtual void TearDown()
00017 {
00018 }
00019 };
00020
00021
00022 TEST_F(MedianFilterTest, Zero)
00023 {
00024 MedianFilter filter;
00025 filter.setSize(0);
00026
00028 for (int i = 0; i < 10; ++i)
00029 {
00030 double input = (double)rand() / 100;
00031 EXPECT_FLOAT_EQ(input, filter.getMedian(input));
00032 }
00033 }
00034
00035 TEST_F(MedianFilterTest, One)
00036 {
00037 MedianFilter filter;
00038 filter.setSize(1);
00039
00041 for (int i = 0; i < 10; ++i)
00042 {
00043 double input = (double)rand() / 100;
00044 EXPECT_FLOAT_EQ(input, filter.getMedian(input));
00045 }
00046 }
00047
00048 TEST_F(MedianFilterTest, Three)
00049 {
00050 MedianFilter filter;
00051 filter.setSize(3);
00053 EXPECT_FLOAT_EQ(1, filter.getMedian(1));
00054 EXPECT_FLOAT_EQ(1.5, filter.getMedian(2));
00055 EXPECT_FLOAT_EQ(2, filter.getMedian(3));
00056 EXPECT_FLOAT_EQ(3, filter.getMedian(4));
00057 EXPECT_FLOAT_EQ(4, filter.getMedian(4));
00058 EXPECT_FLOAT_EQ(4, filter.getMedian(4));
00059 EXPECT_FLOAT_EQ(4, filter.getMedian(3));
00060 EXPECT_FLOAT_EQ(3, filter.getMedian(2));
00061 EXPECT_FLOAT_EQ(2, filter.getMedian(1));
00062 }
00063
00064 TEST_F(MedianFilterTest, Resize)
00065 {
00066 MedianFilter filter;
00067 filter.setSize(3);
00069 EXPECT_FLOAT_EQ(1, filter.getMedian(1));
00070 EXPECT_FLOAT_EQ(1.5, filter.getMedian(2));
00071 EXPECT_FLOAT_EQ(2, filter.getMedian(3));
00072 EXPECT_FLOAT_EQ(3, filter.getMedian(4));
00073 EXPECT_FLOAT_EQ(4, filter.getMedian(4));
00074 filter.setSize(0);
00075 EXPECT_FLOAT_EQ(4, filter.getMedian(4));
00076 EXPECT_FLOAT_EQ(3, filter.getMedian(3));
00077 EXPECT_FLOAT_EQ(2, filter.getMedian(2));
00078 EXPECT_FLOAT_EQ(1, filter.getMedian(1));
00079 filter.setSize(4);
00080 EXPECT_FLOAT_EQ(1, filter.getMedian(1));
00081 EXPECT_FLOAT_EQ(1, filter.getMedian(2));
00082 EXPECT_FLOAT_EQ(1.5, filter.getMedian(3));
00083 EXPECT_FLOAT_EQ(2.5, filter.getMedian(4));
00084 EXPECT_FLOAT_EQ(3.5, filter.getMedian(4));
00085 }
00086
00087
00088 int main(int argc, char** argv)
00089 {
00090 testing::InitGoogleTest(&argc, argv);
00091 return RUN_ALL_TESTS();
00092 }