CPAN-Meta-Requirements
view release on metacpan or search on metacpan
is_deeply($req->as_string_hash, { Foo => '!= 1, != 2' }, "excl only");
}
{
my $req = CPAN::Meta::Requirements->new;
$req->add_minimum(Foo => 1);
$req->add_maximum(Foo => 2);
is_deeply(
$req->as_string_hash,
{
Foo => '>= 1, <= 2',
},
"min and max",
);
$req->add_maximum(Foo => 3);
is_deeply(
$req->as_string_hash,
{
Foo => '>= 1, <= 2',
},
"exclusions already outside range do not matter",
);
$req->add_exclusion(Foo => 1.5);
is_deeply(
$req->as_string_hash,
{
Foo => '>= 1, <= 2, != 1.5',
},
"exclusions",
);
$req->add_minimum(Foo => 1.6);
is_deeply(
$req->as_string_hash,
{
Foo => '>= 1.6, <= 2',
},
"exclusions go away when made irrelevant",
);
}
{
my $req = CPAN::Meta::Requirements->new;
$req->add_minimum(Foo => 1);
$req->add_exclusion(Foo => 1);
$req->add_maximum(Foo => 2);
is_deeply(
$req->as_string_hash,
{
Foo => '> 1, <= 2',
},
"we can exclude an endpoint",
);
}
{
my $req = CPAN::Meta::Requirements->new;
$req->add_minimum(Foo => 1);
$req->add_exclusion(Foo => 1);
dies_ok { $req->add_maximum(Foo => 1); }
qr/both 1, which is excluded/,
"can't exclude all values" ;
}
{
my $req = CPAN::Meta::Requirements->new;
$req->add_minimum(Foo => 1);
dies_ok {$req->exact_version(Foo => 0.5); }
qr/outside of range/,
"can't add outside-range exact spec to range";
}
{
my $req = CPAN::Meta::Requirements->new;
$req->add_minimum(Foo => 1);
dies_ok { $req->add_maximum(Foo => 0.5); }
qr/minimum 1 exceeds maximum/,
"maximum must exceed (or equal) minimum";
$req = CPAN::Meta::Requirements->new;
$req->add_maximum(Foo => 0.5);
dies_ok { $req->add_minimum(Foo => 1); }
qr/minimum 1 exceeds maximum/,
"maximum must exceed (or equal) minimum";
}
{
my $req = CPAN::Meta::Requirements->new;
$req->add_minimum(Foo => 1);
$req->add_maximum(Foo => 1);
$req->add_maximum(Foo => 2); # ignored
$req->add_minimum(Foo => 0); # ignored
$req->add_exclusion(Foo => .5); # ignored
is_deeply(
$req->as_string_hash,
{
'Foo' => '== 1',
},
"if min==max, becomes exact requirement",
);
}
{
my $req = CPAN::Meta::Requirements->new;
$req->add_minimum(Foo => 1);
$req->add_exclusion(Foo => 0);
$req->add_maximum(Foo => 3);
( run in 0.872 second using v1.01-cache-2.11-cpan-ecdf5575e8d )