23#include "ndn-cxx/util/impl/steady-timer.hpp"
30template<
class BaseClock,
class ClockTraits>
32 : m_currentTime(startTime)
36template<
class BaseClock,
class ClockTraits>
40 return " since unit test beginning";
43template<
class BaseClock,
class ClockTraits>
44typename BaseClock::time_point
47 return typename BaseClock::time_point(duration_cast<typename BaseClock::duration>(m_currentTime));
50template<
class BaseClock,
class ClockTraits>
51typename BaseClock::duration
54 return typename BaseClock::duration(1);
57template<
class BaseClock,
class ClockTraits>
73 std::this_thread::sleep_for(std::chrono::nanoseconds(duration_cast<nanoseconds>(
74 boost::asio::wait_traits<steady_clock>::to_wait_duration(
duration) +
75 typename BaseClock::duration(1)).count()));
78template<
class BaseClock,
class ClockTraits>
82 BOOST_ASSERT(!BaseClock::is_steady || timeSinceEpoch >= m_currentTime);
84 m_currentTime = timeSinceEpoch;
87 auto delta = timeSinceEpoch - m_currentTime;
88 std::this_thread::sleep_for(std::chrono::nanoseconds(duration_cast<nanoseconds>(
89 boost::asio::wait_traits<steady_clock>::to_wait_duration(delta) +
90 typename BaseClock::duration(1)).count()));
Clock that can be used in unit tests for time-dependent tests independent of wall clock.
void setNow(nanoseconds timeSinceEpoch)
Explicitly set clock to timeSinceEpoch.
std::string getSince() const override
BaseClock::time_point getNow() const override
BaseClock::duration toWaitDuration(typename BaseClock::duration d) const override
void advance(nanoseconds duration)
Advance unit test clock by duration.
UnitTestClock(nanoseconds startTime=ClockTraits::getDefaultStartTime())
::boost::chrono::duration< Rep, Period > duration
::boost::chrono::nanoseconds nanoseconds