/*
 * Copyright (c) 2019 Peter Bigot Consulting
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/* Tests where time_t is a 32-bit value */

#include <zephyr/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,
	  } },
};

ZTEST(timeutil_api, test_s32)
{
	timeutil_check(tests, sizeof(tests) / sizeof(*tests));
}
