1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
#!perl -T
use strict;
use warnings;
use Test::More;
use URI::VersionRange;
my $vers = 'vers:cpan/>v1.00|!=v2.10|<=v3.00';
my $v1 = URI::VersionRange->from_string($vers);
my $v2 = URI::VersionRange->new(
scheme => 'cpan',
constraints => [
URI::VersionRange::Constraint->new(comparator => '>', version => 'v1.00'),
URI::VersionRange::Constraint->new(comparator => '!=', version => 'v2.10'),
URI::VersionRange::Constraint->new(comparator => '<=', version => 'v3.00')
]
);
my $v3 = URI::VersionRange->new(scheme => 'cpan', constraints => ['>v1.00', '!=v2.10', '<=v3.00']);
my $v4 = decode_vers($vers);
my $v5 = decode_vers(encode_vers(scheme => 'cpan', constraints => ['>v1.00', '!=v2.10', '<=v3.00']));
my %TESTS = (
'from_string' => $v1,
'object-oriented #1' => $v2,
'object-oriented #2' => $v3,
'decode_vers' => $v4,
'encode_vers + decode_vers' => $v5,
);
my @in_range = ('v2.11', 'v2.99', 'v3.00');
my @not_in_range = ('v0.01', 'v0.99', 'v2.10');
foreach (sort keys %TESTS) {
is $v1, $TESTS{$_}, "Version range ($_)";
}
is $v1->contains($_), !!1, "$_ version in range ($v1)" for (sort @in_range);
is $v1->contains($_), !!0, "$_ version not in range ($v1)" for (sort @not_in_range);
is decode_vers('vers:cpan/<v13.37')->contains($_), !!1, "$_ version in range" for (sort @in_range);
eval { decode_vers('foo:bar<baz') };
like "$@", qr/Malformed Version Range string/;
done_testing();
|