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