Deprecate assignment to $[
[p5sagit/p5-mst-13.2.git] / lib / CPAN / t / 10version.t
1 # -*- Mode: cperl; coding: utf-8; -*-
2
3 use strict;
4 use CPAN::Version;
5 use vars qw($D $N);
6
7 # for debugging uncomment the next two lines
8 # use CPAN;
9 # $CPAN::DEBUG = 16384;
10
11 while (<DATA>) {
12   next if tr/.// > 1 && $]<5.006; # multidot tests are not for pre-5.6.0
13   last if /^__END__$/;
14   chomp;
15   s/\s*#.*//;
16   push @$D, [ split ];
17 }
18
19 $N = scalar @$D;
20 print "1..$N\n";
21
22 my $has_sort_versions = eval { require Sort::Versions; 1 };
23 my $has_versionpm = eval q{ use version 0.7203; 1 };
24 my $has_perl_versionpm = eval { require Perl::Version; 1 };
25 while (@$D) {
26   my($l,$r,$exp) = @{shift @$D};
27   my $res = CPAN::Version->vcmp($l,$r);
28   if ($res != $exp){
29     print "# l[$l]r[$r]exp[$exp]res[$res]\n";
30     print "not ";
31   }
32   my @other = ();
33   if ($has_sort_versions) {
34     if (Sort::Versions::versioncmp($l,$r) != $res) {
35       push @other, sprintf "SV: %d", Sort::Versions::versioncmp($l,$r);
36     }
37   }
38   if ($has_versionpm) {
39     local $^W;
40     my $vpack = "version"; # hide the name from 5.004
41     my $vres = eval { $vpack->new($l) cmp $vpack->new($r); };
42     if ($@) {
43       push @other, "v.pm: $@";
44     } elsif ($vres != $res) {
45       push @other, sprintf "v.pm: %d", $vres;
46     }
47   }
48   if ($has_perl_versionpm) {
49     local $^W;
50     my $vpack = "Perl::Version"; # hide the name from 5.004
51     my $vres = eval { $vpack->new($l) cmp $vpack->new($r); };
52     if ($@) {
53       push @other, "PV: $@";
54     } elsif ($vres != $res) {
55       push @other, sprintf "PV: %d", $vres;
56     }
57   }
58   my $other = @other ? " (".join("; ", @other).")" : "";
59   printf "ok %2d # %12s %12s %3d%s\n", $N-@$D, $l, $r, $res, $other;
60   die "Panic" if CPAN::Version->vgt($l,$r) && CPAN::Version->vlt($l,$r);
61 }
62
63 __END__
64 0 0 0
65 1 0 1
66 0 1 -1
67 1 1 0
68 1.1 0.0a 1
69 1.1a 0.0 1
70 1.2.3 1.1.1 1
71 v1.2.3 v1.1.1 1
72 v1.2.3 v1.2.1 1
73 v1.2.3 v1.2.11 -1
74 v2.4 2.004000 -1
75 v2.4 2.004 0
76 1.2.3 1.2.11 -1
77 1.9 1.10 1
78 VERSION VERSION 0
79 0.02 undef 1
80 1.57_00 1.57 1
81 1.5700 1.57 1
82 1.57_01 1.57 1
83 1.88_51 1.8801 1
84 1.8_8_5_1 1.8801 1
85 0.2.10 0.2 -1
86 20000000.00 19990108 1
87 1.00 0.96 1
88 0.7.2 0.7 -1
89 0.7.02 0.7 -1
90 0.07.02 0.7 -1
91 1.3a5 1.3 1
92 undef 1.00 -1
93 v1.0 undef 1
94 v0.2.4 0.24 -1
95 v1.0.22 122 -1
96 1.0.22 122 -1
97 5.00556 v5.5.560 0
98 5.005056 v5.5.56 0
99 5.00557 v5.5.560 1
100 5.00056 v5.0.561 -1
101 0.0.2 0.000002 0
102 1.0.3 1.000003 0
103 1.0.1 1.000001 0
104 0.0.1 0.000001 0
105 0.01.04 0.001004 0
106 0.05.18 0.005018 0
107 4.08.00 4.008000 0
108 0.001.004 0.001004 0
109 0.005.018 0.005018 0
110 4.008.000 4.008000 0
111 4.008.000 4.008 1
112 v4.8 4.008 0
113 v4.8.0 4.008000 0
114 v1.99.1_1 1.98 -1
115 v2.3999 v2.4000 -1
116 v2.3999 2.004000 1
117 v2.3999 2.999999 1
118 v2.1000 2.999999 1
119 0123 123 -1
120 v2.005 2.005 0
121 v1.0 1.0 0
122 v1.0 1.000 0
123 v1.0 1.000000 0
124 __END__
125
126 # Local Variables:
127 # mode: cperl
128 # cperl-indent-level: 2
129 # End: