5 #include <gtest/gtest.h>
7 #include <uavcan/Timestamp.hpp>
16 MonotonicTime m2 = MonotonicTime::fromMSec(1);
17 MonotonicDuration md1 = m2 - m1;
18 MonotonicDuration md2 = m1 - m2;
20 ASSERT_EQ(0, m1.toUSec());
21 ASSERT_EQ(1000, m2.toUSec());
22 ASSERT_EQ(1000, md1.toUSec());
23 ASSERT_EQ(-1000, md2.toUSec());
28 ASSERT_TRUE(m1.isZero());
29 ASSERT_FALSE(m2.isZero());
34 ASSERT_FALSE(md1.isZero());
35 ASSERT_TRUE(md1.isPositive());
36 ASSERT_TRUE(md2.isNegative());
38 ASSERT_EQ(0, (md1 + md2).toUSec());
39 ASSERT_EQ(2000, (md1 - md2).toUSec());
42 ASSERT_EQ(2000, md1.toUSec());
45 ASSERT_EQ(1000, md2.toUSec());
47 ASSERT_EQ(-1000, (-md2).toUSec());
52 ASSERT_EQ(
"0.000000", m1.toString());
53 ASSERT_EQ(
"0.001000", m2.toString());
55 ASSERT_EQ(
"0.002000", md1.toString());
56 ASSERT_EQ(
"-0.001000", (-md2).
toString());
58 ASSERT_EQ(
"1001.000001", MonotonicTime::fromUSec(1001000001).
toString());
59 ASSERT_EQ(
"-1001.000001", MonotonicDuration::fromUSec(-1001000001).
toString());
67 using uavcan::Timestamp;
73 ASSERT_EQ(9000, u1.toUSec());
77 ASSERT_EQ(18000, u1.toUSec());
79 ts = UtcTime::fromUSec(12345678900);
80 ASSERT_EQ(12345678900, ts.usec);
85 ASSERT_EQ(
"0.018000", u1.toString());
86 ASSERT_EQ(
"12345.678900", UtcTime(ts).
toString());
95 MonotonicTime max_4 = MonotonicTime::fromUSec(MonotonicTime::getMax().toUSec() / 4);
96 MonotonicDuration max_4_duration = max_4 - MonotonicTime();
98 std::cout << max_4 << std::endl;
99 ASSERT_EQ(max_4_duration.toUSec(), max_4.toUSec());
101 MonotonicTime
max = (((max_4 + max_4_duration) + max_4_duration) + max_4_duration) + max_4_duration;
102 ASSERT_EQ(
max, MonotonicTime::getMax());
105 min -= max_4_duration;
106 ASSERT_EQ(
min, MonotonicTime());