234 lines
4.8 KiB
C++
234 lines
4.8 KiB
C++
#include <di/time.h>
|
|
#include <stdio.h>
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
extern "C" {
|
|
#include "time.c"
|
|
}
|
|
|
|
TEST(time, init) {
|
|
di_time_init();
|
|
}
|
|
|
|
TEST(time, get_uptime) {
|
|
uint64_t t;
|
|
|
|
/* min 0, msec 0 */
|
|
t = di_time_get_uptime();
|
|
EXPECT_EQ(static_cast<uint64_t>(0), t);
|
|
|
|
/* min 0, msec 1 */
|
|
di_time_tick();
|
|
t = di_time_get_uptime();
|
|
EXPECT_EQ(static_cast<uint64_t>(1), t);
|
|
|
|
/* min 1, msec 0 */
|
|
for (unsigned int i = 0; i < 59999; i++)
|
|
di_time_tick();
|
|
t = di_time_get_uptime();
|
|
EXPECT_EQ(static_cast<uint64_t>(60000), t);
|
|
|
|
/* min 1, msec 0 */
|
|
di_time_tick();
|
|
t = di_time_get_uptime();
|
|
EXPECT_EQ(static_cast<uint64_t>(60001), t);
|
|
|
|
// Reset all for further tests
|
|
di_time_reset();
|
|
|
|
/* min 0, msec 0 */
|
|
t = di_time_get_uptime();
|
|
EXPECT_EQ(static_cast<uint64_t>(0), t);
|
|
}
|
|
|
|
TEST(time, get_stamp) {
|
|
uint64_t t;
|
|
|
|
/* min 0, msec 0 */
|
|
t = di_time_get_stamp();
|
|
EXPECT_EQ(static_cast<uint64_t>(0), t);
|
|
|
|
/* min 0, msec 1 */
|
|
di_time_tick();
|
|
t = di_time_get_stamp();
|
|
EXPECT_EQ(static_cast<uint64_t>(1), t);
|
|
|
|
/* min 1, msec 0 */
|
|
for (unsigned int i = 0; i < 59999; i++)
|
|
di_time_tick();
|
|
t = di_time_get_stamp();
|
|
EXPECT_EQ(static_cast<uint64_t>(60000), t);
|
|
|
|
/* min 1, msec 0 */
|
|
di_time_tick();
|
|
t = di_time_get_stamp();
|
|
EXPECT_EQ(static_cast<uint64_t>(60001), t);
|
|
|
|
// Reset all for further tests
|
|
di_time_reset();
|
|
|
|
/* min 0, msec 0 */
|
|
t = di_time_get_stamp();
|
|
EXPECT_EQ(static_cast<uint64_t>(0), t);
|
|
}
|
|
|
|
TEST(time, set) {
|
|
uint64_t t;
|
|
|
|
/* Invalid min 0, msec 0 */
|
|
t = di_time_get_stamp();
|
|
EXPECT_EQ(static_cast<uint64_t>(0), t);
|
|
|
|
/* 1 sec since 1970 to timestamp */
|
|
di_time_set(1);
|
|
t = di_time_get_stamp();
|
|
EXPECT_EQ(static_cast<uint64_t>(1000), t);
|
|
|
|
/* 2015-01-01T00:00:00 */
|
|
di_time_set(1420070400);
|
|
t = di_time_get_stamp();
|
|
EXPECT_EQ(static_cast<uint64_t>(1420070400UL * 1000UL), t);
|
|
}
|
|
|
|
TEST(time, set_ms) {
|
|
uint64_t t;
|
|
|
|
di_time_reset();
|
|
|
|
/* Invalid min 0, msec 0 */
|
|
t = di_time_get_stamp();
|
|
EXPECT_EQ(static_cast<uint64_t>(0), t);
|
|
|
|
/* 1 sec since 1970 to timestamp in milliseconds */
|
|
di_time_set_ms(1234);
|
|
t = di_time_get_stamp();
|
|
EXPECT_EQ(static_cast<uint64_t>(1234), t);
|
|
|
|
/* 2015-01-01T00:00:00 */
|
|
di_time_set_ms(14200704003456);
|
|
t = di_time_get_stamp();
|
|
EXPECT_EQ(static_cast<uint64_t>(14200704003456UL), t);
|
|
}
|
|
|
|
/** @todo ... real test */
|
|
TEST(time, tick_pps) {
|
|
di_time_tick_pps();
|
|
}
|
|
|
|
TEST(time, days_in_month_invalid) {
|
|
EXPECT_EQ(0U, _di_time_days_in_month(0, 1970));
|
|
EXPECT_EQ(0U, _di_time_days_in_month(13, 1970));
|
|
EXPECT_EQ(0U, _di_time_days_in_month(0, 2015));
|
|
EXPECT_EQ(0U, _di_time_days_in_month(13, 2015));
|
|
}
|
|
|
|
TEST(time, datetime_to_unix_invalidCases) {
|
|
// Invalid month 0 (test di_time_days_in_month switch case default)
|
|
// 2015-00-01T00:00:00 -> 0 (unix)
|
|
EXPECT_EQ(static_cast<uint32_t>(0), di_time_datetime_to_unix(
|
|
2015, // year
|
|
0, // month
|
|
1, // day
|
|
0, // hour
|
|
0, // min
|
|
0 // sec
|
|
));
|
|
|
|
// Invalid month 13 (test di_time_days_in_month switch case default)
|
|
// 2015-13-01T00:00:00 -> 0 (unix)
|
|
EXPECT_EQ(static_cast<uint32_t>(0), di_time_datetime_to_unix(
|
|
2015, // year
|
|
13, // month
|
|
1, // day
|
|
0, // hour
|
|
0, // min
|
|
0 // sec
|
|
));
|
|
}
|
|
|
|
TEST(time, datetime_to_unix) {
|
|
|
|
// 01-01-1970T00:00:00 -> 0
|
|
EXPECT_EQ(static_cast<uint32_t>(0), di_time_datetime_to_unix(
|
|
1970, // year
|
|
1, // month
|
|
1, // day
|
|
0, // hour
|
|
0, // min
|
|
0 // sec
|
|
));
|
|
|
|
// 01-01-2015T00:00:00 -> 1420070400
|
|
EXPECT_EQ(static_cast<uint32_t>(1420070400), di_time_datetime_to_unix(
|
|
2015, // year
|
|
1, // month
|
|
1, // day
|
|
0, // hour
|
|
0, // min
|
|
0 // sec
|
|
));
|
|
|
|
// 2015-07-01T01:02:03 -> 1435712523 (unix)
|
|
EXPECT_EQ(static_cast<uint32_t>(1435712523), di_time_datetime_to_unix(
|
|
2015, // year
|
|
7, // month
|
|
1, // day
|
|
1, // hour
|
|
2, // min
|
|
3 // sec
|
|
));
|
|
|
|
// Test leap year getting of amount of days in month februari
|
|
// 2016-03-01T23:59:59 -> 1456876799 (unix)
|
|
EXPECT_EQ(static_cast<uint32_t>(1456876799), di_time_datetime_to_unix(
|
|
2016, // year
|
|
3, // month
|
|
1, // day
|
|
23, // hour
|
|
59, // min
|
|
59 // sec
|
|
));
|
|
|
|
// Invalid month (test di_time_days_in_month switch case default)
|
|
// 2016-14-01T23:59:59 -> 1456876799 (unix)
|
|
di_time_datetime_to_unix(
|
|
2016, // year
|
|
14, // month
|
|
1, // day
|
|
23, // hour
|
|
59, // min
|
|
59 // sec
|
|
);
|
|
|
|
// 01-01-2025T00:00:00 -> 1735689600
|
|
EXPECT_EQ(static_cast<uint32_t>(1735689600), di_time_datetime_to_unix(
|
|
2025, // year
|
|
1, // month
|
|
1, // day
|
|
0, // hour
|
|
0, // min
|
|
0 // sec
|
|
));
|
|
|
|
// 01-01-2035T00:00:00 -> 2051222400
|
|
EXPECT_EQ(static_cast<uint32_t>(2051222400), di_time_datetime_to_unix(
|
|
2035, // year
|
|
1, // month
|
|
1, // day
|
|
0, // hour
|
|
0, // min
|
|
0 // sec
|
|
));
|
|
|
|
// 01-01-2050T00:00:00 -> 2524608000
|
|
EXPECT_EQ(static_cast<uint32_t>(2524608000), di_time_datetime_to_unix(
|
|
2050, // year
|
|
1, // month
|
|
1, // day
|
|
0, // hour
|
|
0, // min
|
|
0 // sec
|
|
));
|
|
}
|