Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #include <string>
00038 #include <gtest/gtest.h>
00039 #include "ros/ros.h"
00040 #include "nav_msgs/Odometry.h"
00041 #include "geometry_msgs/PoseWithCovarianceStamped.h"
00042
00043 #include <boost/thread.hpp>
00044
00045 using namespace ros;
00046
00047
00048 int g_argc;
00049 char** g_argv;
00050
00051 typedef boost::shared_ptr<geometry_msgs::PoseWithCovarianceStamped const> EkfConstPtr;
00052
00053 class TestEKF : public testing::Test
00054 {
00055 public:
00056 NodeHandle node_;
00057 ros::Subscriber ekf_sub_;
00058 double ekf_counter_;
00059
00060
00061 void EKFCallback(const EkfConstPtr& ekf)
00062 {
00063
00064 ekf_counter_++;
00065 }
00066
00067
00068 protected:
00070 TestEKF()
00071 {
00072 ekf_counter_ = 0;
00073
00074 }
00075
00076
00078 ~TestEKF()
00079 {
00080 }
00081 };
00082
00083
00084
00085
00086 TEST_F(TestEKF, test)
00087 {
00088 ROS_INFO("Subscribing to robot_pose_ekf/odom_combined");
00089 ekf_sub_ = node_.subscribe("/robot_pose_ekf/odom_combined", 10, &TestEKF::EKFCallback, (TestEKF*)this);
00090
00091
00092 ROS_INFO("Waiting for 20 seconds while bag is playing");
00093 ros::Duration(20).sleep();
00094 ROS_INFO("End time reached");
00095
00096 EXPECT_EQ(ekf_counter_, 0);
00097
00098 SUCCEED();
00099 }
00100
00101
00102
00103
00104 int main(int argc, char** argv)
00105 {
00106 testing::InitGoogleTest(&argc, argv);
00107 g_argc = argc;
00108 g_argv = argv;
00109
00110 init(g_argc, g_argv, "testEKF");
00111
00112 boost::thread spinner(boost::bind(&ros::spin));
00113
00114 int res = RUN_ALL_TESTS();
00115 spinner.interrupt();
00116 spinner.join();
00117
00118 return res;
00119 }