# HG changeset patch # User Simon Josefsson # Date 1214916929 -7200 # Node ID 6ab1c382f1a07ae5ff54206af9d2ed3faccc61f3 # Parent 66f4295bd26dc3fa79ab396becbb2b838f084c8b Add self-test for getdate module. * modules/getdate-tests: New file. * tests/test-getdate.c: New file. diff -r 66f4295bd26d -r 6ab1c382f1a0 ChangeLog --- a/ChangeLog Mon Jun 30 01:44:56 2008 +0200 +++ b/ChangeLog Tue Jul 01 14:55:29 2008 +0200 @@ -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 -r 66f4295bd26d -r 6ab1c382f1a0 modules/getdate-tests --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/modules/getdate-tests Tue Jul 01 14:55:29 2008 +0200 @@ -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 -r 66f4295bd26d -r 6ab1c382f1a0 tests/test-getdate.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-getdate.c Tue Jul 01 14:55:29 2008 +0200 @@ -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; +}