The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl
use strict;
use warnings;
use Test::More tests => 84;
use lib 't/lib';
use TestUtils;
use_ok("Parse::BACKPAN::Packages");

my $p = new_pbp();

my $file = $p->file("authors/id/L/LB/LBROCARD/Acme-Colour-0.16.tar.gz");
is( $file->prefix, "authors/id/L/LB/LBROCARD/Acme-Colour-0.16.tar.gz" );
is( $file->date,   1014330111 );
is( $file->size,   3031 );
is( $file->url,
    "http://backpan.perl.org/authors/id/L/LB/LBROCARD/Acme-Colour-0.16.tar.gz"
);

my @acme_colours = $p->releases("Acme-Colour");
is( $acme_colours[0]->cpanid,    "LBROCARD" );
is( $acme_colours[0]->date,      "1014330111" );
is( $acme_colours[0]->dist,      "Acme-Colour" );
is( $acme_colours[0]->distvname, "Acme-Colour-0.16" );
is( $acme_colours[0]->filename,  "Acme-Colour-0.16.tar.gz" );
is( $acme_colours[0]->maturity,  "released" );
is( $acme_colours[0]->prefix,
    "authors/id/L/LB/LBROCARD/Acme-Colour-0.16.tar.gz" );
is( $acme_colours[0]->version, "0.16" );

is( $acme_colours[1]->version, "0.17" );
is( $acme_colours[2]->version, "0.18" );
is( $acme_colours[3]->version, "0.19" );
is( $acme_colours[4]->version, "0.20" );
is( $acme_colours[5]->version, "1.00" );
is( $acme_colours[6]->version, "1.01" );
is( $acme_colours[7]->version, "1.02" );

is( $acme_colours[-1]->cpanid,    "LBROCARD" );
is( $acme_colours[-1]->date,      "1213106995" );
is( $acme_colours[-1]->dist,      "Acme-Colour" );
is( $acme_colours[-1]->distvname, "Acme-Colour-1.06" );
is( $acme_colours[-1]->filename,  "Acme-Colour-1.06.tar.gz" );
is( $acme_colours[-1]->maturity,  "released" );
is( $acme_colours[-1]->prefix,
    "authors/id/L/LB/LBROCARD/Acme-Colour-1.06.tar.gz" );
is( $acme_colours[-1]->version, "1.06" );

my @noone = $p->distributions_by('NONEXISTENTAUTHOR');
is( scalar @noone, 0, 'No distributions for new author' );

my @bogus = $p->distributions_by();
is( scalar @bogus, 0, 'No distributions for missing author' );

my @acmes = $p->distributions_by('LBROCARD');
foreach my $dist (
    'Acme-Colour',                'Buffy',
    'CPAN-IndexPod',              'CPAN-Metadata-RDF',
    'CPAN-Unpack',                'CPAN-WWW-Testers',
    'CPAN-WWW-Testers-Generator', 'Data-Page',
    'DateTime-Stringify',         'Devel-ebug',
    'Functional',                 'Games-GuessWord',
    'GraphViz',                   'HTML-Fraction',
    'HTTP-Server-Simple-Kwiki',   'Haul',
    'Image-Imlib2',               'Image-WorldMap',
    'Java-JVM-Classfile',         'Language-Functional',
    'MP3-ID3Lib',                 'Mac-EyeTV',
    'MealMaster',                 'Messaging-Courier',
    'Module-Packaged',            'Net-Amazon-AWIS',
    'Net-Amazon-SimpleQueue',     'Net-DPAP-Client',
    'Net-OpenDHT',                'OpenFrame-Segment-Apache',
    'OpenFrame-Segment-Apache2',  'PPI-Metric-Basic',
    'Parse-BACKPAN-Packages',     'Parse-CPAN-Authors',
    'Parse-CPAN-Packages',        'Search-Mousse',
    'String-Koremutake',          'Template-Plugin-Page',
    'Test-Expect',                'Test-WWW-Mechanize-Catalyst',
    'Tie-GHash',                  'Tree-Ternary_XS',
    'WWW-Gazetteer',              'WWW-Gazetteer-Calle',
    'WWW-Gazetteer-FallingRain',  'WWW-Gazetteer-Getty',
    'WWW-Mechanize-Timed',        'WWW-Search-Google',
    'XML-asData',
    )
{
    ok( scalar( grep { $_ eq $dist } @acmes ), "LBROCARD has $dist" );
}

my @pmisons = $p->distributions_by('PMISON');
foreach my $dist ( 'File-Type', 'File-Find-Rule-Type', ) {
    ok( scalar( grep { $_ eq $dist } @pmisons ), "PMISON has $dist" );
}

my @authors = $p->authors;
ok( scalar(@authors) > 2500 );
foreach my $author ( 'LBROCARD', 'PMISON', ) {
    ok( scalar( grep { $_ eq $author } @authors ), "$author is an author" );
}

#use Data::Dumper; warn Dumper \@authors;
# use YAML; warn Dump \@acmes;