#!perl -w
BEGIN { eval { require bytes; }; }
use strict;
no strict "vars";
BEGIN { $Date::Calc::XS_DISABLE = $Date::Calc::XS_DISABLE = 1; }
eval { require Bit::Vector; };
if ($@)
{
print "1..0\n";
exit 0;
}
require Date::Calendar::Year;
# ======================================================================
# $year = Date::Calendar::Year->new(YEAR,PROFILE);
# ($date,$rest,$sign) = $year->_move_forward_(INDEX,OFFSET,SIGN);
# ======================================================================
print "1..166\n";
$n = 1;
$year = Date::Calendar::Year->new(1995,{});
$full = $year->vec_full();
$yday = 0;
foreach $bit (1,0,0,0,0,0,1,1,0,0,0,0,0,1,1,0)
{
if ($full->bit_test($yday++) == $bit)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
}
$year = Date::Calendar::Year->new(1996,{});
$full = $year->vec_full();
$yday = 0;
foreach $bit (0,0,0,0,0,1,1,0,0,0,0,0,1,1,0)
{
if ($full->bit_test($yday++) == $bit)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
}
$year = Date::Calendar::Year->new(1999,{});
$full = $year->vec_full();
$yday = 0;
foreach $bit (0,1,1,0,0,0,0,0,1,1,0)
{
if ($full->bit_test($yday++) == $bit)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
}
##################################################
$year = Date::Calendar::Year->new(1995,{},0,1,3,5);
$full = $year->vec_full();
$yday = 0;
foreach $bit (0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1)
{
if ($full->bit_test($yday++) == $bit)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
}
$year = Date::Calendar::Year->new(1996,{},1,2,4);
$full = $year->vec_full();
$yday = 0;
foreach $bit (0,1,0,1,0,0,0,0,1,0,1,0,0,0,0)
{
if ($full->bit_test($yday++) == $bit)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
}
$year = Date::Calendar::Year->new(1999,{},2,1,2,3,4,5);
$full = $year->vec_full();
$yday = 0;
foreach $bit (1,0,0,1,1,1,1,1,0,0,1)
{
if ($full->bit_test($yday++) == $bit)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
}
##################################################
$year = Date::Calendar::Year->new(2000,{});
$days = $year->val_days();
$last = $days - 1;
#$work = $year->vec_work();
$full = $year->vec_full();
$half = $year->vec_half();
$yday = 0;
foreach $bit (1,1,0,0,0,0,0,1,1,0)
{
if ($full->bit_test($yday++) == $bit)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
}
$full->Fill();
$full->Bit_Off($last);
$full->Bit_Off(0);
$half->Bit_On($last);
$half->Bit_On(0);
eval
{
($date,$rest,$sign) = $year->_move_forward_(183,0.5,+1);
};
unless ($@)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($date == [2001,1,1])
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($rest == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($sign == 1)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
eval
{
($date,$rest,$sign) = $year->_move_forward_(182,-0.5,-1);
};
unless ($@)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($date == [1999,12,31])
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($rest == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($sign == -1)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
$half->Bit_Off($last);
$half->Bit_Off(0);
eval
{
($date,$rest,$sign) = $year->_move_forward_(183,0.5,+1);
};
unless ($@)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($date == [2000,12,31])
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($rest == 0.5)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($sign == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
eval
{
($date,$rest,$sign) = $year->_move_forward_(182,-0.5,-1);
};
unless ($@)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($date == [2000,1,1])
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($rest == -0.5)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($sign == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
eval
{
($date,$rest,$sign) = $year->_move_forward_(183,1.0,+1);
};
unless ($@)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($date == [2001,1,1])
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($rest == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($sign == 1)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
eval
{
($date,$rest,$sign) = $year->_move_forward_(182,-1.0,-1);
};
unless ($@)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($date == [1999,12,31])
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($rest == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($sign == -1)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
$full->Bit_On($last);
$full->Bit_On(0);
eval
{
($date,$rest,$sign) = $year->_move_forward_(183,1.0,+1);
};
unless ($@)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($date == [2001,1,1])
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($rest == 1)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($sign == 1)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
eval
{
($date,$rest,$sign) = $year->_move_forward_(182,-1.0,-1);
};
unless ($@)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($date == [1999,12,31])
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($rest == -1)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($sign == -1)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
$full->Bit_Off($last);
$full->Bit_Off($last-1);
$full->Bit_Off(0);
$full->Bit_Off(1);
$half->Bit_On($last-1);
$half->Bit_On(1);
eval
{
($date,$rest,$sign) = $year->_move_forward_(183,0.5,+1);
};
unless ($@)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($date == [2000,12,31])
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($rest == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($sign == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
eval
{
($date,$rest,$sign) = $year->_move_forward_(182,-0.5,-1);
};
unless ($@)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($date == [2000,1,1])
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($rest == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($sign == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
eval
{
($date,$rest,$sign) = $year->_move_forward_(183,1.0,+1);
};
unless ($@)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($date == [2000,12,31])
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($rest == 0.5)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($sign == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
eval
{
($date,$rest,$sign) = $year->_move_forward_(182,-1.0,-1);
};
unless ($@)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($date == [2000,1,1])
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($rest == -0.5)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($sign == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
$full->Bit_Off($last-9);
$full->Bit_Off(9);
$half->Bit_On($last-9);
$half->Bit_On(9);
eval
{
($date,$rest,$sign) = $year->_move_forward_(183,0.5,+1);
};
unless ($@)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($date == [2000,12,30])
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($rest == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($sign == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
eval
{
($date,$rest,$sign) = $year->_move_forward_(182,-0.5,-1);
};
unless ($@)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($date == [2000,1,2])
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($rest == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($sign == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
eval
{
($date,$rest,$sign) = $year->_move_forward_(183,1.0,+1);
};
unless ($@)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($date == [2000,12,31])
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($rest == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($sign == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
eval
{
($date,$rest,$sign) = $year->_move_forward_(182,-1.0,-1);
};
unless ($@)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($date == [2000,1,1])
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($rest == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($sign == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
eval
{
($date,$rest,$sign) = $year->_move_forward_(183,0.0,+1);
};
unless ($@)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($date == [2000,12,22])
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($rest == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($sign == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
eval
{
($date,$rest,$sign) = $year->_move_forward_(182,0.0,-1);
};
unless ($@)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($date == [2000,1,10])
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($rest == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
if ($sign == 0)
{print "ok $n\n";} else {print "not ok $n\n";}
$n++;
__END__