]> git.vpit.fr Git - perl/modules/CPANPLUS-Dist-Gentoo.git/blob - t/20-version.t
Introduce C::D::G::{Atom,Version}
[perl/modules/CPANPLUS-Dist-Gentoo.git] / t / 20-version.t
1 #!perl -T
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 2 + 21 * (3 + 2);
7
8 use CPANPLUS::Dist::Gentoo::Version;
9
10 sub V () { 'CPANPLUS::Dist::Gentoo::Version' }
11
12 eval { V->new('dongs') };
13 like $@, qr/Couldn't\s+parse\s+version\s+string/, "V->('dongs')";
14
15 eval { my $res = 'dongs' < V->new(1) };
16 like $@, qr/Couldn't\s+parse\s+version\s+string/, "'dongs' < V->new(1)";
17
18 my @tests = (
19  [ 0, 0,  0 ],
20  [ 1, 0,  1 ],
21  [ 0, 1, -1 ],
22  [ 1, 1,  0 ],
23
24  [ '1.0', 1,      0 ],
25  [ '1.1', 1,      1 ],
26  [ '1.1', '1.0',  1 ],
27  [ 1,     '1.0',  0 ],
28  [ 1,     '1.1', -1 ],
29  [ '1.0', '1.1', -1 ],
30
31  [ '1.0_p0',   '1.0_p0',    0 ],
32  [ '1.0_p0',   '1.0_p1',   -1 ],
33  [ '1.1_p0',   '1.0_p1',    1 ],
34  [ '1.1_p0',   '1.1_p0.1', -1 ],
35  [ '1.1_p0.1', '1.1_p0.1',  0 ],
36
37  [ '1.2_p0-r0', '1.2_p0',  0 ],
38  [ '1.2_p0-r1', '1.2_p0',  1 ],
39  [ '1.2-r0',    '1.2_p0',  0 ],
40  [ '1.2-r1',    '1.2_p0',  1 ],
41  [ '1.2-r1',    '1.2_p1', -1 ],
42  [ '1.2-r2',    '1.2_p1', -1 ],
43 );
44
45 for (@tests) {
46  my ($s1, $s2, $res) = @$_;
47
48  my $v1 = V->new($s1);
49  my $v2 = V->new($s2);
50
51  is $s1 <=> $v2, $res, "'$s1' <=> V->new('$s2')";
52  is $v1 <=> $s2, $res, "V->new('$s1') <=> '$s2'";
53  is $v1 <=> $v2, $res, "V->new('$s1') <=> V->new('$s2')";
54
55  cmp_ok "$v1", 'eq', $s1, "V->new('$s1') eq '$s1'";
56  cmp_ok "$v2", 'eq', $s2, "V->new('$s2') eq '$s2'";
57 }