#!/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="color with week numbers"

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

ts_check_test_command "$TS_CMD_CAL"

has_ncurses=$( ts_has_ncurses_support )
if [ "$has_ncurses" != "yes" ]; then
	ts_skip "without-ncurses"
fi

# --color output depends on terminal type
export TERM=linux

USETERM=$( ts_has_option "useterm" "$*" )

[ "$USETERM" == "yes" ] && TS_VERBOSE="yes"
ts_log ""

ts_log "First day with week numbers"
if [ "$USETERM" == "yes" ]; then
	$TS_CMD_CAL -w --color=always 1 1 1
fi
$TS_CMD_CAL -w --color=always 1 1 1 >> $TS_OUTPUT

ts_log "Reformation corner cases 1 with week numbers"
if [ "$USETERM" == "yes" ]; then
	$TS_CMD_CAL -w --color=always 2 9 1752
fi
$TS_CMD_CAL -w --color=always 2 9 1752 >> $TS_OUTPUT

ts_log "Reformation corner cases 2 with week numbers"
if [ "$USETERM" == "yes" ]; then
	$TS_CMD_CAL -w --color=always 3 9 1752
fi
$TS_CMD_CAL -w --color=always 3 9 1752 >> $TS_OUTPUT

ts_log "Reformation corner cases 3 with week numbers"
if [ "$USETERM" == "yes" ]; then
	$TS_CMD_CAL -w --color=always 13 9 1752
fi
$TS_CMD_CAL -w --color=always 13 9 1752 >> $TS_OUTPUT

ts_log "Reformation corner cases 4 with week numbers"
if [ "$USETERM" == "yes" ]; then
	$TS_CMD_CAL -w --color=always 14 9 1752
fi
$TS_CMD_CAL -w --color=always 14 9 1752 >> $TS_OUTPUT

ts_log "Last day with week numbers"
if [ "$USETERM" == "yes" ]; then
	$TS_CMD_CAL -w --color=always 31 12 9999
fi
$TS_CMD_CAL -w --color=always -3 31 12 9999 >> $TS_OUTPUT


ts_finalize

