From 5e673c40112701e37d600116ae4deda05db3d36f Mon Sep 17 00:00:00 2001 From: Simon Josefsson Date: Tue, 1 Jul 2008 14:55:29 +0200 Subject: [PATCH] Add self-test for getdate module. * modules/getdate-tests: New file. * tests/test-getdate.c: New file. --- ChangeLog | 6 +++ modules/getdate-tests | 11 ++++++ tests/test-getdate.c | 89 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 modules/getdate-tests create mode 100644 tests/test-getdate.c diff --git a/ChangeLog b/ChangeLog index 7a8b2dd862..b9076e273e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-07-01 Simon Josefsson + + Add self-test for getdate module. + * modules/getdate-tests: New file. + * tests/test-getdate.c: New file. + 2008-06-29 Bruno Haible * gnulib-tool (func_import): Put gnulib-comp.m4 into .cvsignore or diff --git a/modules/getdate-tests b/modules/getdate-tests new file mode 100644 index 0000000000..4b5e3441a7 --- /dev/null +++ b/modules/getdate-tests @@ -0,0 +1,11 @@ +Files: +tests/test-getdate.c + +Depends-on: + +configure.ac: + +Makefile.am: +TESTS += test-getdate +check_PROGRAMS += test-getdate +test_getdate_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) diff --git a/tests/test-getdate.c b/tests/test-getdate.c new file mode 100644 index 0000000000..5bf3728cbd --- /dev/null +++ b/tests/test-getdate.c @@ -0,0 +1,89 @@ +/* Test of getdate() function. + Copyright (C) 2008 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, 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, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +/* Written by Simon Josefsson , 2008. */ + +#include + +#include +#include +#include + +#include "getdate.h" + +#define ASSERT(expr) \ + do \ + { \ + if (!(expr)) \ + { \ + fprintf (stderr, "%s:%d: assertion failed\n", \ + __FILE__, __LINE__); \ + fflush (stderr); \ + abort (); \ + } \ + } \ + while (0) + +#ifdef DEBUG +#define LOG(str, now, res) \ + printf ("string `%s' diff %d %d\n", \ + str, res.tv_sec - now.tv_sec, res.tv_nsec - now.tv_nsec); +#else +#define LOG(str, now, res) 0 +#endif + +int +main (int argc, char **argv) +{ + bool ret; + struct timespec result; + struct timespec now; + const char *p; + + now.tv_sec = 4711; + now.tv_nsec = 1267; + p = "now"; + ASSERT (get_date (&result, p, &now)); + LOG (p, now, result); + ASSERT (now.tv_sec == result.tv_sec && now.tv_nsec == result.tv_nsec); + + now.tv_sec = 4711; + now.tv_nsec = 1267; + p = "tomorrow"; + ASSERT (get_date (&result, p, &now)); + LOG (p, now, result); + ASSERT (now.tv_sec + 24 * 60 * 60 == result.tv_sec + && now.tv_nsec == result.tv_nsec); + + now.tv_sec = 4711; + now.tv_nsec = 1267; + p = "yesterday"; + ASSERT (get_date (&result, p, &now)); + LOG (p, now, result); + ASSERT (now.tv_sec - 24 * 60 * 60 == result.tv_sec + && now.tv_nsec == result.tv_nsec); + + now.tv_sec = 4711; + now.tv_nsec = 1267; + p = "4 hours"; + ASSERT (get_date (&result, p, &now)); + LOG (p, now, result); + ASSERT (now.tv_sec + 4 * 60 * 60 == result.tv_sec + && now.tv_nsec == result.tv_nsec); + + return 0; +} -- 2.30.2