The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package date;
use strict;
use warnings;
use base qw( Test::Class );

use Test::More;

use Mail::Header::Generator ();

local $ENV{TZ}   = 'UTC';
local $ENV{LANG} = 'C';

sub startup : Test(startup)
{
	my ($self) = @_;
	$self->{gen} = Mail::Header::Generator->new({
		# Force specific timestamp for consistency in testing
		timestamp      => 1195000000,
	});
}

sub date_no_args : Test(1)
{
	my ($self) = @_;
	is(
		$self->{gen}->date(),
		'Date: Wed, 14 Nov 2007 00:26:40 +0000',
		'->date() with no args using object timestamp'
	);
}

sub class_date_no_args : Test(1)
{
	my (undef, undef, undef, $mday, $mon, $year, $wday) = localtime(time);
	$year += 1900;
	$wday = (qw(Sun Mon Tue Wed Thu Fri Sat))[$wday];
	$mon  = (qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ))[$mon];
	like(
		Mail::Header::Generator->date(),
		qr/Date: $wday, $mday $mon $year \d{2}:\d{2}:\d{2} \+0000/,
		'->date() with no args (class method)'
	);
}

sub date_with_name : Test(2)
{
	my ($self) = @_;
	is(
		$self->{gen}->date({ header_name => 'X-Wacky-Date' }),
		'X-Wacky-Date: Wed, 14 Nov 2007 00:26:40 +0000',
		'->date() with different header name using object timestamp'
	);

	is(
		$self->{gen}->date({ header_name => 'X-Wacky-Date', timestamp => 1195000000 }),
		'X-Wacky-Date: Wed, 14 Nov 2007 00:26:40 +0000',
		'->date() with different header name (class method)'
	);

}

__PACKAGE__->runtests unless caller();