#!/bin/bash

# This file is part of util-linux.
#
# This file 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 2 of the License, or
# (at your option) any later version.
#
# This file 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.

TS_TOPDIR="${0%/*}/../.."
TS_DESC="January 1753"

. $TS_TOPDIR/functions.sh
ts_init "$*"

ts_check_test_command "$TS_CMD_CAL"

export TERM=linux

USETERM=$( ts_has_option "useterm" "$*" )
MYMONTH="1 1753"

function call_cal {
	local testname=$(echo "$2" | sed 's/-//g')

	ts_init_subtest "$testname"
	ts_log "$1"
	shift
	if [ "$USETERM" == "yes" ]; then
		$TS_CMD_CAL "$@"
	fi
	$TS_CMD_CAL "$@" >> $TS_OUTPUT

	ts_finalize_subtest
}

call_cal "Monday-based 1753 week numbers" -m3w $MYMONTH
call_cal "Sunday-based 1753 week numbers" -3w $MYMONTH

ts_finalize
