1#include <base/time.h>
2
3#include <gtest/gtest.h>
4
5#include <thread>
6
7TEST(Time, Timestamp)
8{
9 (void)time_timestamp();
10}
11
12TEST(Time, HourOfTheDay)
13{
14 const int Hour = time_houroftheday();
15 EXPECT_TRUE(Hour >= 0 && Hour <= 23);
16}
17
18TEST(Time, Season)
19{
20 (void)time_season();
21}
22
23TEST(Time, Nanoseconds)
24{
25 const std::chrono::nanoseconds Time1 = time_get_nanoseconds();
26 std::this_thread::sleep_for(rtime: std::chrono::milliseconds(1));
27 const std::chrono::nanoseconds Time2 = time_get_nanoseconds();
28 EXPECT_LT(Time1, Time2);
29}
30
31TEST(Time, StrTime)
32{
33 char aBuf[32] = "foobar";
34
35 EXPECT_EQ(str_time(-123456, ETimeFormat::MINS_CENTISECS, aBuf, sizeof(aBuf)), 5);
36 EXPECT_STREQ(aBuf, "00.00");
37
38 EXPECT_EQ(str_time(INT64_MAX, ETimeFormat::DAYS, aBuf, sizeof(aBuf)), 23);
39 EXPECT_STREQ(aBuf, "1067519911673d 00:09:18");
40
41 EXPECT_EQ(str_time(123456, ETimeFormat::DAYS, aBuf, sizeof(aBuf)), 5);
42 EXPECT_STREQ(aBuf, "20:34");
43 EXPECT_EQ(str_time(1234567, ETimeFormat::DAYS, aBuf, sizeof(aBuf)), 8);
44 EXPECT_STREQ(aBuf, "03:25:45");
45 EXPECT_EQ(str_time(12345678, ETimeFormat::DAYS, aBuf, sizeof(aBuf)), 11);
46 EXPECT_STREQ(aBuf, "1d 10:17:36");
47
48 EXPECT_EQ(str_time(123456, ETimeFormat::HOURS, aBuf, sizeof(aBuf)), 5);
49 EXPECT_STREQ(aBuf, "20:34");
50 EXPECT_EQ(str_time(1234567, ETimeFormat::HOURS, aBuf, sizeof(aBuf)), 8);
51 EXPECT_STREQ(aBuf, "03:25:45");
52 EXPECT_EQ(str_time(12345678, ETimeFormat::HOURS, aBuf, sizeof(aBuf)), 8);
53 EXPECT_STREQ(aBuf, "34:17:36");
54
55 EXPECT_EQ(str_time(123456, ETimeFormat::MINS, aBuf, sizeof(aBuf)), 5);
56 EXPECT_STREQ(aBuf, "20:34");
57 EXPECT_EQ(str_time(1234567, ETimeFormat::MINS, aBuf, sizeof(aBuf)), 6);
58 EXPECT_STREQ(aBuf, "205:45");
59 EXPECT_EQ(str_time(12345678, ETimeFormat::MINS, aBuf, sizeof(aBuf)), 7);
60 EXPECT_STREQ(aBuf, "2057:36");
61
62 EXPECT_EQ(str_time(123456, ETimeFormat::HOURS_CENTISECS, aBuf, sizeof(aBuf)), 8);
63 EXPECT_STREQ(aBuf, "20:34.56");
64 EXPECT_EQ(str_time(1234567, ETimeFormat::HOURS_CENTISECS, aBuf, sizeof(aBuf)), 11);
65 EXPECT_STREQ(aBuf, "03:25:45.67");
66 EXPECT_EQ(str_time(12345678, ETimeFormat::HOURS_CENTISECS, aBuf, sizeof(aBuf)), 11);
67 EXPECT_STREQ(aBuf, "34:17:36.78");
68
69 EXPECT_EQ(str_time(123456, ETimeFormat::MINS_CENTISECS, aBuf, sizeof(aBuf)), 8);
70 EXPECT_STREQ(aBuf, "20:34.56");
71 EXPECT_EQ(str_time(1234567, ETimeFormat::MINS_CENTISECS, aBuf, sizeof(aBuf)), 9);
72 EXPECT_STREQ(aBuf, "205:45.67");
73 EXPECT_EQ(str_time(12345678, ETimeFormat::MINS_CENTISECS, aBuf, sizeof(aBuf)), 10);
74 EXPECT_STREQ(aBuf, "2057:36.78");
75
76 EXPECT_EQ(str_time(123456, ETimeFormat::SECS_CENTISECS, aBuf, sizeof(aBuf)), 5);
77 EXPECT_STREQ(aBuf, "34.56");
78 EXPECT_EQ(str_time(1234567, ETimeFormat::SECS_CENTISECS, aBuf, sizeof(aBuf)), 5);
79 EXPECT_STREQ(aBuf, "45.67");
80 EXPECT_EQ(str_time(12345678, ETimeFormat::SECS_CENTISECS, aBuf, sizeof(aBuf)), 5);
81 EXPECT_STREQ(aBuf, "36.78");
82}
83
84TEST(Time, MillisecondsFromSeconds)
85{
86 EXPECT_EQ(time_milliseconds_from_seconds(-0.001f), -1);
87 EXPECT_EQ(time_milliseconds_from_seconds(0.0f), 0);
88 EXPECT_EQ(time_milliseconds_from_seconds(0.0001f), 0);
89 EXPECT_EQ(time_milliseconds_from_seconds(0.0006f), 1);
90 EXPECT_EQ(time_milliseconds_from_seconds(0.001f), 1);
91 EXPECT_EQ(time_milliseconds_from_seconds(1.000f), 1000);
92 EXPECT_EQ(time_milliseconds_from_seconds(36000000.000f), 36000000000);
93}
94
95TEST(Time, StrTimeFloat)
96{
97 char aBuf[64];
98 EXPECT_EQ(str_time_float(123456.78, ETimeFormat::DAYS, aBuf, sizeof(aBuf)), 11);
99 EXPECT_STREQ(aBuf, "1d 10:17:36");
100
101 EXPECT_EQ(str_time_float(12.16, ETimeFormat::HOURS_CENTISECS, aBuf, sizeof(aBuf)), 5);
102 EXPECT_STREQ(aBuf, "12.16");
103
104 EXPECT_EQ(str_time_float(22.995, ETimeFormat::MINS, aBuf, sizeof(aBuf)), 5);
105 EXPECT_STREQ(aBuf, "00:22");
106
107 EXPECT_EQ(str_time_float(36000000.0f, ETimeFormat::HOURS_CENTISECS, aBuf, sizeof(aBuf)), 14);
108 EXPECT_STREQ(aBuf, "10000:00:00.00");
109}
110