Mercurial > hg > octave-lojdl > gnulib-hg
annotate tests/test-parse-datetime.c @ 15595:328819af1c02
Support for MSVC compiler: Avoid division by a literal 0.
* lib/math.in.h (NAN): Define through a function call also on MSVC.
* m4/frexp.m4 (gl_FUNC_FREXP_WORKS): Divide by 'zero' instead of 0.0.
* m4/printf.m4 (gl_PRINTF_INFINITE, gl_PRINTF_DIRECTIVE_A,
gl_PRINTF_DIRECTIVE_F, gl_PRINTF_FLAG_ZERO): Likewise.
(gl_PRINTF_INFINITE_LONG_DOUBLE): Divide by 'zeroL' instead of 0.0L.
* tests/infinity.h: New file.
* tests/nan.h (NaNf, NaNd, NaNl): Define through a function call also
on MSVC.
* tests/test-ceilf1.c: Include infinity.h.
(main): Use Infinityf.
* tests/test-ceil1.c: Include infinity.h.
(main): Use Infinityd.
* tests/test-ceill.c: Include infinity.h.
(main): Use Infinityl.
* tests/test-dprintf-posix.c: Include infinity.h.
(test_function): Use Infinityd.
* tests/test-floorf1.c: Include infinity.h.
(main): Use Infinityf.
* tests/test-floor1.c: Include infinity.h.
(main): Use Infinityd.
* tests/test-floorl.c: Include infinity.h.
(main): Use Infinityl.
* tests/test-fprintf-posix.c: Include infinity.h.
(test_function): Use Infinityd.
* tests/test-frexp.c: Include infinity.h.
(main): Use Infinityd.
* tests/test-frexpl.c: Include infinity.h.
(main): Use Infinityl.
* tests/test-isfinite.c: Include infinity.h.
(test_isfinitef): Use Infinityf.
(test_isfinited): Use Infinityd.
(test_isfinitel): Use Infinityl.
* tests/test-isinf.c: Include infinity.h.
(test_isinff): Use Infinityf.
(test_isinfd): Use Infinityd.
(test_isinfl): Use Infinityl.
* tests/test-isnan.c: Include infinity.h.
(test_float): Use Infinityf.
(test_double): Use Infinityd.
(test_long_double): Use Infinityl.
* tests/test-isnanf.h: Include infinity.h.
(main): Use Infinityf.
* tests/test-isnand.h: Include infinity.h.
(main): Use Infinityd.
* tests/test-isnanl.h: Include infinity.h.
(main): Use Infinityl.
* tests/test-ldexpl.c: Include infinity.h.
(main): Use Infinityl.
* tests/test-printf-posix.h: Include infinity.h.
(test_function): Use Infinityd.
* tests/test-roundf1.c: Include infinity.h.
(main): Use Infinityf.
* tests/test-round1.c: Include infinity.h.
(main): Use Infinityd.
* tests/test-roundl.c: Include infinity.h.
(main): Use Infinityl.
* tests/test-signbit.c: Include infinity.h.
(test_signbitf): Use Infinityf.
(test_signbitd): Use Infinityd.
(test_signbitl): Use Infinityl.
* tests/test-snprintf-posix.h: Include infinity.h.
(test_function): Use Infinityd, Infinityl.
* tests/test-sprintf-posix.h: Include infinity.h.
(test_function): Use Infinityd, Infinityl.
* tests/test-truncf1.c: Include infinity.h.
(main): Use Infinityf.
* tests/test-trunc1.c: Include infinity.h.
(main): Use Infinityd.
* tests/test-truncl.c: Include infinity.h.
(main): Use Infinityl.
* tests/test-vasnprintf-posix.c: Include infinity.h.
(test_function): Use Infinityd, Infinityl.
* tests/test-vasprintf-posix.c: Include infinity.h.
(test_function): Use Infinityd, Infinityl.
* modules/ceilf-tests (Files): Add tests/infinity.h.
* modules/ceil-tests (Files): Likewise.
* modules/ceill-tests (Files): Likewise.
* modules/dprintf-posix-tests (Files): Likewise.
* modules/floorf-tests (Files): Likewise.
* modules/floor-tests (Files): Likewise.
* modules/floorl-tests (Files): Likewise.
* modules/fprintf-posix-tests (Files): Likewise.
* modules/frexp-tests (Files): Likewise.
* modules/frexp-nolibm-tests (Files): Likewise.
* modules/frexpl-tests (Files): Likewise.
* modules/frexpl-nolibm-tests (Files): Likewise.
* modules/isfinite-tests (Files): Likewise.
* modules/isinf-tests (Files): Likewise.
* modules/isnan-tests (Files): Likewise.
* modules/isnanf-tests (Files): Likewise.
* modules/isnanf-nolibm-tests (Files): Likewise.
* modules/isnand-tests (Files): Likewise.
* modules/isnand-nolibm-tests (Files): Likewise.
* modules/isnanl-tests (Files): Likewise.
* modules/isnanl-nolibm-tests (Files): Likewise.
* modules/ldexpl-tests (Files): Likewise.
* modules/printf-posix-tests (Files): Likewise.
* modules/roundf-tests (Files): Likewise.
* modules/round-tests (Files): Likewise.
* modules/roundl-tests (Files): Likewise.
* modules/signbit-tests (Files): Likewise.
* modules/snprintf-posix-tests (Files): Likewise.
* modules/sprintf-posix-tests (Files): Likewise.
* modules/truncf-tests (Files): Likewise.
* modules/trunc-tests (Files): Likewise.
* modules/truncl-tests (Files): Likewise.
* modules/vasnprintf-posix-tests (Files): Likewise.
* modules/vasprintf-posix-tests (Files): Likewise.
* modules/vdprintf-posix-tests (Files): Likewise.
* modules/vfprintf-posix-tests (Files): Likewise.
* modules/vprintf-posix-tests (Files): Likewise.
* modules/vsnprintf-posix-tests (Files): Likewise.
* modules/vsprintf-posix-tests (Files): Likewise.
* modules/xprintf-posix-tests (Files): Likewise.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sun, 11 Sep 2011 17:29:11 +0200 |
parents | 8e204a155dab |
children | 410c1c383d50 |
rev | line source |
---|---|
13769
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
1 /* Test of parse_datetime() function. |
14079
97fc9a21a8fb
maint: update almost all copyright ranges to include 2011
Jim Meyering <meyering@redhat.com>
parents:
13769
diff
changeset
|
2 Copyright (C) 2008-2011 Free Software Foundation, Inc. |
13769
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
3 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
4 This program is free software; you can redistribute it and/or modify |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
5 it under the terms of the GNU General Public License as published by |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
6 the Free Software Foundation; either version 3, or (at your option) |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
7 any later version. |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
8 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
9 This program is distributed in the hope that it will be useful, |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
10 but WITHOUT ANY WARRANTY; without even the implied warranty of |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
12 GNU General Public License for more details. |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
13 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
14 You should have received a copy of the GNU General Public License |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
15 along with this program; if not, write to the Free Software Foundation, |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
16 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
17 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
18 /* Written by Simon Josefsson <simon@josefsson.org>, 2008. */ |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
19 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
20 #include <config.h> |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
21 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
22 #include "parse-datetime.h" |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
23 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
24 #include <stdio.h> |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
25 #include <stdlib.h> |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
26 #include <string.h> |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
27 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
28 #include "progname.h" |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
29 #include "macros.h" |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
30 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
31 #ifdef DEBUG |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
32 #define LOG(str, now, res) \ |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
33 printf ("string `%s' diff %d %d\n", \ |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
34 str, res.tv_sec - now.tv_sec, res.tv_nsec - now.tv_nsec); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
35 #else |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
36 #define LOG(str, now, res) (void) 0 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
37 #endif |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
38 |
15543
8e204a155dab
test-parse-datetime.c: accommodate a relatively strict gcc warning
Jim Meyering <meyering@redhat.com>
parents:
15542
diff
changeset
|
39 static const char *const day_table[] = |
13769
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
40 { |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
41 "SUNDAY", |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
42 "MONDAY", |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
43 "TUESDAY", |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
44 "WEDNESDAY", |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
45 "THURSDAY", |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
46 "FRIDAY", |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
47 "SATURDAY", |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
48 NULL |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
49 }; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
50 |
15542
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
51 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
52 #if ! HAVE_TM_GMTOFF |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
53 /* Shift A right by B bits portably, by dividing A by 2**B and |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
54 truncating towards minus infinity. A and B should be free of side |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
55 effects, and B should be in the range 0 <= B <= INT_BITS - 2, where |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
56 INT_BITS is the number of useful bits in an int. GNU code can |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
57 assume that INT_BITS is at least 32. |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
58 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
59 ISO C99 says that A >> B is implementation-defined if A < 0. Some |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
60 implementations (e.g., UNICOS 9.0 on a Cray Y-MP EL) don't shift |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
61 right in the usual way when A < 0, so SHR falls back on division if |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
62 ordinary A >> B doesn't seem to be the usual signed shift. */ |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
63 #define SHR(a, b) \ |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
64 (-1 >> 1 == -1 \ |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
65 ? (a) >> (b) \ |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
66 : (a) / (1 << (b)) - ((a) % (1 << (b)) < 0)) |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
67 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
68 #define TM_YEAR_BASE 1900 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
69 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
70 /* Yield the difference between *A and *B, |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
71 measured in seconds, ignoring leap seconds. |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
72 The body of this function is taken directly from the GNU C Library; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
73 see src/strftime.c. */ |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
74 static long int |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
75 tm_diff (struct tm const *a, struct tm const *b) |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
76 { |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
77 /* Compute intervening leap days correctly even if year is negative. |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
78 Take care to avoid int overflow in leap day calculations. */ |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
79 int a4 = SHR (a->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (a->tm_year & 3); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
80 int b4 = SHR (b->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (b->tm_year & 3); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
81 int a100 = a4 / 25 - (a4 % 25 < 0); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
82 int b100 = b4 / 25 - (b4 % 25 < 0); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
83 int a400 = SHR (a100, 2); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
84 int b400 = SHR (b100, 2); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
85 int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
86 long int ayear = a->tm_year; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
87 long int years = ayear - b->tm_year; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
88 long int days = (365 * years + intervening_leap_days |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
89 + (a->tm_yday - b->tm_yday)); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
90 return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour)) |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
91 + (a->tm_min - b->tm_min)) |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
92 + (a->tm_sec - b->tm_sec)); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
93 } |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
94 #endif /* ! HAVE_TM_GMTOFF */ |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
95 |
15543
8e204a155dab
test-parse-datetime.c: accommodate a relatively strict gcc warning
Jim Meyering <meyering@redhat.com>
parents:
15542
diff
changeset
|
96 static long |
8e204a155dab
test-parse-datetime.c: accommodate a relatively strict gcc warning
Jim Meyering <meyering@redhat.com>
parents:
15542
diff
changeset
|
97 gmt_offset () |
15542
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
98 { |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
99 time_t now; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
100 long gmtoff; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
101 |
15543
8e204a155dab
test-parse-datetime.c: accommodate a relatively strict gcc warning
Jim Meyering <meyering@redhat.com>
parents:
15542
diff
changeset
|
102 time (&now); |
15542
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
103 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
104 #if !HAVE_TM_GMTOFF |
15543
8e204a155dab
test-parse-datetime.c: accommodate a relatively strict gcc warning
Jim Meyering <meyering@redhat.com>
parents:
15542
diff
changeset
|
105 struct tm tm_local = *localtime (&now); |
8e204a155dab
test-parse-datetime.c: accommodate a relatively strict gcc warning
Jim Meyering <meyering@redhat.com>
parents:
15542
diff
changeset
|
106 struct tm tm_gmt = *gmtime (&now); |
15542
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
107 |
15543
8e204a155dab
test-parse-datetime.c: accommodate a relatively strict gcc warning
Jim Meyering <meyering@redhat.com>
parents:
15542
diff
changeset
|
108 gmtoff = tm_diff (&tm_local, &tm_gmt); |
15542
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
109 #else |
15543
8e204a155dab
test-parse-datetime.c: accommodate a relatively strict gcc warning
Jim Meyering <meyering@redhat.com>
parents:
15542
diff
changeset
|
110 gmtoff = localtime (&now)->tm_gmtoff; |
15542
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
111 #endif |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
112 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
113 return gmtoff; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
114 } |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
115 |
13769
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
116 int |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
117 main (int argc _GL_UNUSED, char **argv) |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
118 { |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
119 struct timespec result; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
120 struct timespec result2; |
15542
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
121 struct timespec expected; |
13769
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
122 struct timespec now; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
123 const char *p; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
124 int i; |
15542
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
125 long gmtoff; |
13769
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
126 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
127 set_program_name (argv[0]); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
128 |
15543
8e204a155dab
test-parse-datetime.c: accommodate a relatively strict gcc warning
Jim Meyering <meyering@redhat.com>
parents:
15542
diff
changeset
|
129 gmtoff = gmt_offset (); |
15542
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
130 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
131 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
132 /* ISO 8601 extended date and time of day representation, |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
133 'T' separator, local time zone */ |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
134 p = "2011-05-01T11:55:18"; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
135 expected.tv_sec = 1304250918 - gmtoff; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
136 expected.tv_nsec = 0; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
137 ASSERT (parse_datetime (&result, p, 0)); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
138 LOG (p, expected, result); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
139 ASSERT (expected.tv_sec == result.tv_sec |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
140 && expected.tv_nsec == result.tv_nsec); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
141 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
142 /* ISO 8601 extended date and time of day representation, |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
143 ' ' separator, local time zone */ |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
144 p = "2011-05-01 11:55:18"; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
145 expected.tv_sec = 1304250918 - gmtoff; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
146 expected.tv_nsec = 0; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
147 ASSERT (parse_datetime (&result, p, 0)); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
148 LOG (p, expected, result); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
149 ASSERT (expected.tv_sec == result.tv_sec |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
150 && expected.tv_nsec == result.tv_nsec); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
151 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
152 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
153 /* ISO 8601, extended date and time of day representation, |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
154 'T' separator, UTC */ |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
155 p = "2011-05-01T11:55:18Z"; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
156 expected.tv_sec = 1304250918; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
157 expected.tv_nsec = 0; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
158 ASSERT (parse_datetime (&result, p, 0)); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
159 LOG (p, expected, result); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
160 ASSERT (expected.tv_sec == result.tv_sec |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
161 && expected.tv_nsec == result.tv_nsec); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
162 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
163 /* ISO 8601, extended date and time of day representation, |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
164 ' ' separator, UTC */ |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
165 p = "2011-05-01 11:55:18Z"; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
166 expected.tv_sec = 1304250918; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
167 expected.tv_nsec = 0; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
168 ASSERT (parse_datetime (&result, p, 0)); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
169 LOG (p, expected, result); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
170 ASSERT (expected.tv_sec == result.tv_sec |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
171 && expected.tv_nsec == result.tv_nsec); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
172 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
173 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
174 /* ISO 8601 extended date and time of day representation, |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
175 'T' separator, w/UTC offset */ |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
176 p = "2011-05-01T11:55:18-07:00"; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
177 expected.tv_sec = 1304276118; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
178 expected.tv_nsec = 0; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
179 ASSERT (parse_datetime (&result, p, 0)); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
180 LOG (p, expected, result); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
181 ASSERT (expected.tv_sec == result.tv_sec |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
182 && expected.tv_nsec == result.tv_nsec); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
183 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
184 /* ISO 8601 extended date and time of day representation, |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
185 ' ' separator, w/UTC offset */ |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
186 p = "2011-05-01 11:55:18-07:00"; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
187 expected.tv_sec = 1304276118; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
188 expected.tv_nsec = 0; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
189 ASSERT (parse_datetime (&result, p, 0)); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
190 LOG (p, expected, result); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
191 ASSERT (expected.tv_sec == result.tv_sec |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
192 && expected.tv_nsec == result.tv_nsec); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
193 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
194 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
195 /* ISO 8601 extended date and time of day representation, |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
196 'T' separator, w/hour only UTC offset */ |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
197 p = "2011-05-01T11:55:18-07"; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
198 expected.tv_sec = 1304276118; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
199 expected.tv_nsec = 0; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
200 ASSERT (parse_datetime (&result, p, 0)); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
201 LOG (p, expected, result); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
202 ASSERT (expected.tv_sec == result.tv_sec |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
203 && expected.tv_nsec == result.tv_nsec); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
204 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
205 /* ISO 8601 extended date and time of day representation, |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
206 ' ' separator, w/hour only UTC offset */ |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
207 p = "2011-05-01 11:55:18-07"; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
208 expected.tv_sec = 1304276118; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
209 expected.tv_nsec = 0; |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
210 ASSERT (parse_datetime (&result, p, 0)); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
211 LOG (p, expected, result); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
212 ASSERT (expected.tv_sec == result.tv_sec |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
213 && expected.tv_nsec == result.tv_nsec); |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
214 |
9ad43fa113ac
parse-datetime: accept ISO 8601 date and time rep with "T" separator
J.T. Conklin <jtc@acorntoolworks.com>
parents:
14079
diff
changeset
|
215 |
13769
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
216 now.tv_sec = 4711; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
217 now.tv_nsec = 1267; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
218 p = "now"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
219 ASSERT (parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
220 LOG (p, now, result); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
221 ASSERT (now.tv_sec == result.tv_sec && now.tv_nsec == result.tv_nsec); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
222 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
223 now.tv_sec = 4711; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
224 now.tv_nsec = 1267; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
225 p = "tomorrow"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
226 ASSERT (parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
227 LOG (p, now, result); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
228 ASSERT (now.tv_sec + 24 * 60 * 60 == result.tv_sec |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
229 && now.tv_nsec == result.tv_nsec); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
230 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
231 now.tv_sec = 4711; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
232 now.tv_nsec = 1267; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
233 p = "yesterday"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
234 ASSERT (parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
235 LOG (p, now, result); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
236 ASSERT (now.tv_sec - 24 * 60 * 60 == result.tv_sec |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
237 && now.tv_nsec == result.tv_nsec); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
238 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
239 now.tv_sec = 4711; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
240 now.tv_nsec = 1267; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
241 p = "4 hours"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
242 ASSERT (parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
243 LOG (p, now, result); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
244 ASSERT (now.tv_sec + 4 * 60 * 60 == result.tv_sec |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
245 && now.tv_nsec == result.tv_nsec); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
246 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
247 /* test if timezone is not being ignored for day offset */ |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
248 now.tv_sec = 4711; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
249 now.tv_nsec = 1267; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
250 p = "UTC+400 +24 hours"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
251 ASSERT (parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
252 LOG (p, now, result); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
253 p = "UTC+400 +1 day"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
254 ASSERT (parse_datetime (&result2, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
255 LOG (p, now, result2); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
256 ASSERT (result.tv_sec == result2.tv_sec |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
257 && result.tv_nsec == result2.tv_nsec); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
258 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
259 /* test if several time zones formats are handled same way */ |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
260 now.tv_sec = 4711; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
261 now.tv_nsec = 1267; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
262 p = "UTC+14:00"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
263 ASSERT (parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
264 LOG (p, now, result); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
265 p = "UTC+14"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
266 ASSERT (parse_datetime (&result2, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
267 LOG (p, now, result2); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
268 ASSERT (result.tv_sec == result2.tv_sec |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
269 && result.tv_nsec == result2.tv_nsec); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
270 p = "UTC+1400"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
271 ASSERT (parse_datetime (&result2, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
272 LOG (p, now, result2); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
273 ASSERT (result.tv_sec == result2.tv_sec |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
274 && result.tv_nsec == result2.tv_nsec); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
275 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
276 now.tv_sec = 4711; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
277 now.tv_nsec = 1267; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
278 p = "UTC-14:00"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
279 ASSERT (parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
280 LOG (p, now, result); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
281 p = "UTC-14"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
282 ASSERT (parse_datetime (&result2, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
283 LOG (p, now, result2); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
284 ASSERT (result.tv_sec == result2.tv_sec |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
285 && result.tv_nsec == result2.tv_nsec); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
286 p = "UTC-1400"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
287 ASSERT (parse_datetime (&result2, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
288 LOG (p, now, result2); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
289 ASSERT (result.tv_sec == result2.tv_sec |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
290 && result.tv_nsec == result2.tv_nsec); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
291 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
292 now.tv_sec = 4711; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
293 now.tv_nsec = 1267; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
294 p = "UTC+0:15"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
295 ASSERT (parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
296 LOG (p, now, result); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
297 p = "UTC+0015"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
298 ASSERT (parse_datetime (&result2, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
299 LOG (p, now, result2); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
300 ASSERT (result.tv_sec == result2.tv_sec |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
301 && result.tv_nsec == result2.tv_nsec); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
302 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
303 now.tv_sec = 4711; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
304 now.tv_nsec = 1267; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
305 p = "UTC-1:30"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
306 ASSERT (parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
307 LOG (p, now, result); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
308 p = "UTC-130"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
309 ASSERT (parse_datetime (&result2, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
310 LOG (p, now, result2); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
311 ASSERT (result.tv_sec == result2.tv_sec |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
312 && result.tv_nsec == result2.tv_nsec); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
313 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
314 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
315 /* TZ out of range should cause parse_datetime failure */ |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
316 now.tv_sec = 4711; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
317 now.tv_nsec = 1267; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
318 p = "UTC+25:00"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
319 ASSERT (!parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
320 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
321 /* Check for several invalid countable dayshifts */ |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
322 now.tv_sec = 4711; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
323 now.tv_nsec = 1267; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
324 p = "UTC+4:00 +40 yesterday"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
325 ASSERT (!parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
326 p = "UTC+4:00 next yesterday"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
327 ASSERT (!parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
328 p = "UTC+4:00 tomorrow ago"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
329 ASSERT (!parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
330 p = "UTC+4:00 40 now ago"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
331 ASSERT (!parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
332 p = "UTC+4:00 last tomorrow"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
333 ASSERT (!parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
334 p = "UTC+4:00 -4 today"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
335 ASSERT (!parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
336 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
337 /* And check correct usage of dayshifts */ |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
338 now.tv_sec = 4711; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
339 now.tv_nsec = 1267; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
340 p = "UTC+400 tomorrow"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
341 ASSERT (parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
342 LOG (p, now, result); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
343 p = "UTC+400 +1 day"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
344 ASSERT (parse_datetime (&result2, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
345 LOG (p, now, result2); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
346 ASSERT (result.tv_sec == result2.tv_sec |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
347 && result.tv_nsec == result2.tv_nsec); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
348 now.tv_sec = 4711; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
349 now.tv_nsec = 1267; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
350 p = "UTC+400 yesterday"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
351 ASSERT (parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
352 LOG (p, now, result); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
353 p = "UTC+400 1 day ago"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
354 ASSERT (parse_datetime (&result2, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
355 LOG (p, now, result2); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
356 ASSERT (result.tv_sec == result2.tv_sec |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
357 && result.tv_nsec == result2.tv_nsec); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
358 now.tv_sec = 4711; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
359 now.tv_nsec = 1267; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
360 p = "UTC+400 now"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
361 ASSERT (parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
362 LOG (p, now, result); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
363 p = "UTC+400 +0 minutes"; /* silly, but simple "UTC+400" is different*/ |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
364 ASSERT (parse_datetime (&result2, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
365 LOG (p, now, result2); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
366 ASSERT (result.tv_sec == result2.tv_sec |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
367 && result.tv_nsec == result2.tv_nsec); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
368 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
369 /* Check that some "next Monday", "last Wednesday", etc. are correct. */ |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
370 setenv ("TZ", "UTC0", 1); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
371 for (i = 0; day_table[i]; i++) |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
372 { |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
373 unsigned int thur2 = 7 * 24 * 3600; /* 2nd thursday */ |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
374 char tmp[32]; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
375 sprintf (tmp, "NEXT %s", day_table[i]); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
376 now.tv_sec = thur2 + 4711; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
377 now.tv_nsec = 1267; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
378 ASSERT (parse_datetime (&result, tmp, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
379 LOG (tmp, now, result); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
380 ASSERT (result.tv_nsec == 0); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
381 ASSERT (result.tv_sec == thur2 + (i == 4 ? 7 : (i + 3) % 7) * 24 * 3600); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
382 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
383 sprintf (tmp, "LAST %s", day_table[i]); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
384 now.tv_sec = thur2 + 4711; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
385 now.tv_nsec = 1267; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
386 ASSERT (parse_datetime (&result, tmp, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
387 LOG (tmp, now, result); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
388 ASSERT (result.tv_nsec == 0); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
389 ASSERT (result.tv_sec == thur2 + ((i + 3) % 7 - 7) * 24 * 3600); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
390 } |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
391 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
392 p = "THURSDAY UTC+00"; /* The epoch was on Thursday. */ |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
393 now.tv_sec = 0; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
394 now.tv_nsec = 0; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
395 ASSERT (parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
396 LOG (p, now, result); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
397 ASSERT (result.tv_sec == now.tv_sec |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
398 && result.tv_nsec == now.tv_nsec); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
399 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
400 p = "FRIDAY UTC+00"; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
401 now.tv_sec = 0; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
402 now.tv_nsec = 0; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
403 ASSERT (parse_datetime (&result, p, &now)); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
404 LOG (p, now, result); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
405 ASSERT (result.tv_sec == 24 * 3600 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
406 && result.tv_nsec == now.tv_nsec); |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
407 |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
408 return 0; |
896628c568fa
parse-datetime: better name than get_date
Eric Blake <eblake@redhat.com>
parents:
diff
changeset
|
409 } |