1#include <base/system.h>
2
3#include <gtest/gtest.h>
4
5#include <cstdlib>
6
7class TimestampTest : public testing::Test
8{
9protected:
10 void SetUp() override
11 {
12#if defined(CONF_FAMILY_WINDOWS)
13 _putenv_s("TZ", "UTC");
14 _tzset();
15#else
16 setenv(name: "TZ", value: "UTC", replace: 1);
17 tzset();
18#endif
19 }
20};
21
22TEST_F(TimestampTest, FromStr)
23{
24 time_t Timestamp;
25 EXPECT_TRUE(timestamp_from_str("2023-12-31_12-58-55", FORMAT_NOSPACE, &Timestamp));
26 EXPECT_EQ(Timestamp, 1704027535);
27
28 EXPECT_TRUE(timestamp_from_str("2012-02-29_13-00-00", FORMAT_NOSPACE, &Timestamp));
29 EXPECT_EQ(Timestamp, 1330520400);
30
31 EXPECT_TRUE(timestamp_from_str("2004-05-15 18:13:53", FORMAT_SPACE, &Timestamp));
32 EXPECT_EQ(Timestamp, 1084644833);
33}
34
35TEST_F(TimestampTest, FromStrFailing)
36{
37 time_t Timestamp;
38 // Invalid time string
39 EXPECT_FALSE(timestamp_from_str("123 2023-12-31_12-58-55", FORMAT_NOSPACE, &Timestamp));
40
41 // Invalid time string
42 EXPECT_FALSE(timestamp_from_str("555-02-29_13-12-7", FORMAT_NOSPACE, &Timestamp));
43
44 // Time string does not fit the format
45 EXPECT_FALSE(timestamp_from_str("2004-05-15 18-13-53", FORMAT_SPACE, &Timestamp));
46
47 // Invalid time string
48 EXPECT_FALSE(timestamp_from_str("2000-01-01 00:00:00:00", FORMAT_SPACE, &Timestamp));
49}
50
51TEST_F(TimestampTest, WithSpecifiedFormatAndTimestamp)
52{
53 char aTimestamp[20];
54 str_timestamp_ex(time: 1704027535, buffer: aTimestamp, buffer_size: sizeof(aTimestamp), FORMAT_NOSPACE);
55 EXPECT_STREQ(aTimestamp, "2023-12-31_12-58-55");
56
57 str_timestamp_ex(time: 1330520400, buffer: aTimestamp, buffer_size: sizeof(aTimestamp), FORMAT_NOSPACE);
58 EXPECT_STREQ(aTimestamp, "2012-02-29_13-00-00");
59
60 str_timestamp_ex(time: 1084644833, buffer: aTimestamp, buffer_size: sizeof(aTimestamp), FORMAT_SPACE);
61 EXPECT_STREQ(aTimestamp, "2004-05-15 18:13:53");
62}
63