summaryrefslogtreecommitdiffstats
path: root/tests/parse.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/parse.sh')
-rwxr-xr-xtests/parse.sh73
1 files changed, 73 insertions, 0 deletions
diff --git a/tests/parse.sh b/tests/parse.sh
new file mode 100755
index 0000000..1150f28
--- /dev/null
+++ b/tests/parse.sh
@@ -0,0 +1,73 @@
+# 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 <http://www.gnu.org/licenses/>.
+
+set -eu
+
+. "${TOP_SRCDIR}/tests/aux/tap-functions.sh"
+
+fmts="$(TZ=UTC0 "${TOP_BUILDDIR}/@" -d '1970-01-01 00:00:00' -F)"
+time_fmts="$(printf '%s\n' "${fmts}" | \
+ sed -n '/^Time formats:$/,/^Date formats:$/s/^ \* //p')"
+date_fmts="$(printf '%s\n' "${fmts}" | \
+ sed -n '/^Date formats:$/,/^Additional formats:$/s/^ \* //p')"
+misc_fmts="$(printf '%s\n' "${fmts}" | \
+ sed -n '/^Additional formats:$/,$s/^ \* //p')"
+
+plan_ $((\
+ $(printf '%s\n' "${time_fmts}" | wc -l) + \
+ $(printf '%s\n' "${time_fmts}" | wc -l) * \
+ $(printf '%s\n' "${date_fmts}" | wc -l) * \
+ 2 + \
+ $(printf '%s\n' "${misc_fmts}" | wc -l) \
+ ))
+
+IFS='
+'
+
+for fmt in $(printf '%s\n' "${fmts}"); do
+ diag_ "${fmt}"
+done
+
+run_test()
+{
+ datetime="${1}"
+ shift 1
+
+ got="$(TZ=UTC0 "${TOP_BUILDDIR}/@" -d '1969-12-31 23:59:30' \
+ "${datetime}" 2>&1)" || :
+ if [ x"${got}" = x'0' ]; then
+ ok_ -- "${datetime}"
+ else
+ not_ok_ -- "${datetime}"
+ diag_ " Failed test '${datetime}'"
+ diag_ " got: '${got}'"
+ diag_ " expected: '0'"
+ fi
+}
+
+for time_fmt in ${time_fmts}; do
+ run_test "${time_fmt}"
+ for date_fmt in ${date_fmts}; do
+ run_test "${date_fmt} ${time_fmt}"
+ run_test "${time_fmt} ${date_fmt}"
+ done
+done
+for misc_fmt in ${misc_fmts}; do
+ run_test "${misc_fmt}"
+done