blob: e2523dbbd61d11d15a6119a4cf02978b24a5f4ce [file] [log] [blame]
Austin Schuhbe69cf32020-08-27 11:38:33 -07001#include "aos/events/event_scheduler.h"
2
3#include <chrono>
4
5#include "gtest/gtest.h"
6
7namespace aos {
8
9namespace chrono = std::chrono;
10
11// Tests that the default parameters (slope of 1, offest of 0) behave as
12// an identity.
13TEST(EventSchedulerTest, IdentityTimeConversion) {
14 EventScheduler s;
15 EXPECT_EQ(s.FromDistributedClock(distributed_clock::epoch()),
16 monotonic_clock::epoch());
17
18 EXPECT_EQ(
19 s.FromDistributedClock(distributed_clock::epoch() + chrono::seconds(1)),
20 monotonic_clock::epoch() + chrono::seconds(1));
21
22 EXPECT_EQ(s.ToDistributedClock(monotonic_clock::epoch()),
23 distributed_clock::epoch());
24
25 EXPECT_EQ(
26 s.ToDistributedClock(monotonic_clock::epoch() + chrono::seconds(1)),
27 distributed_clock::epoch() + chrono::seconds(1));
28}
29
30// Tests that a non-unity slope is computed correctly.
31TEST(EventSchedulerTest, DoubleTimeConversion) {
32 EventScheduler s;
33 s.SetDistributedOffset(std::chrono::seconds(7), 2.0);
34
35 EXPECT_EQ(s.FromDistributedClock(distributed_clock::epoch()),
36 monotonic_clock::epoch() + chrono::seconds(7));
37
38 EXPECT_EQ(
39 s.FromDistributedClock(distributed_clock::epoch() + chrono::seconds(1)),
40 monotonic_clock::epoch() + chrono::seconds(9));
41
42 EXPECT_EQ(s.ToDistributedClock(monotonic_clock::epoch() + chrono::seconds(7)),
43 distributed_clock::epoch());
44
45 EXPECT_EQ(
46 s.ToDistributedClock(monotonic_clock::epoch() + chrono::seconds(9)),
47 distributed_clock::epoch() + chrono::seconds(1));
48}
49
50} // namespace aos