#!perl
use strict;
use warnings;
use version;
use Test::More;
use English qw(-no_match_vars);
use Pinto::PackageSpec;
#------------------------------------------------------------------------------
{
my $spec = Pinto::PackageSpec->new('Foo~1.2');
is $spec->name, 'Foo', 'Parsed package name from string';
is $spec->version, '1.2', 'Parsed package version from string';
is "$spec", 'Foo~1.2', 'Stringified PackageSpec object';
}
#------------------------------------------------------------------------------
{
my $spec = Pinto::PackageSpec->new('Foo');
is $spec->name, 'Foo', 'Parsed package name from string';
is $spec->version, '0', 'Parsed package version from string without version';
is "$spec", 'Foo~0', 'Stringified PackageSpec object';
}
#------------------------------------------------------------------------------
{
my $spec = Pinto::PackageSpec->new(name => 'Foo', version => 1.2);
is $spec->name, 'Foo', 'Constructor with normal name attribute';
is $spec->version, '1.2', 'Constructor with normal version version';
is "$spec", 'Foo~1.2', 'Stringified PackageSpec object';
}
#------------------------------------------------------------------------------
{
# Module::Build first introduced into core in perl 5.9.4
# Module::Build was first upgraded to 0.038 in perl 5.13.11
my $spec = Pinto::PackageSpec->new(name => 'Module::Build', version => 0.38);
is $spec->is_core(in => 'v5.6.1'), 0, "$spec is not in perl 5.6.1";
is $spec->is_core(in => 'v5.10.1'), 0, "$spec is not in perl 5.10.1";
is $spec->is_core(in => 'v5.14.2'), 1, "$spec is in perl 5.14.2";
local $] = 5.013011;
is $spec->is_core, 1, "$spec is in *this* perl, pretending we are $]"
}
#------------------------------------------------------------------------------
done_testing;