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 'no_plan';

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
my $class  = 'CPAN::PackageDetails';
my $method = '_filter_older_dists';

use_ok( $class );
can_ok( $class, $method );

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# try it with relative paths and no older dists
{
my @list = qw( 
	Foo-1.23.tgz 
	Foo-Bar-3.45.tgz 
	Bar-2.34.tgz 
	);

my @copy = @list;

$class->$method( \@copy );
is_deeply( \@copy, \@list, "Unique list has the same elements it started with" );
}

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Try it with relative paths and and an older dist
{
my @list = qw( 
	Foo-1.23.tgz
	Foo-1.22.tgz
	Foo-Bar-3.45.tgz 
	Bar-2.34.tgz 
	);

my @expected = qw( 
	Foo-1.23.tgz
	Foo-Bar-3.45.tgz 
	Bar-2.34.tgz 
	);

$class->$method( \@list );
is( scalar @list, scalar @expected, "Filtered list of filenames has the right length" );
is_deeply( \@list, \@expected, "Filtered list of filenames paths has right paths" );
}

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Try it with absolute paths and and an older dist
# The older dist comes first in the list
{
my @list = qw( 
	/a/b/c/d/authors/id/B/BDFOY/Test-Data-1.21.tgz
	/a/b/c/d/authors/id/B/BDFOY/Test-Data-1.22.tgz
	);

my @expected = qw( 
	/a/b/c/d/authors/id/B/BDFOY/Test-Data-1.22.tgz
	);

$class->$method( \@list );
is( scalar @list, scalar @expected, "Filtered list of absolute paths has the right length" );
is_deeply( \@list, \@expected, "Filtered list of absolute paths has right paths" );
}