# Tests @'s date/time parsing # # Copyright (C) 2022 P. J. McDermott # # This file is part of @ # # @ 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. # # @ 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 @. If not, see . set -eu . "${TOP_SRCDIR}/tests/aux/tap-functions.sh" DATE_FMTS=' Wed 1969-12-31 1969/12/31 12-31-1969 12-31 12/31/1969 12/31 31 Dec 1969 31 Dec 31-Dec-1969 31-Dec 31/Dec/1969 31/Dec Wed 31 Dec 1969 Wed 31 Dec Wed 31-Dec-1969 Wed 31-Dec Wed 31/Dec/1969 Wed 31/Dec Wed, 31 Dec 1969 Wed, 31 Dec Wed, 31-Dec-1969 Wed, 31-Dec Wed, 31/Dec/1969 Wed, 31/Dec Dec 31, 1969 Dec 31 Dec-31-1969 Dec-31 Dec/31/1969 Dec/31 Wed Dec 31, 1969 Wed Dec 31 Wed Dec-31-1969 Wed Dec-31 Wed Dec/31/1969 Wed Dec/31 Wed, Dec 31, 1969 Wed, Dec 31 Wed, Dec-31-1969 Wed, Dec-31 Wed, Dec/31/1969 Wed, Dec/31 ' TIME_FMTS=' 7:00:01 PM 19:00:01 7:00 PM 19:00 70001 PM 190001 700 PM 1900 ' MISC_FMTS=' 1969-12-31T19:00:01 1969-12-31T19:00 19691231T190001 19691231T1900 19691231 70001 PM 19691231 190001 19691231 700 PM 19691231 1900 Wed Dec 31 19:00:01 1969 ' plan_ 704 run_test() { datetime="${1}" shift 1 got="$(TZ=EST5EDT faketime -f '1969-12-31 18:00:00' \ "${TOP_BUILDDIR}/@" -d "${datetime}" 2>&1)" || : if [ x"${got}" = x'1' ]; then ok_ -- "${datetime}" else not_ok_ -- "${datetime}" diag_ " Failed test '${datetime}'" diag_ " got: '${got}'" diag_ " expected: '1'" fi } IFS=' ' for time_fmt in ${TIME_FMTS}; do time_fmt="${time_fmt# }" [ -z "${time_fmt}" ] && continue run_test "${time_fmt}" for date_fmt in ${DATE_FMTS}; do date_fmt="${date_fmt# }" [ -z "${date_fmt}" ] && continue run_test "${date_fmt} ${time_fmt}" run_test "${time_fmt} ${date_fmt}" done done for misc_fmt in ${MISC_FMTS}; do misc_fmt="${misc_fmt# }" [ -z "${misc_fmt}" ] && continue run_test "${misc_fmt}" done