Merge pull request #15 from bricerebsamen/stamp_rounding_error

🏁 Thanks! 🏁

`catkin build pcl_conversions -v --make-args run_tests`

---
```
[100%] Built target tests
-- run_tests.py: execute commands
  /home/username/rospcl_ws/devel/lib/pcl_conversions/pcl_conversions-test --gtest_output=xml:/home/username/rospcl_ws/build/pcl_conversions/test_results/pcl_conversions/gtest-pcl_conversions-test.xml
[==========] Running 3 tests from 2 test cases.
[----------] Global test environment set-up.
[----------] 2 tests from PCLConversionTests
[ RUN      ] PCLConversionTests.imageConversion
[       OK ] PCLConversionTests.imageConversion (0 ms)
[ RUN      ] PCLConversionTests.pointcloud2Conversion
[       OK ] PCLConversionTests.pointcloud2Conversion (0 ms)
[----------] 2 tests from PCLConversionTests (0 ms total)

[----------] 1 test from PCLConversionStamp
[ RUN      ] PCLConversionStamp.Stamps
[       OK ] PCLConversionStamp.Stamps (0 ms)
[----------] 1 test from PCLConversionStamp (0 ms total)

[----------] Global test environment tear-down
[==========] 3 tests from 2 test cases ran. (0 ms total)
[  PASSED  ] 3 tests.
```
This commit is contained in:
Lucid One 2015-03-19 16:06:28 -04:00
commit 4675fefe36
2 changed files with 45 additions and 2 deletions

View File

@ -79,13 +79,13 @@ namespace pcl_conversions {
inline
void fromPCL(const pcl::uint64_t &pcl_stamp, ros::Time &stamp)
{
stamp.fromNSec(pcl_stamp * 1e3); // Convert from us to ns
stamp.fromNSec(pcl_stamp * 1000ull); // Convert from us to ns
}
inline
void toPCL(const ros::Time &stamp, pcl::uint64_t &pcl_stamp)
{
pcl_stamp = stamp.toNSec() / 1e3; // Convert from ns to us
pcl_stamp = stamp.toNSec() / 1000ull; // Convert from ns to us
}
inline

View File

@ -100,6 +100,49 @@ TEST_F(PCLConversionTests, pointcloud2Conversion) {
} // namespace
struct StampTestData
{
const ros::Time stamp_;
ros::Time stamp2_;
explicit StampTestData(const ros::Time &stamp)
: stamp_(stamp)
{
pcl::uint64_t pcl_stamp;
pcl_conversions::toPCL(stamp_, pcl_stamp);
pcl_conversions::fromPCL(pcl_stamp, stamp2_);
}
};
TEST(PCLConversionStamp, Stamps)
{
{
const StampTestData d(ros::Time(1.000001));
EXPECT_TRUE(d.stamp_==d.stamp2_);
}
{
const StampTestData d(ros::Time(1.999999));
EXPECT_TRUE(d.stamp_==d.stamp2_);
}
{
const StampTestData d(ros::Time(1.999));
EXPECT_TRUE(d.stamp_==d.stamp2_);
}
{
const StampTestData d(ros::Time(1423680574, 746000000));
EXPECT_TRUE(d.stamp_==d.stamp2_);
}
{
const StampTestData d(ros::Time(1423680629, 901000000));
EXPECT_TRUE(d.stamp_==d.stamp2_);
}
}
int main(int argc, char **argv) {
try {
::testing::InitGoogleTest(&argc, argv);