#!perl -w
BEGIN { eval { require bytes; }; }
use strict;
no strict "vars";
use Date::Pcalc::Object qw(:all);
# ======================================================================
# (Miscellaneous)
# ======================================================================
print "1..66\n";
$n = 1;
Date::Pcalc->normalized_mode(1);
Date::Pcalc->date_format(1);
Date::Pcalc->delta_format(1);
$date1 = Date::Pcalc->new([1999,12,6]);
$date2 = Date::Pcalc->new([2000,6,24]);
$delta = $date2 - $date1;
if ("[$delta]" eq "[+0 +0 +201]")
{print "ok $n\n";} else {print "not ok $n ($delta)\n";} # 01
$n++;
if (abs($delta) == 201)
{print "ok $n\n";} else {print "not ok $n\n";} # 02
$n++;
$delta = $date1 - $date2;
if ("[$delta]" eq "[+0 +0 -201]")
{print "ok $n\n";} else {print "not ok $n ($delta)\n";} # 03
$n++;
if (abs($delta) == -201)
{print "ok $n\n";} else {print "not ok $n\n";} # 04
$n++;
Date::Pcalc->accurate_mode(0);
$delta = $date2 - $date1;
if ("[$delta]" eq "[+0 +6 +18]")
{print "ok $n\n";} else {print "not ok $n ($delta)\n";} # 05
$n++;
if (abs($delta) == 6 * 31 + 18)
{print "ok $n\n";} else {print "not ok $n\n";} # 06
$n++;
$delta = $date1 - $date2;
if ("[$delta]" eq "[+0 -6 -18]")
{print "ok $n\n";} else {print "not ok $n ($delta)\n";} # 07
$n++;
if (abs($delta) == -(6 * 31 + 18))
{print "ok $n\n";} else {print "not ok $n\n";} # 08
$n++;
$date1 = Date::Pcalc->new([2000,1,1]);
$date2 = Date::Pcalc->new([2000,3,1]);
Date::Pcalc->accurate_mode(1);
$delta1 = $date1 - $date2;
if ("[$delta1]" eq "[+0 +0 -60]")
{print "ok $n\n";} else {print "not ok $n ($delta1)\n";} # 09
$n++;
if (abs($delta1) == -60)
{print "ok $n\n";} else {print "not ok $n\n";} # 10
$n++;
$delta1 = $date2 - $date1;
if ("[$delta1]" eq "[+0 +0 +60]")
{print "ok $n\n";} else {print "not ok $n ($delta1)\n";} # 11
$n++;
if (abs($delta1) == 60)
{print "ok $n\n";} else {print "not ok $n\n";} # 12
$n++;
Date::Pcalc->accurate_mode(0);
$delta2 = $date1 - $date2;
if ("[$delta2]" eq "[+0 -2 +0]")
{print "ok $n\n";} else {print "not ok $n ($delta2)\n";} # 13
$n++;
if (abs($delta2) == -62)
{print "ok $n\n";} else {print "not ok $n\n";} # 14
$n++;
$delta2 = $date2 - $date1;
if ("[$delta2]" eq "[+0 +2 +0]")
{print "ok $n\n";} else {print "not ok $n ($delta2)\n";} # 15
$n++;
if (abs($delta2) == 62)
{print "ok $n\n";} else {print "not ok $n\n";} # 16
$n++;
$temp1 = $delta1 + [2000,4,1];
$temp2 = $delta2 + [2000,4,1];
if ("[$temp1]" eq "[31-May-2000]")
{print "ok $n\n";} else {print "not ok $n ($temp1)\n";} # 17
$n++;
if ("[$temp2]" eq "[01-Jun-2000]")
{print "ok $n\n";} else {print "not ok $n ($temp2)\n";} # 18
$n++;
$temp1 = $delta1 + [1999,1,1];
$temp2 = $delta2 + [1999,1,1];
if ("[$temp1]" eq "[02-Mar-1999]")
{print "ok $n\n";} else {print "not ok $n ($temp1)\n";} # 19
$n++;
if ("[$temp2]" eq "[01-Mar-1999]")
{print "ok $n\n";} else {print "not ok $n ($temp2)\n";} # 20
$n++;
$temp1 = $delta1 + [2000,12,29];
$temp2 = $delta2 + [2000,12,29];
if ("[$temp1]" eq "[27-Feb-2001]")
{print "ok $n\n";} else {print "not ok $n ($temp1)\n";} # 21
$n++;
if ("[$temp2]" eq "[28-Feb-2001]")
{print "ok $n\n";} else {print "not ok $n ($temp2)\n";} # 22
$n++;
if ($date1->number(0) == 20000101)
{print "ok $n\n";} else {print "not ok $n\n";} # 23
$n++;
if ($date2->number(0) == 20000301)
{print "ok $n\n";} else {print "not ok $n\n";} # 24
$n++;
if ($temp1->number(0) == 20010227)
{print "ok $n\n";} else {print "not ok $n\n";} # 25
$n++;
if ($temp2->number(0) == 20010228)
{print "ok $n\n";} else {print "not ok $n\n";} # 26
$n++;
$date1--;
if ("[$date1]" eq "[31-Dec-1999]")
{print "ok $n\n";} else {print "not ok $n ($date1)\n";} # 27
$n++;
$date2--;
if ("[$date2]" eq "[29-Feb-2000]")
{print "ok $n\n";} else {print "not ok $n ($date2)\n";} # 28
$n++;
$date1++;
if ("[$date1]" eq "[01-Jan-2000]")
{print "ok $n\n";} else {print "not ok $n ($date1)\n";} # 29
$n++;
$date2++;
if ("[$date2]" eq "[01-Mar-2000]")
{print "ok $n\n";} else {print "not ok $n ($date2)\n";} # 30
$n++;
$date1 -= 5;
if ("[$date1]" eq "[27-Dec-1999]")
{print "ok $n\n";} else {print "not ok $n ($date1)\n";} # 31
$n++;
$date2 -= 5;
if ("[$date2]" eq "[25-Feb-2000]")
{print "ok $n\n";} else {print "not ok $n ($date2)\n";} # 32
$n++;
$date1 += 15;
if ("[$date1]" eq "[11-Jan-2000]")
{print "ok $n\n";} else {print "not ok $n ($date1)\n";} # 33
$n++;
$date2 += 15;
if ("[$date2]" eq "[11-Mar-2000]")
{print "ok $n\n";} else {print "not ok $n ($date2)\n";} # 34
$n++;
$date1 += 366;
if ("[$date1]" eq "[11-Jan-2001]")
{print "ok $n\n";} else {print "not ok $n ($date1)\n";} # 35
$n++;
$date2 += 365;
if ("[$date2]" eq "[11-Mar-2001]")
{print "ok $n\n";} else {print "not ok $n ($date2)\n";} # 36
$n++;
$temp1 += [-1,0,+2];
if ("[$temp1]" eq "[29-Feb-2000]")
{print "ok $n\n";} else {print "not ok $n ($temp1)\n";} # 37
$n++;
$temp2 += [-1,0,-1];
if ("[$temp2]" eq "[27-Feb-2000]")
{print "ok $n\n";} else {print "not ok $n ($temp2)\n";} # 38
$n++;
eval
{
$temp1 -= [1,0,0];
};
if ($@ =~ /\bDate::Pcalc::_minus_equal_\(\): invalid date\/time\b/)
{print "ok $n\n";} else {print "not ok $n\n";} # 39
$n++;
$temp2 -= [1,1,0,0];
if ("[$temp2]" eq "[27-Feb-1999]")
{print "ok $n\n";} else {print "not ok $n ($temp2)\n";} # 40
$n++;
$temp1 = Date::Pcalc->new([2000,2,29]);
$temp2 = Date::Pcalc->new([2000,2,29]);
Date::Pcalc->accurate_mode(1);
$temp1 -= [1,1,0,0];
if ("[$temp1]" eq "[01-Mar-1999]")
{print "ok $n\n";} else {print "not ok $n ($temp1)\n";} # 41
$n++;
Date::Pcalc->accurate_mode(0);
$temp2 -= [1,1,0,0];
if ("[$temp2]" eq "[28-Feb-1999]")
{print "ok $n\n";} else {print "not ok $n ($temp2)\n";} # 42
$n++;
$date1 = Date::Pcalc->new([2000,4,30]);
$date2 = Date::Pcalc->new([2001,5,1]);
$delta1 = Date::Pcalc->new([1,1,1,-29]);
$delta2 = Date::Pcalc->new([1,1,0,1]);
if (abs($delta1) == 374)
{print "ok $n\n";} else {print "not ok $n\n";} # 43
$n++;
if (abs($delta2) == 373)
{print "ok $n\n";} else {print "not ok $n\n";} # 44
$n++;
Date::Pcalc->accurate_mode(1);
$delta = $date2 - $date1;
if ("[$delta]" eq "[+0 +0 +366]")
{print "ok $n\n";} else {print "not ok $n ($delta)\n";} # 45
$n++;
if (abs($delta) == 366)
{print "ok $n\n";} else {print "not ok $n\n";} # 46
$n++;
Date::Pcalc->accurate_mode(0);
$delta = $date2 - $date1;
if ("[$delta]" eq "[+1 +0 +1]")
{print "ok $n\n";} else {print "not ok $n ($delta)\n";} # 47
$n++;
if (abs($delta) == 373)
{print "ok $n\n";} else {print "not ok $n\n";} # 48
$n++;
$temp1 = $date1 + $delta1;
$temp2 = ($date1 += $delta2);
if ("[$temp1]" eq "[01-May-2001]")
{print "ok $n\n";} else {print "not ok $n ($temp1)\n";} # 49
$n++;
if ($temp1 == $date2)
{print "ok $n\n";} else {print "not ok $n ($temp1) != ($date2)\n";} # 50
$n++;
if ($temp1 eq $date2)
{print "ok $n\n";} else {print "not ok $n ($temp1) ne ($date2)\n";} # 51
$n++;
if ($temp1 == $date1)
{print "ok $n\n";} else {print "not ok $n ($temp1) != ($date1)\n";} # 52
$n++;
if ($temp1 eq $date1)
{print "ok $n\n";} else {print "not ok $n ($temp1) ne ($date1)\n";} # 53
$n++;
if ($temp2 == $date1)
{print "ok $n\n";} else {print "not ok $n ($temp2) != ($date1)\n";} # 54
$n++;
if ($temp2 eq $date1)
{print "ok $n\n";} else {print "not ok $n ($temp2) ne ($date1)\n";} # 55
$n++;
$temp1 = $date1 - $delta1;
$temp2 = ($date2 -= $delta2);
if ("[$temp1]" eq "[30-Apr-2000]")
{print "ok $n\n";} else {print "not ok $n ($temp1)\n";} # 56
$n++;
if ("[$date2]" eq "[30-Apr-2000]")
{print "ok $n\n";} else {print "not ok $n ($date2)\n";} # 57
$n++;
if ("[$temp2]" eq "[30-Apr-2000]")
{print "ok $n\n";} else {print "not ok $n ($temp2)\n";} # 58
$n++;
$date1 = Date::Pcalc->new([2000,1,1]);
$date2 = Date::Pcalc->new([2000,3,1]);
$temp1 = $date1--;
if ("[$temp1]" eq "[01-Jan-2000]")
{print "ok $n\n";} else {print "not ok $n ($temp1)\n";} # 59
$n++;
if ("[$date1]" eq "[31-Dec-1999]")
{print "ok $n\n";} else {print "not ok $n ($date1)\n";} # 60
$n++;
$temp2 = --$date2;
if ("[$temp2]" eq "[29-Feb-2000]")
{print "ok $n\n";} else {print "not ok $n ($temp2)\n";} # 61
$n++;
if ("[$date2]" eq "[29-Feb-2000]")
{print "ok $n\n";} else {print "not ok $n ($date2)\n";} # 62
$n++;
$temp2 = ++$date1;
if ("[$temp2]" eq "[01-Jan-2000]")
{print "ok $n\n";} else {print "not ok $n ($temp2)\n";} # 63
$n++;
if ("[$date1]" eq "[01-Jan-2000]")
{print "ok $n\n";} else {print "not ok $n ($date1)\n";} # 64
$n++;
$temp1 = $date2++;
if ("[$temp1]" eq "[29-Feb-2000]")
{print "ok $n\n";} else {print "not ok $n ($temp1)\n";} # 65
$n++;
if ("[$date2]" eq "[01-Mar-2000]")
{print "ok $n\n";} else {print "not ok $n ($date2)\n";} # 66
$n++;
exit 0; # vital here: avoid "panic: POPSTACK" in Perl 5.005_03 (and before, probably)
__END__