1#!/usr/bin/perl -w
2
3use strict;
4
5use Test::More tests => 26;
6
7use DateTime;
8
9my @tests = ( [ [ 1964, 12, 31 ], [ 1964, 53 ] ],
10              [ [ 1965,  1,  1 ], [ 1964, 53 ] ],
11              [ [ 1971,  9,  7 ], [ 1971, 36 ] ],
12              [ [ 1971, 10, 25 ], [ 1971, 43 ] ],
13              [ [ 1995,  1,  1 ], [ 1994, 52 ] ],
14              [ [ 1995, 11, 18 ], [ 1995, 46 ] ],
15              [ [ 1995, 12, 31 ], [ 1995, 52 ] ],
16              [ [ 1996, 12, 31 ], [ 1997,  1 ] ],
17              [ [ 2001,  4, 28 ], [ 2001, 17 ] ],
18              [ [ 2001,  8,  2 ], [ 2001, 31 ] ],
19              [ [ 2001,  9, 11 ], [ 2001, 37 ] ],
20              [ [ 2002, 12, 25 ], [ 2002, 52 ] ],
21              [ [ 2002, 12, 31 ], [ 2003,  1 ] ],
22              [ [ 2003,  1,  1 ], [ 2003,  1 ] ],
23              [ [ 2003, 12, 31 ], [ 2004,  1 ] ],
24              [ [ 2004,  1,  1 ], [ 2004,  1 ] ],
25              [ [ 2004, 12, 31 ], [ 2004, 53 ] ],
26              [ [ 2005,  1,  1 ], [ 2004, 53 ] ],
27              [ [ 2005, 12, 31 ], [ 2005, 52 ] ],
28              [ [ 2006,  1,  1 ], [ 2005, 52 ] ],
29              [ [ 2006, 12, 31 ], [ 2006, 52 ] ],
30              [ [ 2007,  1,  1 ], [ 2007,  1 ] ],
31              [ [ 2007, 12, 31 ], [ 2008,  1 ] ],
32              [ [ 2008,  1,  1 ], [ 2008,  1 ] ],
33              [ [ 2008, 12, 31 ], [ 2009,  1 ] ],
34              [ [ 2009,  1,  1 ], [ 2009,  1 ] ],
35            );
36
37foreach my $test ( @tests )
38{
39    my @args = @{ $test->[0] };
40    my @results = @{ $test->[1] };
41
42    my $dt = DateTime->new( year  => $args[0],
43                            month => $args[1],
44                            day   => $args[2],
45                            time_zone => 'UTC',
46                          );
47
48    my ($year, $week) = $dt->week();
49
50    is( "$year-W$week", "$results[0]-W$results[1]" );
51}
52