16 #include <gtest/gtest.h> 25 #include <boost/thread.hpp> 28 using ::testing::DoAll;
29 using ::testing::Return;
30 using ::testing::Throw;
39 node1_Scanner_test = std::unique_ptr<MockScanner>(
new MockScanner());
41 laser_scan_fake->measures_.push_back(1);
43 laser_scan_error_1->measures_.push_back(1);
44 laser_scan_error_1->measures_.push_back(2);
46 laser_scan_error_2->measures_.push_back(1);
48 laser_scan_error_3->measures_.push_back(1);
53 delete laser_scan_fake;
54 delete laser_scan_error_1;
55 delete laser_scan_error_2;
56 delete laser_scan_error_3;
78 sub_ = nh_.subscribe(topic,
80 &TestSubscriber::callback,
87 while (sub_.getNumPublishers() < 1)
95 void callback(
const sensor_msgs::LaserScan::ConstPtr& newMessage)
98 message_ = *newMessage;
110 EXPECT_CALL(*(node1_Scanner_test),
start()).Times(1);
112 EXPECT_CALL(*(node1_Scanner_test), stop()).Times(1);
114 EXPECT_CALL(*(node1_Scanner_test), getCompleteScan())
116 .WillOnce(DoAll(ROS_SHUTDOWN(), Return(*laser_scan_fake)));
118 EXPECT_CALL(*(node1_Scanner_test), getCompleteScan())
120 .WillRepeatedly(Return(*laser_scan_fake))
121 .RetiresOnSaturation();
128 std::move(node1_Scanner_test));
144 EXPECT_CALL(*(node1_Scanner_test),
start()).Times(1);
146 EXPECT_CALL(*(node1_Scanner_test), stop()).Times(1);
148 EXPECT_CALL(*(node1_Scanner_test), getCompleteScan())
150 .WillOnce(DoAll(ROS_SHUTDOWN(), Return(*laser_scan_fake)));
152 EXPECT_CALL(*(node1_Scanner_test), getCompleteScan())
154 .WillRepeatedly(Return(*laser_scan_fake))
155 .RetiresOnSaturation();
162 std::move(node1_Scanner_test));
177 EXPECT_CALL(*(node1_Scanner_test),
start()).Times(1);
179 EXPECT_CALL(*(node1_Scanner_test), stop()).Times(1);
181 EXPECT_CALL(*(node1_Scanner_test), getCompleteScan())
183 .WillOnce(DoAll(ROS_SHUTDOWN(), Return(*laser_scan_fake)));
185 EXPECT_CALL(*(node1_Scanner_test), getCompleteScan())
187 .WillRepeatedly(Return(*laser_scan_fake))
188 .RetiresOnSaturation();
195 std::move(node1_Scanner_test));
210 EXPECT_CALL(*(node1_Scanner_test),
start()).Times(1);
212 EXPECT_CALL(*(node1_Scanner_test), getCompleteScan())
221 node1_nh_test,
"node1_topic",
"node1_frame", 0,
Degree(137.5), std::move(node1_Scanner_test));
236 node1_nh_test,
"node1_topic",
"node1_frame", 0,
Degree(137.5), std::move(node1_Scanner_test));
257 int main(
int argc,
char** argv)
259 ros::init(argc, argv,
"integrationtest_ros_scanner_node");
261 testing::InitGoogleTest(&argc, argv);
263 int ret = RUN_ALL_TESTS();
int main(int argc, char **argv)
Class implements a ROS-Node for the PSENscan safety laser scanner.
Class to model angles in degrees from user's perspective.
sensor_msgs::LaserScan message_
LaserScan * laser_scan_error_3
ROSCPP_DECL void init(int &argc, char **argv, const std::string &name, uint32_t options=0)
ros::NodeHandle node1_nh_test
Class to hold the data for one laserscan without depencies to ROS.
struct psen_scan::LaserScan LaserScan
Class to hold the data for one laserscan without depencies to ROS.
LaserScan * laser_scan_fake
LaserScan * laser_scan_error_1
TEST_F(ros_scanner_node_test, constructor)
sensor_msgs::LaserScan buildRosMessage(const LaserScan &laserscan)
Creates a ROS message from an LaserScan, which contains one scanning round.
LaserScan * laser_scan_error_2
TestSubscriber(const ros::NodeHandle &nh, const std::string &topic)
std::unique_ptr< MockScanner > node1_Scanner_test
void callback(const sensor_msgs::LaserScan::ConstPtr &newMessage)
ROSCPP_DECL void shutdown()
Class to model angles in PSENscan internal format (tenth of degrees)
void processingLoop()
endless loop for processing incoming UDP data from the laser scanner
ROSCPP_DECL void spinOnce()