From 880a723a4976abf6ae22731bd75416b938157f30 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 2 Jan 2021 13:15:06 +0100 Subject: [PATCH 3/3] timespec_get: Add tests. * tests/test-timespec_get.c: New file. * modules/timespec_get-tests: New file. --- ChangeLog | 4 ++++ modules/timespec_get-tests | 13 +++++++++++ tests/test-timespec_get.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 modules/timespec_get-tests create mode 100644 tests/test-timespec_get.c diff --git a/ChangeLog b/ChangeLog index 899f7a1..5d5c05a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2021-01-02 Bruno Haible + timespec_get: Add tests. + * tests/test-timespec_get.c: New file. + * modules/timespec_get-tests: New file. + timespec_get: New module. * lib/time.in.h (timespec_get): New declaration. * lib/timespec_get.c: New file. diff --git a/modules/timespec_get-tests b/modules/timespec_get-tests new file mode 100644 index 0000000..f13e199 --- /dev/null +++ b/modules/timespec_get-tests @@ -0,0 +1,13 @@ +Files: +tests/test-timespec_get.c +tests/signature.h +tests/macros.h + +Depends-on: + +configure.ac: + +Makefile.am: +TESTS += test-timespec_get +check_PROGRAMS += test-timespec_get +test_timespec_get_LDADD = $(LDADD) @LIB_CLOCK_GETTIME@ diff --git a/tests/test-timespec_get.c b/tests/test-timespec_get.c new file mode 100644 index 0000000..65555b3 --- /dev/null +++ b/tests/test-timespec_get.c @@ -0,0 +1,54 @@ +/* Test of timespec_get() function. + Copyright (C) 2021 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 + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible. */ + +#include + +#include + +#include "signature.h" +SIGNATURE_CHECK (timespec_get, int, (struct timespec *ts, int base)); + +#include "macros.h" + +int +main (void) +{ + struct timespec ts1; + time_t tt2; + struct timespec ts3; + time_t tt4; + + ASSERT (timespec_get (&ts1, TIME_UTC)); + tt2 = time (NULL); + ASSERT (timespec_get (&ts3, TIME_UTC)); + tt4 = time (NULL); + + /* Verify monotonicity of timespec_get(). */ + ASSERT (ts1.tv_sec < ts3.tv_sec + || (ts1.tv_sec == ts3.tv_sec && ts1.tv_nsec <= ts3.tv_nsec)); + + /* Verify monotonicity of time(). */ + ASSERT (tt2 <= tt4); + + /* Verify that the tv_sec field of the result is the same as time(NULL). */ + ASSERT (ts1.tv_sec <= tt2); + ASSERT (tt2 <= ts3.tv_sec); + ASSERT (ts3.tv_sec <= tt4); + + return 0; +} -- 2.7.4