test-time-util.c revision 9983cbb4cef92d68ffde87dcc91913cc2fed3da5
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen/* Copyright (c) 2009-2016 Dovecot authors, see the included COPYING file */
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenstatic void test_timeval_cmp(void)
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen { 0, 0 }, { 0, 0 },
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen { 0, 0 }, { 0, 1 },
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen { 0, 0 }, { 1, 0 },
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen static int output[] = {
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen unsigned int i;
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen test_assert(timeval_cmp(&input[i], &input[i+1]) == output[i/2]);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen test_assert(timeval_cmp(&input[i+1], &input[i]) == -output[i/2]);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenstatic void test_timeval_diff(void)
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen static int output[] = {
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen unsigned int i;
d41ebbd7ae8cfe36a570c644dd7c9c55073fbb20Timo Sirainen udiff = timeval_diff_usecs(&input[i], &input[i+1]);
d41ebbd7ae8cfe36a570c644dd7c9c55073fbb20Timo Sirainen mdiff = timeval_diff_msecs(&input[i], &input[i+1]);
8bf9eec2783abd32643578460cc6ba4ab0a647f9Timo Sirainen udiff = timeval_diff_usecs(&input[i+1], &input[i]);
8bf9eec2783abd32643578460cc6ba4ab0a647f9Timo Sirainen mdiff = timeval_diff_msecs(&input[i+1], &input[i]);
d41ebbd7ae8cfe36a570c644dd7c9c55073fbb20Timo Sirainenstatic void test_timestamp(const char *ts, int idx)
d41ebbd7ae8cfe36a570c644dd7c9c55073fbb20Timo Sirainen /* %G:%H:%M:%S */
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen /* %G - ISO 8601 year */
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen test_assert_idx(str_to_uint(t[0], &v) == 0, idx);
4970e8dfcb18c1353e44b82e4ec836d165b7de82Timo Sirainen /* %H - hour from 00 to 23 */
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen test_assert_idx(str_to_uint(t[1], &v) == 0, idx);
d41ebbd7ae8cfe36a570c644dd7c9c55073fbb20Timo Sirainen /* %M - minute from 00 to 59 */
d41ebbd7ae8cfe36a570c644dd7c9c55073fbb20Timo Sirainen test_assert_idx(str_to_uint(t[2], &v) == 0, idx);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen /* %S - second from 00 to 60 */
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen test_assert_idx(str_to_uint(t[3], &v) == 0, idx);
44aac2d461b4cb8e05e8c07f2f209372997a8719Timo Sirainenstatic void test_strftime_now(void)
01230de017cd273de41143d88e9c18df1243ae8aTimo Sirainen test_timestamp(t_strftime(TS_FMT, gmtime(&now)), 0);
01230de017cd273de41143d88e9c18df1243ae8aTimo Sirainen test_timestamp(t_strflocaltime(TS_FMT, now), 2);
01230de017cd273de41143d88e9c18df1243ae8aTimo Sirainenstatic void test_strftime_fixed(void)
01230de017cd273de41143d88e9c18df1243ae8aTimo Sirainen test_begin("t_strftime and variants fixed timestamp");
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen const char *exp = "Thu, 08 Dec 2016 18:42:16 +0000";
01230de017cd273de41143d88e9c18df1243ae8aTimo Sirainen test_assert(strcmp(t_strftime(RFC2822_FMT, gmtime(&ts)), exp) == 0);