#!/bin/bash

#
# Copyright (C) 2007-2018 Karel Zak <kzak@redhat.com>
#
# 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="year"

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

ts_check_test_command "$TS_CMD_CAL"

export TERM=linux

USETERM=$( ts_has_option "useterm" "$*" )
MYTIME="29 11 2006"

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 "Gregorian - Monday-based week" -ym $MYTIME
call_cal "Gregorian - Sunday-based week" -ys $MYTIME
call_cal "Julian - Monday-based week" -ymj $MYTIME
call_cal "Julian - Sunday-based week" -ysj $MYTIME
call_cal "Gregorian - Monday-based week with week numbers" -ymw $MYTIME
call_cal "Gregorian - Sunday-based week with week numbers" -ysw $MYTIME
call_cal "Julian - Monday-based week with week numbers" -ymjw $MYTIME
call_cal "Julian - Sunday-based week with week numbers" -ysjw $MYTIME

ts_finalize

