From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

#!perl
use strict;
use lib 't/lib';
use Pinto::Tester::Util qw(make_dist_obj make_pkg_obj);
#------------------------------------------------------------------------------
my $dist = make_dist_obj( author => 'AUTHOR', archive => 'Foo-2.001_02.tar.gz' );
my $pkg = make_pkg_obj( name => 'Foo', version => '2.001_02', distribution => $dist );
is( $pkg->name(), 'Foo', 'name attribute' );
is( $pkg->vname(), 'Foo~2.001_02', 'vname attribute' );
is( $pkg->version(), '2.001_02', 'version attribute' );
isa_ok( $pkg->version(), 'version', 'version attribute isa version object' );
is( "$pkg", 'AUTHOR/Foo-2.001_02/Foo~2.001_02', 'default strigification' );
#------------------------------------------------------------------------------
$dist = make_dist_obj( author => 'AUTHOR', archive => 'Foo-2.0.tar.gz', source => 'http://remote' );
$pkg = make_pkg_obj( name => 'Foo', distribution => $dist );
is( $pkg->vname(), 'Foo~0', 'vname with undef version' );
#------------------------------------------------------------------------------
$dist = make_dist_obj( author => 'AUTHOR', archive => 'Foo-2.0-TRIAL.tar.gz', source => 'http://remote' );
$pkg = make_pkg_obj( name => 'Foo', distribution => $dist, version => 1.2 );
my %formats = (
'p' => 'Foo',
'P' => 'Foo~1.2',
'v' => '1.2',
'm' => 'd',
'h' => 'A/AU/AUTHOR/Foo-2.0-TRIAL.tar.gz',
's' => 'f',
'S' => 'http://remote',
'a' => 'AUTHOR',
'd' => 'Foo',
'D' => 'Foo-2.0-TRIAL',
'V' => '2.0-TRIAL',
);
while ( my ( $placeholder, $expected ) = each %formats ) {
my $got = $pkg->to_string("%$placeholder");
is( $got, $expected, "Placeholder: %$placeholder" );
}
#------------------------------------------------------------------------------
done_testing();