[Encode] UTF-7 Support
[p5sagit/p5-mst-13.2.git] / lib / version.t
index 4d4a791..4e34e56 100644 (file)
@@ -1,11 +1,12 @@
+#! /usr/local/perl -w
 # Before `make install' is performed this script should be runnable with
 # `make test'. After `make install' it should work as `perl test.pl'
-# $Revision: 2.0 $
+# $Revision: 2.3 $
 
 #########################
 
-use Test::More tests => 60;
-use_ok(version); # If we made it this far, we are ok.
+use Test::More tests => 71;
+use_ok("version"); # If we made it this far, we are ok.
 
 my ($version, $new_version);
 #########################
@@ -13,12 +14,24 @@ my ($version, $new_version);
 # Insert your test code below, the Test module is use()ed here so read
 # its man page ( perldoc Test ) for help writing this test script.
 
+# Test bare number processing
+diag "tests with bare numbers" unless $ENV{PERL_CORE};
+$version = new version 5.005_03;
+is ( "$version" , "5.5.30" , '5.005_03 eq 5.5.30' );
+$version = new version 1.23;
+is ( "$version" , "1.230" , '1.23 eq "1.230"' );
+
+# Test quoted number processing
+diag "tests with quoted numbers" unless $ENV{PERL_CORE};
+$version = new version "5.005_03";
+is ( "$version" , "5.5_3" , '"5.005_03" eq "5.5_3"' );
+$version = new version "v1.23";
+is ( "$version" , "1.23" , '"v1.23" eq "1.23"' );
+
 # Test stringify operator
 diag "tests with stringify" unless $ENV{PERL_CORE};
 $version = new version "5.005";
 is ( "$version" , "5.5" , '5.005 eq 5.5' );
-$version = new version "5.005_03";
-is ( "$version" , "5.5.30" , 'perl version 5.005_03 eq 5.5.30' );
 $version = new version "5.006.001";
 is ( "$version" , "5.6.1" , '5.006.001 eq 5.6.1' );
 $version = new version "1.2.3_4";
@@ -34,6 +47,16 @@ eval {my $version = new version "1.2_3.4";};
 like($@, qr/underscores before decimal/,
     "Invalid version format (underscores before decimal)");
 
+$version = new version "99 and 44/100 pure";
+ok ("$version" eq "99.0", '$version eq "99.0"');
+ok ($version->numify == 99.0, '$version->numify == 99.0');
+
+$version = new version "something";
+ok (defined $version, 'defined $version');
+
+# reset the test object to something reasonable
+$version = new version "1.2.3";
+
 # Test boolean operator
 ok ($version, 'boolean');
 
@@ -135,6 +158,19 @@ ok ( $version > $new_version, '$version > $new_version' );
 ok ( $new_version < $version, '$new_version < $version' );
 ok ( $version != $new_version, '$version != $new_version' );
 
+diag "test implicit [in]equality" unless $ENV{PERL_CORE};
+$version = new version "v1.2";
+$new_version = new version "1.2.0";
+ok ( $version == $new_version, '$version == $new_version' );
+$new_version = new version "1.2_0";
+ok ( $version == $new_version, '$version == $new_version' );
+$new_version = new version "1.2.1";
+ok ( $version < $new_version, '$version < $new_version' );
+$new_version = new version "1.2_1";
+ok ( $version < $new_version, '$version < $new_version' );
+$new_version = new version "1.1.999";
+ok ( $version > $new_version, '$version > $new_version' );
+
 # that which is not expressly permitted is forbidden
 diag "forbidden operations" unless $ENV{PERL_CORE};
 ok ( !eval { $version++ }, "noop ++" );
@@ -147,12 +183,12 @@ ok ( !eval { abs($version) }, "noop abs" );
 diag "Replacement UNIVERSAL::VERSION tests" unless $ENV{PERL_CORE};
 
 # we know this file is here since we require it ourselves
-$version = $Test::More::VERSION;
+$version = new version $Test::More::VERSION;
 eval "use Test::More $version";
 unlike($@, qr/Test::More version $version required/,
        'Replacement eval works with exact version');
 
-$version += 0.01; # this should fail even with old UNIVERSAL::VERSION
+$version = new version $Test::More::VERSION+0.01; # this should fail even with old UNIVERSAL::VERSION
 eval "use Test::More $version";
 like($@, qr/Test::More version $version required/,
        'Replacement eval works with incremented version');