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