use strict;
use warnings;
-use Test::More tests => 10 + 24;
+use Test::More tests => 11 + 2 * 5 + 7;
use CPANPLUS::Dist::Gentoo::Maps;
-*vc2g = \&CPANPLUS::Dist::Gentoo::Maps::version_c2g;
+*vc2g = sub {
+ unshift @_, undef if @_ == 1;
+ goto &CPANPLUS::Dist::Gentoo::Maps::version_c2g
+};
is vc2g('1'), '1', "version_c2g('1')";
-is vc2g('a1b'), '1', "version_c2g('a1b')";
+is vc2g('v1'), '1', "version_c2g('v1')";
is vc2g('..1'), '1', "version_c2g('..1')";
is vc2g('1.0'), '1.0', "version_c2g('1.0')";
+is vc2g('v1.0'), '1.0', "version_c2g('v1.0')";
is vc2g('1._0'), '1.0', "version_c2g('1._0')";
is vc2g('1_1'), '1_p1', "version_c2g('1_1')";
is vc2g('1_.1'), '1_p1', "version_c2g('1_.1')";
is vc2g('1_.1._2'), '1_p1.2', "version_c2g('1_.1._2')";
-is vc2g('1_.1_2'), '1_p1.2', "version_c2g('1_.1_2')";
-is vc2g('1_.1_.2'), '1_p1.2', "version_c2g('1_.1_.2')";
-
-*vgcmp = \&CPANPLUS::Dist::Gentoo::Maps::version_gcmp;
-
-eval { vgcmp('dongs', 1) };
-like $@, qr/Couldn't\s+parse\s+version\s+string/, "version_gcmp('dongs', 1)";
-
-eval { vgcmp(1, 'dongs') };
-like $@, qr/Couldn't\s+parse\s+version\s+string/, "version_gcmp(1, 'dongs')";
-
-is vgcmp(undef, 0), 0, 'version_gcmp(undef, 0)';
-is vgcmp(0, 0), 0, 'version_gcmp(0, 0)';
-is vgcmp(1, 0), 1, 'version_gcmp(1, 0)';
-is vgcmp(0, 1), -1, 'version_gcmp(0, 1)';
-is vgcmp(1, 1), 0, 'version_gcmp(1, 1)';
-
-is vgcmp('1.0', 1), 0, "version_gcmp('1.0', 1)";
-is vgcmp('1.1', 1), 1, "version_gcmp('1.1', 1)";
-is vgcmp('1.1', '1.0'), 1, "version_gcmp('1.1', '1.0')";
-is vgcmp(1, '1.0'), 0, "version_gcmp(1, '1.0')";
-is vgcmp(1, '1.1'), -1, "version_gcmp(1, '1.1')";
-is vgcmp('1.0', '1.1'), -1, "version_gcmp('1.0', '1.1')";
-
-is vgcmp('1.0_p0', '1.0_p0'), 0, "version_gcmp('1.0_p0', '1.0_p0')";
-is vgcmp('1.0_p0', '1.0_p1'), -1, "version_gcmp('1.0_p0', '1.0_p1')";
-is vgcmp('1.1_p0', '1.0_p1'), 1, "version_gcmp('1.1_p0', '1.0_p1')";
-is vgcmp('1.1_p0', '1.1_p0.1'), -1, "version_gcmp('1.1_p0', '1.1_p0.1')";
-is vgcmp('1.1_p0.1', '1.1_p0.1'), 0, "version_gcmp('1.1_p0.1', '1.1_p0.1')";
-
-is vgcmp('1.2_p0-r0', '1.2_p0'), 0, "version_gcmp('1.2_p0-r0', '1.2_p0')";
-is vgcmp('1.2_p0-r1', '1.2_p0'), 1, "version_gcmp('1.2_p0-r1', '1.2_p0')";
-is vgcmp('1.2-r0', '1.2_p0'), 0, "version_gcmp('1.2-r0', '1.2_p0')";
-is vgcmp('1.2-r1', '1.2_p0'), 1, "version_gcmp('1.2-r1', '1.2_p0')";
-is vgcmp('1.2-r1', '1.2_p1'), -1, "version_gcmp('1.2-r1', '1.2_p1')";
-is vgcmp('1.2-r2', '1.2_p1'), -1, "version_gcmp('1.2-r2', '1.2_p1')";
+is vc2g('1_.1_2'), '1_p12', "version_c2g('1_.1_2')";
+is vc2g('1_.1_.2'), '1_p12', "version_c2g('1_.1_.2')";
+
+for my $test ([ '0.12' => '0.12' ], [ '0.1234' => '0.12.34' ]) {
+ my @dists = qw<
+ ExtUtils-CBuilder
+ ExtUtils-ParseXS
+ Module-Build
+ Time-HiRes
+ Time-Local
+ >;
+ for my $dist (@dists) {
+ is vc2g($dist, $test->[0]), $test->[1], "'version_c2g('$dist', '$test->[0]')";
+ }
+}
+
+*pvc2g = \&CPANPLUS::Dist::Gentoo::Maps::perl_version_c2g;
+
+is pvc2g('5'), '5', "perl_version_c2g('5')";
+is pvc2g('5.1'), '5.1', "perl_version_c2g('5.1')";
+is pvc2g('5.01'), '5.10', "perl_version_c2g('5.01')";
+is pvc2g('5.10'), '5.10', "perl_version_c2g('5.10')";
+is pvc2g('5.1.2'), '5.1.2', "perl_version_c2g('5.1.2')";
+is pvc2g('5.01.2'), '5.1.2', "perl_version_c2g('5.01.2')";
+is pvc2g('5.01002'), '5.10.20', "perl_version_c2g('5.01002')";