src.dualinventive.com/fw/dncm/libdi/tests/time.cpp

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
));
}