17 #include <gtest/gtest.h>
27 namespace device_state_estimator
33 SCOPED_TRACE(
"ClockGain 1.5");
41 ASSERT_EQ(
ros::Time(101.0),
s.stampToTime(1000));
42 ASSERT_EQ(
ros::Time(102.5),
s.stampToTime(2000));
45 SCOPED_TRACE(
"ClockGain 1.0");
53 ASSERT_EQ(
ros::Time(101.0),
s.stampToTime(1000));
54 ASSERT_EQ(
ros::Time(102.0),
s.stampToTime(2000));
57 SCOPED_TRACE(
"ClockGain 0.5");
65 ASSERT_EQ(
ros::Time(101.0),
s.stampToTime(1000));
66 ASSERT_EQ(
ros::Time(101.5),
s.stampToTime(2000));
83 SCOPED_TRACE(
"Without OriginFracPart");
85 ASSERT_EQ(
ros::Time(102.0003), it->t_req_);
86 ASSERT_EQ(
ros::Time(102.00031), it->t_res_);
87 ASSERT_EQ(2100, it->device_wall_stamp_);
91 SCOPED_TRACE(
"With OriginFracPart");
93 ASSERT_EQ(
ros::Time(105.0006), it->t_req_);
94 ASSERT_EQ(
ros::Time(105.00062), it->t_res_);
95 ASSERT_EQ(5100, it->device_wall_stamp_);
102 SCOPED_TRACE(
"No samples");
104 <<
"must return end iterator if no samples are pushSyncSampleed";
111 for (
double d = 0;
d < 0.003;
d += 0.00025)
113 SCOPED_TRACE(
"Offset " + std::to_string(
d));
115 for (
double t = 0; t < 0.11; t += 0.0101)
117 const uint64_t ts = (t +
d) * 1000;
121 ASSERT_NEAR(est.
recent_clocks_.back().origin_.toSec(), 1.000 -
d, 0.0002);
127 const std::vector<double> gains =
134 for (
const double gain : gains)
137 SCOPED_TRACE(
"Gain " + std::to_string(gain));
139 for (
double t0 = 0; t0 < 50; t0 += 10)
141 SCOPED_TRACE(
"T " + std::to_string(t0));
143 for (
double t = t0; t < t0 + 0.11; t += 0.0101)
145 const uint64_t ts = t * gain * 1000;
161 const double t0 = 100;
164 for (
double t = 10; t < 10.2; t += 0.0101)
184 const double t0 = 100;
186 clock_est->startSync();
187 for (
double t = 10; t < 10.2; t += 0.0101)
191 clock_est->finishSync();
192 clock_est->startSync();
193 for (
double t = 20; t < 20.2; t += 0.0101)
197 clock_est->finishSync();
199 const auto clock = clock_est->getClockState();
201 ros::Time(t0 + 30.0200), clock.stampToTime(30000));
203 ros::Time(t0 + 30.1206), clock.stampToTime(30100));
205 ros::Time(t0 + 30.2203), clock.stampToTime(30200));
220 int main(
int argc,
char** argv)
222 testing::InitGoogleTest(&argc, argv);
224 return RUN_ALL_TESTS();