1#!/usr/bin/perl -w
2
3use strict;
4
5use Test::More tests => 1112;
6
7use DateTime;
8
9{
10    my $dt = DateTime->new( year => 0 );
11
12    is( $dt->year,  0, 'year is 0' );
13    is( $dt->month, 1, 'month is 1' );
14    is( $dt->day,   1, 'day is 1' );
15    is( $dt->day_of_week, 6, 'day of week is 6' );
16}
17
18{
19    my $dt = DateTime->new( year => 0, month => 12, day => 31 );
20
21    is( $dt->year,   0, 'year is 0' );
22    is( $dt->month, 12, 'month is 12' );
23    is( $dt->day,   31, 'day is 31' );
24    is( $dt->day_of_week, 7, 'day of week is 7' );
25}
26
27{
28    my $dt = DateTime->new( year => -1 );
29
30    is( $dt->year, -1, 'year is -1' );
31    is( $dt->month, 1, 'month is 1' );
32    is( $dt->day,   1, 'day is 1' );
33    is( $dt->day_of_week, 5, 'day of week is 5' );
34}
35
36{
37    my $dt = DateTime->new( year => 1 );
38
39    is( $dt->year,   1, 'year is 1' );
40    is( $dt->month,  1, 'month is 1' );
41    is( $dt->day,    1, 'day is 1' );
42    is( $dt->day_of_week, 1, 'day of week is 1' );
43}
44
45{
46    my $dow = 1;
47    for my $year (1, 0, -1)
48    {
49        my $days_in_year = $year ? 365 : 366;
50
51        for my $doy (reverse 1..$days_in_year)
52        {
53            is( DateTime->from_day_of_year( year => $year,
54                                            day_of_year => $doy,
55                                          )->day_of_week,
56                $dow,
57                "day of week for day $doy of year $year is $dow" );
58
59            $dow--;
60            $dow = 7 if $dow == 0;
61        }
62    }
63}
64