The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use lib 'lib';
use Parse::Syslog;
use Test;
use POSIX;
use Time::Local;

BEGIN {
	# only test if IO::Scalar is available
	eval 'require IO::Scalar;' or do {
		plan tests => 0;
		warn "IO::Scalar not available: test skipped.\n";
		exit;
	};
	if($Time::Local::VERSION lt '1.07_94') {
		warn "Time::Local too old for DST-switch code to work (is: $Time::Local::VERSION, must be: 1.07_94)";
		plan test => 0;
		exit;
	}

	plan tests => 20
};

$ENV{TZ} = 'CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00';
POSIX::tzset();

my $data = <<END;
Oct 30 01:40:00 ivr3 bla: bla
Oct 30 02:00:00 ivr3 bla: bla
Oct 30 02:20:00 ivr3 bla: bla
Oct 30 02:40:00 ivr3 bla: bla
Oct 30 02:59:58 ivr3 bla: bla
Oct 30 02:00:00 ivr3 bla: bla
Oct 30 02:20:00 ivr3 bla: bla
Oct 30 02:40:00 ivr3 bla: bla
Oct 30 03:00:00 ivr3 bla: bla
Oct 30 03:20:00 ivr3 bla: bla
END

my $file = IO::Scalar->new(\$data);

my $parser = Parse::Syslog->new($file, year=>2005);

my $result = <<END;
Sun Oct 30 01:40:00 2005
Sun Oct 30 02:00:00 2005
Sun Oct 30 02:20:00 2005
Sun Oct 30 02:40:00 2005
Sun Oct 30 02:59:58 2005
Sun Oct 30 02:00:00 2005
Sun Oct 30 02:20:00 2005
Sun Oct 30 02:40:00 2005
Sun Oct 30 03:00:00 2005
Sun Oct 30 03:20:00 2005
END
my @result = split(/\n/, $result);

my $last_t=0;
while(my $sl = $parser->next) {
	# check that we get the correct localtime where a timewarp is noticeable
	# but always an increasing timestamp
	my $lt = localtime($sl->{timestamp});
	ok($lt, shift @result);
	ok($sl->{timestamp} > $last_t);
	$last_t = $sl->{timestamp};
}

# vim: ft=perl