From e5774ada360502c9633ba34ea1a0c6054fff44ff Mon Sep 17 00:00:00 2001 From: Servando German Date: Tue, 13 Nov 2018 23:30:43 +0000 Subject: [PATCH 1/3] Added unit test base --- .../packages/roi_object_filter/CMakeLists.txt | 11 ++++++++ .../roi_object_filter/roi_object_filter.h | 2 ++ .../src/roi_object_filter.cpp | 7 ++++- .../test/src/test_roi_object_filter.cpp | 28 +++++++++++++++++++ .../test/test_roi_object_filter.test | 5 ++++ 5 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/test/src/test_roi_object_filter.cpp create mode 100644 ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/test/test_roi_object_filter.test diff --git a/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/CMakeLists.txt b/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/CMakeLists.txt index 572bf25a73c..5c9043299e9 100644 --- a/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/CMakeLists.txt +++ b/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/CMakeLists.txt @@ -45,6 +45,11 @@ catkin_package( tf ) +include_directories( + include + ${catkin_INCLUDE_DIRS} +) + #lib add_library(roi_object_filter_lib SHARED src/roi_object_filter.cpp @@ -98,3 +103,9 @@ install(TARGETS roi_object_filter install(DIRECTORY launch/ DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/launch PATTERN ".svn" EXCLUDE) + +if(CATKIN_ENABLE_TESTING) + find_package(rostest REQUIRED) + add_rostest_gtest(test-roi_object_filter test/test_roi_object_filter.test test/src/test_roi_object_filter.cpp) + target_link_libraries(test-roi_object_filter ${catkin_LIBRARIES} roi_object_filter_lib) +endif() diff --git a/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/include/roi_object_filter/roi_object_filter.h b/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/include/roi_object_filter/roi_object_filter.h index e2051bf7672..13a8095378b 100644 --- a/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/include/roi_object_filter/roi_object_filter.h +++ b/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/include/roi_object_filter/roi_object_filter.h @@ -114,6 +114,8 @@ class RosRoiObjectFilterApp tf::StampedTransform FindTransform(const std::string& in_target_frame, const std::string& in_source_frame); geometry_msgs::Point TransformPoint(const geometry_msgs::Point& in_point, const tf::Transform& in_tf); +public: + bool getGridmap_ready(); public: void Run(); diff --git a/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/src/roi_object_filter.cpp b/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/src/roi_object_filter.cpp index 55fa295bacb..a53a52e353a 100644 --- a/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/src/roi_object_filter.cpp +++ b/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/src/roi_object_filter.cpp @@ -273,9 +273,14 @@ RosRoiObjectFilterApp::Run() ROS_INFO("[%s] END", __APP_NAME__); } +bool RosRoiObjectFilterApp::getGridmap_ready() +{ + return gridmap_ready_; +} + RosRoiObjectFilterApp::RosRoiObjectFilterApp() { gridmap_ready_ = false; detections_ready_ = false; processing_ = false; -} \ No newline at end of file +} diff --git a/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/test/src/test_roi_object_filter.cpp b/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/test/src/test_roi_object_filter.cpp new file mode 100644 index 00000000000..4b33f664081 --- /dev/null +++ b/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/test/src/test_roi_object_filter.cpp @@ -0,0 +1,28 @@ +#include +#include + +#include "roi_object_filter/roi_object_filter.h" + +class TestSuite: public ::testing::Test { +public: + TestSuite(){} + ~TestSuite(){} +}; + +TEST(TestSuite, CheckConstructor){ + + RosRoiObjectFilterApp app; + + // Check boolean + ASSERT_TRUE(app.getGridmap_ready()) << "Boolean should be " << true; + +} + + + +int main(int argc, char **argv) { + testing::InitGoogleTest(&argc, argv); + ros::init(argc, argv, "TestNode"); + return RUN_ALL_TESTS(); +} + diff --git a/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/test/test_roi_object_filter.test b/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/test/test_roi_object_filter.test new file mode 100644 index 00000000000..2efe4fc9ea3 --- /dev/null +++ b/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/test/test_roi_object_filter.test @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file From 37463ee74480448e782ba8eec23a8b9e6f316444 Mon Sep 17 00:00:00 2001 From: Servando German Date: Wed, 14 Nov 2018 12:17:16 +0000 Subject: [PATCH 2/3] Added friend class and sample test --- .../roi_object_filter/roi_object_filter.h | 4 +- .../src/roi_object_filter.cpp | 5 --- .../test/src/test_roi_object_filter.cpp | 45 +++++++++++++++++-- 3 files changed, 43 insertions(+), 11 deletions(-) diff --git a/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/include/roi_object_filter/roi_object_filter.h b/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/include/roi_object_filter/roi_object_filter.h index 13a8095378b..82042ed599d 100644 --- a/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/include/roi_object_filter/roi_object_filter.h +++ b/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/include/roi_object_filter/roi_object_filter.h @@ -69,6 +69,7 @@ class RosRoiObjectFilterApp { + friend class TestClass; ros::NodeHandle node_handle_; ros::Subscriber detections_range_subscriber_, wayarea_gridmap_subscriber_; @@ -114,9 +115,6 @@ class RosRoiObjectFilterApp tf::StampedTransform FindTransform(const std::string& in_target_frame, const std::string& in_source_frame); geometry_msgs::Point TransformPoint(const geometry_msgs::Point& in_point, const tf::Transform& in_tf); -public: - bool getGridmap_ready(); - public: void Run(); diff --git a/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/src/roi_object_filter.cpp b/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/src/roi_object_filter.cpp index a53a52e353a..637570f3851 100644 --- a/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/src/roi_object_filter.cpp +++ b/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/src/roi_object_filter.cpp @@ -273,11 +273,6 @@ RosRoiObjectFilterApp::Run() ROS_INFO("[%s] END", __APP_NAME__); } -bool RosRoiObjectFilterApp::getGridmap_ready() -{ - return gridmap_ready_; -} - RosRoiObjectFilterApp::RosRoiObjectFilterApp() { gridmap_ready_ = false; diff --git a/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/test/src/test_roi_object_filter.cpp b/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/test/src/test_roi_object_filter.cpp index 4b33f664081..5a1a953e15c 100644 --- a/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/test/src/test_roi_object_filter.cpp +++ b/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/test/src/test_roi_object_filter.cpp @@ -9,12 +9,51 @@ class TestSuite: public ::testing::Test { ~TestSuite(){} }; -TEST(TestSuite, CheckConstructor){ +class TestClass{ +public: + TestClass(){}; RosRoiObjectFilterApp app; - // Check boolean - ASSERT_TRUE(app.getGridmap_ready()) << "Boolean should be " << true; + geometry_msgs::Point TransformPoint(const geometry_msgs::Point& in_point, const tf::Transform& in_tf); + bool CheckPointInGrid(const grid_map::GridMap& in_grid_map, const cv::Mat& in_grid_image, + const geometry_msgs::Point& in_point); +}; + +geometry_msgs::Point TestClass::TransformPoint(const geometry_msgs::Point& in_point, const tf::Transform& in_tf) +{ + return app.TransformPoint(in_point, in_tf); +} + +bool TestClass::CheckPointInGrid(const grid_map::GridMap& in_grid_map, const cv::Mat& in_grid_image, + const geometry_msgs::Point& in_point) +{ + return app.CheckPointInGrid(in_grid_map, in_grid_image, in_point); +} + + +TEST(TestSuite, CheckTransformPoint){ + + TestClass testObj; + + tf::Quaternion q(0,0,0,1); + tf::Vector3 v(1,0,0); + geometry_msgs::Point inPt, outPt, expectedPt; + + inPt.x = 0; + inPt.y = 0; + inPt.z = 0; + expectedPt.x = 1; + expectedPt.y = 0; + expectedPt.z = 0; + + tf::Transform translation(q, v); + + outPt = testObj.TransformPoint(inPt, translation); + + ASSERT_EQ(outPt.x, expectedPt.x) << "X Coordinate should be " << expectedPt.x; + ASSERT_EQ(outPt.y, expectedPt.y) << "Y Coordinate should be " << expectedPt.y; + ASSERT_EQ(outPt.z, expectedPt.z) << "Z Coordinate should be " << expectedPt.z; } From 8882429d86da8a0432f2640c2f624b4fc803b78e Mon Sep 17 00:00:00 2001 From: Servando German Date: Wed, 14 Nov 2018 12:25:03 +0000 Subject: [PATCH 3/3] Added comment on test --- .../roi_object_filter/test/src/test_roi_object_filter.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/test/src/test_roi_object_filter.cpp b/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/test/src/test_roi_object_filter.cpp index 5a1a953e15c..e8059a61ae8 100644 --- a/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/test/src/test_roi_object_filter.cpp +++ b/ros/src/computing/perception/detection/object_filter/packages/roi_object_filter/test/src/test_roi_object_filter.cpp @@ -36,6 +36,7 @@ TEST(TestSuite, CheckTransformPoint){ TestClass testObj; + // Check translation of 1 along X axis tf::Quaternion q(0,0,0,1); tf::Vector3 v(1,0,0); geometry_msgs::Point inPt, outPt, expectedPt;