The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More tests => 34;
use_ok('Calendar::Simple');

my @month = calendar(9, 2002);

is(@month, 5);
is(@{$month[0]}, 7);
is($month[0][0], 1);
ok(not defined $month[-1][-1]);
is($#{$month[-1]}, 6);

@month = calendar(2, 2009);
is(@month, 4);
is($month[0][0], 1);
is($month[3][6], 28);
ok(defined $month[-1][-1]);
is($#{$month[-1]}, 6);

@month = calendar(1, 2002);
ok(not defined $month[0][0]);
is($month[0][2], 1);
is($month[4][4], 31);
ok(not defined $month[4][6]);
ok(not defined $month[-1][-1]);
is($#{$month[-1]}, 6);

@month = calendar(1, 2002, 1);
ok(not defined $month[0][0]);
is($month[0][1], 1);
is($month[4][3], 31);
ok(not defined $month[4][4]);
ok(not defined $month[-1][-1]);
is($#{$month[-1]}, 6);

@month = calendar(2, 2004, 3);
ok(@month);

@month = calendar();
ok(@month);

eval { @month = calendar(-1) };
ok($@);

eval { @month = calendar(13) };
ok($@);

eval { @month = calendar(1, 2000, -1) };
ok($@);

eval { @month = calendar(1, 2000, 7) };
ok($@);

@month = calendar(2, 2000);
ok(@month);

@month = calendar(2, 2004);
ok(@month);

my $month = calendar();
is(ref $month, 'ARRAY');

SKIP: {
  eval { require DateTime };
  skip "DateTime not installed", 2, if $@ || $ENV{CAL_SIMPLE_NO_DT};
  @month = calendar(1,1500);
  ok(@month);

  @month = calendar(2, 2100);
  ok(@month);
}