aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorCollin Funk <collin.funk1@gmail.com>2025-07-22 20:14:35 -0700
committerCollin Funk <collin.funk1@gmail.com>2025-07-23 07:49:49 -0700
commita9cd174811e83227e8bb38e7ae8c788b34d88bbf (patch)
tree57ce84091d872c9bb061275e240fb9babbbe1772 /tests
parentinstall: with -d, use more accurate diagnostics (diff)
downloadcoreutils-a9cd174811e83227e8bb38e7ae8c788b34d88bbf.tar.gz
coreutils-a9cd174811e83227e8bb38e7ae8c788b34d88bbf.zip
tests: date: add tests for the Solar Hijri calendar
* tests/date/date-iran.sh: New file. * tests/local.mk (all_tests): Add the test.
Diffstat (limited to 'tests')
-rwxr-xr-xtests/date/date-iran.sh45
-rw-r--r--tests/local.mk1
2 files changed, 46 insertions, 0 deletions
diff --git a/tests/date/date-iran.sh b/tests/date/date-iran.sh
new file mode 100755
index 000000000..7c2d16be5
--- /dev/null
+++ b/tests/date/date-iran.sh
@@ -0,0 +1,45 @@
+#!/bin/sh
+# Verify the Solar Hijri calendar is used in the Iranian locale.
+
+# Copyright (C) 2025 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 of the License, 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, see <https://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
+print_ver_ date
+
+# Current year in the Gregorian calendar.
+current_year=$(LC_ALL=C date +%Y)
+
+export LC_ALL=fa_IR.UTF-8
+
+if test "$(locale charmap 2>/dev/null)" != UTF-8; then
+ skip_ "Iranian UTF-8 locale not available"
+fi
+
+# 03-19 and 03-22 of the same Gregorian year are in different years in the
+# Solar Hijri calendar.
+year_march_19=$(date -d $current_year-03-19 +%Y)
+year_march_22=$(date -d $current_year-03-22 +%Y)
+test $year_march_19 = $(($year_march_22 - 1)) || fail=1
+
+# The difference between the Gregorian year is 621 or 622 years.
+test $year_march_19 = $(($current_year - 622)) || fail=1
+test $year_march_22 = $(($current_year - 621)) || fail=1
+
+# Check that --iso-8601 and --rfc-3339 uses the Gregorian calendar.
+case $(date --iso-8601=hours) in $current_year-*) ;; *) fail=1 ;; esac
+case $(date --rfc-3339=date) in $current_year-*) ;; *) fail=1 ;; esac
+
+Exit $fail
diff --git a/tests/local.mk b/tests/local.mk
index 4cd1a34d2..16267a03f 100644
--- a/tests/local.mk
+++ b/tests/local.mk
@@ -309,6 +309,7 @@ all_tests = \
tests/csplit/csplit-io-err.sh \
tests/csplit/csplit-suppress-matched.pl \
tests/date/date-debug.sh \
+ tests/date/date-iran.sh \
tests/date/date-sec.sh \
tests/date/date-thailand.sh \
tests/date/date-tz.sh \