245 lines
4.5 KiB
C
245 lines
4.5 KiB
C
/*
|
|
* Copyright (c) 2019 Peter Bigot Consulting
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/* Tests where time_t is a 32-bit value */
|
|
|
|
#include <ztest.h>
|
|
#include "timeutil_test.h"
|
|
|
|
static const struct timeutil_test_data tests[] = {
|
|
/* Simple tests */
|
|
{ .ux = -1,
|
|
.civil = "1969-12-31 23:59:59 Wed 365",
|
|
.tm = {
|
|
.tm_sec = 59,
|
|
.tm_min = 59,
|
|
.tm_hour = 23,
|
|
.tm_mday = 31,
|
|
.tm_mon = 11,
|
|
.tm_year = 69,
|
|
.tm_wday = 3,
|
|
.tm_yday = 364,
|
|
} },
|
|
{ .ux = 0,
|
|
.civil = "1970-01-01 00:00:00 Thu 001",
|
|
.tm = {
|
|
.tm_sec = 0,
|
|
.tm_min = 0,
|
|
.tm_hour = 0,
|
|
.tm_mday = 1,
|
|
.tm_mon = 0,
|
|
.tm_year = 70,
|
|
.tm_wday = 4,
|
|
.tm_yday = 0,
|
|
} },
|
|
{ .ux = 1498577363,
|
|
.civil = "2017-06-27 15:29:23 Tue 178",
|
|
.tm = {
|
|
.tm_sec = 23,
|
|
.tm_min = 29,
|
|
.tm_hour = 15,
|
|
.tm_mday = 27,
|
|
.tm_mon = 5,
|
|
.tm_year = 117,
|
|
.tm_wday = 2,
|
|
.tm_yday = 177,
|
|
} },
|
|
|
|
/*
|
|
* 32-bit extreme values. Lower range is limited due
|
|
* algorithm subtraction rounding to days.
|
|
*/
|
|
{ .ux = -2147483648 + 86399,
|
|
.civil = "1901-12-14 20:45:51 Sat 348",
|
|
.tm = {
|
|
.tm_sec = 51,
|
|
.tm_min = 45,
|
|
.tm_hour = 20,
|
|
.tm_mday = 14,
|
|
.tm_mon = 11,
|
|
.tm_year = 1,
|
|
.tm_wday = 6,
|
|
.tm_yday = 347,
|
|
} },
|
|
{ .ux = 2147483647,
|
|
.civil = "2038-01-19 03:14:07 Tue 019",
|
|
.tm = {
|
|
.tm_sec = 7,
|
|
.tm_min = 14,
|
|
.tm_hour = 3,
|
|
.tm_mday = 19,
|
|
.tm_mon = 0,
|
|
.tm_year = 138,
|
|
.tm_wday = 2,
|
|
.tm_yday = 18,
|
|
} },
|
|
|
|
/* Normal leap year: 1972 */
|
|
{ .ux = 63071999,
|
|
.civil = "1971-12-31 23:59:59 Fri 365",
|
|
.tm = {
|
|
.tm_sec = 59,
|
|
.tm_min = 59,
|
|
.tm_hour = 23,
|
|
.tm_mday = 31,
|
|
.tm_mon = 11,
|
|
.tm_year = 71,
|
|
.tm_wday = 5,
|
|
.tm_yday = 364,
|
|
} },
|
|
{ .ux = 63072000,
|
|
.civil = "1972-01-01 00:00:00 Sat 001",
|
|
.tm = {
|
|
.tm_sec = 0,
|
|
.tm_min = 0,
|
|
.tm_hour = 0,
|
|
.tm_mday = 1,
|
|
.tm_mon = 0,
|
|
.tm_year = 72,
|
|
.tm_wday = 6,
|
|
.tm_yday = 0,
|
|
} },
|
|
{ .ux = 68083200,
|
|
.civil = "1972-02-28 00:00:00 Mon 059",
|
|
.tm = {
|
|
.tm_sec = 0,
|
|
.tm_min = 0,
|
|
.tm_hour = 0,
|
|
.tm_mday = 28,
|
|
.tm_mon = 1,
|
|
.tm_year = 72,
|
|
.tm_wday = 1,
|
|
.tm_yday = 58,
|
|
} },
|
|
{ .ux = 68169600,
|
|
.civil = "1972-02-29 00:00:00 Tue 060",
|
|
.tm = {
|
|
.tm_sec = 0,
|
|
.tm_min = 0,
|
|
.tm_hour = 0,
|
|
.tm_mday = 29,
|
|
.tm_mon = 1,
|
|
.tm_year = 72,
|
|
.tm_wday = 2,
|
|
.tm_yday = 59,
|
|
} },
|
|
{ .ux = 68256000,
|
|
.civil = "1972-03-01 00:00:00 Wed 061",
|
|
.tm = {
|
|
.tm_sec = 0,
|
|
.tm_min = 0,
|
|
.tm_hour = 0,
|
|
.tm_mday = 1,
|
|
.tm_mon = 2,
|
|
.tm_year = 72,
|
|
.tm_wday = 3,
|
|
.tm_yday = 60,
|
|
} },
|
|
{ .ux = 94521600,
|
|
.civil = "1972-12-30 00:00:00 Sat 365",
|
|
.tm = {
|
|
.tm_sec = 0,
|
|
.tm_min = 0,
|
|
.tm_hour = 0,
|
|
.tm_mday = 30,
|
|
.tm_mon = 11,
|
|
.tm_year = 72,
|
|
.tm_wday = 6,
|
|
.tm_yday = 364,
|
|
} },
|
|
{ .ux = 94608000,
|
|
.civil = "1972-12-31 00:00:00 Sun 366",
|
|
.tm = {
|
|
.tm_sec = 0,
|
|
.tm_min = 0,
|
|
.tm_hour = 0,
|
|
.tm_mday = 31,
|
|
.tm_mon = 11,
|
|
.tm_year = 72,
|
|
.tm_wday = 0,
|
|
.tm_yday = 365,
|
|
} },
|
|
{ .ux = 94694400,
|
|
.civil = "1973-01-01 00:00:00 Mon 001",
|
|
.tm = {
|
|
.tm_sec = 0,
|
|
.tm_min = 0,
|
|
.tm_hour = 0,
|
|
.tm_mday = 1,
|
|
.tm_mon = 0,
|
|
.tm_year = 73,
|
|
.tm_wday = 1,
|
|
.tm_yday = 0,
|
|
} },
|
|
|
|
/* Start of era 5, special leap year */
|
|
{ .ux = 946684799,
|
|
.civil = "1999-12-31 23:59:59 Fri 365",
|
|
.tm = {
|
|
.tm_sec = 59,
|
|
.tm_min = 59,
|
|
.tm_hour = 23,
|
|
.tm_mday = 31,
|
|
.tm_mon = 11,
|
|
.tm_year = 99,
|
|
.tm_wday = 5,
|
|
.tm_yday = 364,
|
|
} },
|
|
{ .ux = 946684800,
|
|
.civil = "2000-01-01 00:00:00 Sat 001",
|
|
.tm = {
|
|
.tm_sec = 0,
|
|
.tm_min = 0,
|
|
.tm_hour = 0,
|
|
.tm_mday = 1,
|
|
.tm_mon = 0,
|
|
.tm_year = 100,
|
|
.tm_wday = 6,
|
|
.tm_yday = 0,
|
|
} },
|
|
{ .ux = 951696000,
|
|
.civil = "2000-02-28 00:00:00 Mon 059",
|
|
.tm = {
|
|
.tm_sec = 0,
|
|
.tm_min = 0,
|
|
.tm_hour = 0,
|
|
.tm_mday = 28,
|
|
.tm_mon = 1,
|
|
.tm_year = 100,
|
|
.tm_wday = 1,
|
|
.tm_yday = 58,
|
|
} },
|
|
{ .ux = 951782400,
|
|
.civil = "2000-02-29 00:00:00 Tue 060",
|
|
.tm = {
|
|
.tm_sec = 0,
|
|
.tm_min = 0,
|
|
.tm_hour = 0,
|
|
.tm_mday = 29,
|
|
.tm_mon = 1,
|
|
.tm_year = 100,
|
|
.tm_wday = 2,
|
|
.tm_yday = 59,
|
|
} },
|
|
{ .ux = 951868800,
|
|
.civil = "2000-03-01 00:00:00 Wed 061",
|
|
.tm = {
|
|
.tm_sec = 0,
|
|
.tm_min = 0,
|
|
.tm_hour = 0,
|
|
.tm_mday = 1,
|
|
.tm_mon = 2,
|
|
.tm_year = 100,
|
|
.tm_wday = 3,
|
|
.tm_yday = 60,
|
|
} },
|
|
};
|
|
|
|
void test_s32(void)
|
|
{
|
|
timeutil_check(tests, sizeof(tests) / sizeof(*tests));
|
|
}
|