blob: 14e049eb5f4783d8a55ee3a2cb0eee8cce2622f7 [file] [log] [blame]
brians343bc112013-02-10 01:53:46 +00001#include "aos/common/time.h"
2
Austin Schuh793d6b92016-05-01 13:28:14 -07003#include <thread>
4
brians343bc112013-02-10 01:53:46 +00005#include "gtest/gtest.h"
6
7#include "aos/common/macros.h"
Brian Silverman0534df62014-05-26 21:19:15 -07008#include "aos/common/util/death_test_log_implementation.h"
brians343bc112013-02-10 01:53:46 +00009
10namespace aos {
11namespace time {
12namespace testing {
13
Brian Silvermandcaa3f72015-11-29 05:32:08 +000014TEST(TimeTest, FromRate) {
Austin Schuhf2a50ba2016-12-24 16:16:26 -080015 EXPECT_EQ(::std::chrono::milliseconds(10), FromRate(100));
Brian Silvermandcaa3f72015-11-29 05:32:08 +000016}
17
Austin Schuh793d6b92016-05-01 13:28:14 -070018// Test the monotonic_clock and sleep_until functions.
19TEST(TimeTest, MonotonicClockSleepAndNow) {
20 monotonic_clock::time_point start = monotonic_clock::now();
21 const auto kSleepTime = ::std::chrono::milliseconds(500);
22 ::std::this_thread::sleep_until(start + kSleepTime);
23 monotonic_clock::time_point end = monotonic_clock::now();
24 EXPECT_GE(end - start, kSleepTime);
25 EXPECT_LT(end - start, kSleepTime + ::std::chrono::milliseconds(200));
26}
27
Neil Balch229001a2018-01-07 18:22:52 -080028// Test to_timespec for a duration.
29TEST(TimeTest, DurationToTimespec) {
30 struct timespec pos_time = to_timespec(::std::chrono::milliseconds(56262));
31 EXPECT_EQ(pos_time.tv_sec, 56);
32 EXPECT_EQ(pos_time.tv_nsec, 262000000);
33
34 struct timespec neg_time = to_timespec(::std::chrono::milliseconds(-56262));
35 EXPECT_EQ(neg_time.tv_sec, -56);
36 EXPECT_EQ(neg_time.tv_nsec, -262000000);
37}
38
39// Test to_timespec for a time_point.
40TEST(TimeTest, TimePointToTimespec) {
41 struct timespec pos_time = to_timespec(::aos::monotonic_clock::epoch() +
42 ::std::chrono::seconds(1432423));
43 EXPECT_EQ(pos_time.tv_sec, 1432423);
44 EXPECT_EQ(pos_time.tv_nsec, 0);
45
46 struct timespec neg_time = to_timespec(::aos::monotonic_clock::epoch() -
47 ::std::chrono::seconds(1432423));
48 EXPECT_EQ(neg_time.tv_sec, -1432423);
49 EXPECT_EQ(neg_time.tv_nsec, 0);
50}
51
brians343bc112013-02-10 01:53:46 +000052} // namespace testing
53} // namespace time
54} // namespace aos