1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-12-20 12:03:52 +01:00

tests/unittests/tests-fmt: test ISO 8601 format functions

This commit is contained in:
Fabian Hüßler 2025-04-08 18:27:25 +02:00
parent 0f81f50e3a
commit 29b8af8a85

View File

@ -931,6 +931,98 @@ static void test_fmt_lpad(void)
TEST_ASSERT_EQUAL_STRING((char*)string, "xxxx3333");
}
static void test_fmt_time_iso8601(void)
{
char out[20] = { 0 };
const char *expected = "2025-04-08T17:40:02";
struct tm time = {
.tm_year = 2025 - 1900,
.tm_mon = 4 - 1,
.tm_mday = 8,
.tm_hour = 17,
.tm_min = 40,
.tm_sec = 2
};
TEST_ASSERT_EQUAL_INT(19, fmt_time_tm_iso8601(out, &time, 'T'));
TEST_ASSERT_EQUAL_STRING(expected, out);
expected = "2025-04-08 17:40:02";
TEST_ASSERT_EQUAL_INT(19, fmt_time_tm_iso8601(out, &time, ' '));
TEST_ASSERT_EQUAL_STRING(expected, out);
time.tm_year = -1901;
TEST_ASSERT_EQUAL_INT(-EINVAL, fmt_time_tm_iso8601(out, &time, 'T'));
time.tm_year = 9999 - 1899;
TEST_ASSERT_EQUAL_INT(-EINVAL, fmt_time_tm_iso8601(out, &time, 'T'));
}
static void test_scn_time_iso8601(void)
{
struct tm time;
memset(&time, 0, sizeof(time));
TEST_ASSERT_EQUAL_INT(19, scn_time_tm_iso8601(&time, "2025-04-08T17:40:02", 'T'));
TEST_ASSERT_EQUAL_INT(2025 - 1900, time.tm_year);
TEST_ASSERT_EQUAL_INT(4 - 1, time.tm_mon);
TEST_ASSERT_EQUAL_INT(8, time.tm_mday);
TEST_ASSERT_EQUAL_INT(17, time.tm_hour);
TEST_ASSERT_EQUAL_INT(40, time.tm_min);
TEST_ASSERT_EQUAL_INT(2, time.tm_sec);
memset(&time, 0, sizeof(time));
TEST_ASSERT_EQUAL_INT(19, scn_time_tm_iso8601(&time, "2025-04-08 17:40:02", ' '));
TEST_ASSERT_EQUAL_INT(2025 - 1900, time.tm_year);
TEST_ASSERT_EQUAL_INT(4 - 1, time.tm_mon);
TEST_ASSERT_EQUAL_INT(8, time.tm_mday);
TEST_ASSERT_EQUAL_INT(17, time.tm_hour);
TEST_ASSERT_EQUAL_INT(40, time.tm_min);
TEST_ASSERT_EQUAL_INT(2, time.tm_sec);
memset(&time, 0, sizeof(time));
TEST_ASSERT_EQUAL_INT(10, scn_time_tm_iso8601(&time, "2025-04-08", 'T'));
TEST_ASSERT_EQUAL_INT(2025 - 1900, time.tm_year);
TEST_ASSERT_EQUAL_INT(4 - 1, time.tm_mon);
TEST_ASSERT_EQUAL_INT(8, time.tm_mday);
memset(&time, 0, sizeof(time));
TEST_ASSERT_EQUAL_INT(19, scn_time_tm_iso8601(&time, "2025-13-08T17:40:02", 'T'));
TEST_ASSERT_EQUAL_INT(2025 - 1900, time.tm_year);
TEST_ASSERT_EQUAL_INT(13 - 1, time.tm_mon);
TEST_ASSERT_EQUAL_INT(8, time.tm_mday);
TEST_ASSERT_EQUAL_INT(17, time.tm_hour);
TEST_ASSERT_EQUAL_INT(40, time.tm_min);
TEST_ASSERT_EQUAL_INT(2, time.tm_sec);
memset(&time, 0, sizeof(time));
TEST_ASSERT_EQUAL_INT(19, scn_time_tm_iso8601(&time, "2025-04-08T17:60:02", 'T'));
TEST_ASSERT_EQUAL_INT(2025 - 1900, time.tm_year);
TEST_ASSERT_EQUAL_INT(4 - 1, time.tm_mon);
TEST_ASSERT_EQUAL_INT(8, time.tm_mday);
TEST_ASSERT_EQUAL_INT(17, time.tm_hour);
TEST_ASSERT_EQUAL_INT(60, time.tm_min);
TEST_ASSERT_EQUAL_INT(2, time.tm_sec);
memset(&time, 0, sizeof(time));
TEST_ASSERT_EQUAL_INT(19, scn_time_tm_iso8601(&time, "1899-04-08T17:40:02", 'T'));
TEST_ASSERT_EQUAL_INT(1899 - 1900, time.tm_year);
TEST_ASSERT_EQUAL_INT(4 - 1, time.tm_mon);
TEST_ASSERT_EQUAL_INT(8, time.tm_mday);
TEST_ASSERT_EQUAL_INT(17, time.tm_hour);
TEST_ASSERT_EQUAL_INT(40, time.tm_min);
TEST_ASSERT_EQUAL_INT(2, time.tm_sec);
memset(&time, 0, sizeof(time));
TEST_ASSERT_EQUAL_INT(-EBADF, scn_time_tm_iso8601(&time, "2025-04-08T", ' '));
TEST_ASSERT_EQUAL_INT(-EBADF, scn_time_tm_iso8601(&time, "2025-04-08 17:40:02", 'T'));
TEST_ASSERT_EQUAL_INT(-EINVAL, scn_time_tm_iso8601(&time, "2025-XX-08T17:40:02", 'T'));
TEST_ASSERT_EQUAL_INT(-EINVAL, scn_time_tm_iso8601(&time, "2025-4-08T17:40:02", 'T'));
TEST_ASSERT_EQUAL_INT(-EINVAL, scn_time_tm_iso8601(&time, "2025-04-8T17:40:02", 'T'));
TEST_ASSERT_EQUAL_INT(-EINVAL, scn_time_tm_iso8601(&time, "2025-04-08T17:40:2", 'T'));
TEST_ASSERT_EQUAL_INT(-EINVAL, scn_time_tm_iso8601(&time, "-2025-04-08T17:40:02", 'T'));
TEST_ASSERT_EQUAL_INT(-EINVAL, scn_time_tm_iso8601(&time, "10000-04-08T17:40:02", 'T'));
}
Test *tests_fmt_tests(void)
{
EMB_UNIT_TESTFIXTURES(fixtures) {
@ -965,6 +1057,8 @@ Test *tests_fmt_tests(void)
new_TestFixture(test_scn_u32_hex),
new_TestFixture(test_scn_buf_hex),
new_TestFixture(test_fmt_lpad),
new_TestFixture(test_fmt_time_iso8601),
new_TestFixture(test_scn_time_iso8601),
};
EMB_UNIT_TESTCALLER(fmt_tests, NULL, NULL, fixtures);