The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
use strict;

use Test::More tests => 27;
use CPAN::Testers::Common::Article;
use IO::File;

my @perls = (
  {
    text => 'Summary of my perl5 (revision 5.0 version 6 subversion 1) configuration',
    perl => '5.6.1'
  },
  {
    text => 'Summary of my perl5 (revision a version b subversion c) configuration',
    perl => '0'
  },
  {
    text => 'Summary of my perl5 (revision 5.0 version 8 subversion 0 patch 17332) configuration',
    perl => '5.8.0 patch 17332',
  },
  {
    text => 'Summary of my perl5 (revision 5.0 version 8 subversion 1 RC3) configuration',
    perl => '5.8.1 RC3',
  },
  {
    text => 'Summary of my perl5 (revision 5 patchlevel 6 subversion 1) configuration',
    perl => '5.6.1',
  },
  {
    text => 'on Perl 5.8.8, created by CPAN-Reporter',
    perl => '5.8.8',
  },
  {
    text => '/site_perl/5.8.8/',
    perl => '5.8.8',
  },
  {
    text => 'on perl 5.8.8, created by CPAN-Reporter',
    perl => '5.8.8',
  },
  {
    head => 'v5.12.0 RC1',
    text => 'Summary of my perl5 (revision 5.0 version 12 subversion 0) configuration',
    perl => '5.12.0 RC1',
  },
  {
    head => 'v5.12.0',
    text => 'Summary of my perl5 (revision 5.0 version 12 subversion 0) configuration',
    perl => '5.12.0',
  },

  {
    text => 'on perl 5, created by CPAN-Reporter',
    perl => '0',
  },
  {
    text => 'Summary of my perl5 (revision 5.0) configuration',
    perl => '0'
  },
  {
    text => 'Summary of my perl5 (revision 5.0 version 8) configuration',
    perl => '0'
  },
  {
    text => '/site_perl/5.8/',
    perl => '0'
  },
#  {
#    text => '',
#    perl => '',
#  },
);

my $article = readfile('t/nntp/126015.txt');
my $ctca = CPAN::Testers::Common::Article->new($article);
isa_ok($ctca,'CPAN::Testers::Common::Article');

for(@perls) {
  my $text = $_->{text};
  my $perl = $_->{perl};
  my $head = $_->{head};

  my $version = $ctca->_extract_perl_version($text,$head);
  is($version, $perl,".. matches perl $perl");
}

my @dates = (
    { date => 'Wed, 13 September 2004 06:29',   result => ['200409','200409130629',1095053340] },
    { date => '13 September 2004 06:29',        result => ['200409','200409130629',1095053340] },
    { date => 'September 22, 1999 06:29',       result => ['199909','199909220629',937978140] },
    { date => 'Wed, 13 September 2004',         result => ['200409','200409130000',1095030000] },
    { date => '13 September 2004',              result => ['200409','200409130000',1095030000] },
    { date => 'September 22, 1999',             result => ['199909','199909220000',937954800] },
    { date => 'Sep 22, 1999',                   result => ['199909','199909220000',937954800] },

    { date => 'September 22, 1995',             result => ['000000','000000000000',0] },
    { date => 'Month 22, 1999',                 result => ['000000','000000000000',0] },

    { date => '13/09/2004',                     result => ['000000','000000000000',0] },
    { date => '13-09-2004T06:29:00Z',           result => ['000000','000000000000',0] },
    { date => '',                               result => ['000000','000000000000',0] },
);

for my $date (@dates) {
    my @extract = $ctca->_extract_date($date->{date});
    #diag("$date->{date}: " . Dumper(\@extract));
    is_deeply(\@extract, $date->{result}, ".. test for $date->{date}");
}

sub readfile {
    my $file = shift;
    my $text;
    my $fh = IO::File->new($file)   or return;
    while(<$fh>) { $text .= $_ }
    $fh->close;
    return $text;
}