diff options
Diffstat (limited to 'tests/test-time.c')
-rw-r--r-- | tests/test-time.c | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/tests/test-time.c b/tests/test-time.c index 6b69f3d5..752d4c0f 100644 --- a/tests/test-time.c +++ b/tests/test-time.c @@ -1,5 +1,5 @@ -/* Test of <time.h> substitute. - Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc. +/* Test of time() function. + Copyright (C) 2023-2024 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -14,30 +14,36 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. */ -/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ +/* Written by Bruno Haible. */ #include <config.h> #include <time.h> -/* Check that the types are all defined. */ -struct timespec t1; -#if 0 -/* POSIX:2008 does not require pid_t in <time.h> unconditionally, and indeed - it's missing on Mac OS X 10.5, FreeBSD 6.4, OpenBSD 4.9, mingw. */ -pid_t t2; -#endif +#include "signature.h" +SIGNATURE_CHECK (time, time_t, (time_t *)); -/* Check that NULL can be passed through varargs as a pointer type, - per POSIX 2008. */ -static_assert (sizeof NULL == sizeof (void *)); +#include <sys/time.h> -/* Check that TIME_UTC is defined and a positive integer. */ -int t3 = TIME_UTC; -static_assert (TIME_UTC > 0); +#include "macros.h" int main (void) { + /* Check consistency of time() with gettimeofday().tv_sec. */ + struct timeval tv1; + struct timeval tv2; + time_t tt3; + + /* Wait until gettimeofday() reports an increase in tv_sec. */ + ASSERT (gettimeofday (&tv1, NULL) == 0); + do + ASSERT (gettimeofday (&tv2, NULL) == 0); + while (tv2.tv_sec == tv1.tv_sec); + /* We are now at the beginning of a second. Test whether time() reports + the new second or the previous one. */ + tt3 = time (NULL); + ASSERT (tt3 >= tv2.tv_sec); + return 0; } |