This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade bignum from version 0.41 to 0.42
authorSteve Hay <steve.m.hay@googlemail.com>
Tue, 5 Jan 2016 13:12:45 +0000 (13:12 +0000)
committerSteve Hay <steve.m.hay@googlemail.com>
Tue, 5 Jan 2016 13:12:45 +0000 (13:12 +0000)
31 files changed:
MANIFEST
Porting/Maintainers.pl
cpan/bignum/lib/Math/BigFloat/Trace.pm
cpan/bignum/lib/Math/BigInt/Trace.pm
cpan/bignum/lib/bigint.pm
cpan/bignum/lib/bignum.pm
cpan/bignum/lib/bigrat.pm
cpan/bignum/t/auth-bigint-hex.t [deleted file]
cpan/bignum/t/auth-bigint-oct.t [deleted file]
cpan/bignum/t/big_e_pi.t
cpan/bignum/t/bigexp.t
cpan/bignum/t/bigint.t
cpan/bignum/t/bignum.t
cpan/bignum/t/bigrat.t
cpan/bignum/t/bii_e_pi.t
cpan/bignum/t/biinfnan.t
cpan/bignum/t/bir_e_pi.t
cpan/bignum/t/bn_lite.t
cpan/bignum/t/bninfnan.t
cpan/bignum/t/br_lite.t
cpan/bignum/t/brinfnan.t
cpan/bignum/t/in_effect.t
cpan/bignum/t/infnan.inc
cpan/bignum/t/option_a.t
cpan/bignum/t/option_l.t
cpan/bignum/t/option_p.t
cpan/bignum/t/overrides.t
cpan/bignum/t/ratopt_a.t
cpan/bignum/t/scope_f.t
cpan/bignum/t/scope_i.t
cpan/bignum/t/scope_r.t

index faa38ac..7b598e7 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -141,8 +141,6 @@ cpan/bignum/lib/bignum.pm           bignum
 cpan/bignum/lib/bigrat.pm              bigrat
 cpan/bignum/lib/Math/BigFloat/Trace.pm bignum tracing
 cpan/bignum/lib/Math/BigInt/Trace.pm   bignum tracing
-cpan/bignum/t/auth-bigint-hex.t                See if bignum works
-cpan/bignum/t/auth-bigint-oct.t                See if bignum works
 cpan/bignum/t/big_e_pi.t               See if bignum exports e() and PI()
 cpan/bignum/t/bigexp.t                 See if bignum works
 cpan/bignum/t/bigint.t                 See if bigint works
index cf0a502..608f2e7 100755 (executable)
@@ -184,10 +184,11 @@ use File::Glob qw(:case);
     },
 
     'bignum' => {
-        'DISTRIBUTION' => 'PJACKLAM/bignum-0.41.tar.gz',
+        'DISTRIBUTION' => 'PJACKLAM/bignum-0.42.tar.gz',
         'FILES'        => q[cpan/bignum],
         'EXCLUDED'     => [
             qr{^inc/Module/},
+            qr{^t/author-},
             qw( t/00sig.t
                 t/01load.t
                 t/02pod.t
index a034615..5e043f5 100644 (file)
@@ -1,18 +1,19 @@
-#!/usr/bin/perl -w
+#!perl
 
 package Math::BigFloat::Trace;
 
-require 5.005_02;
+require 5.006;
 use strict;
+use warnings;
 
 use Exporter;
 use Math::BigFloat;
-use vars qw($VERSION @ISA $PACKAGE @EXPORT_OK
-            $accuracy $precision $round_mode $div_scale);
 
-@ISA = qw(Exporter Math::BigFloat);
+our ($PACKAGE, @EXPORT_OK, $accuracy, $precision, $round_mode, $div_scale);
 
-$VERSION = '0.41';
+our @ISA = qw(Exporter Math::BigFloat);
+
+our $VERSION = '0.42';
 
 use overload;                   # inherit overload from BigFloat
 
index b43f36e..646c05f 100644 (file)
@@ -1,18 +1,19 @@
-#!/usr/bin/perl -w
+#!perl
 
 package Math::BigInt::Trace;
 
-require 5.005_02;
+require 5.006;
 use strict;
+use warnings;
 
 use Exporter;
 use Math::BigInt;
-use vars qw($VERSION @ISA $PACKAGE @EXPORT_OK
-            $accuracy $precision $round_mode $div_scale);
 
-@ISA = qw(Exporter Math::BigInt);
+our ($PACKAGE, @EXPORT_OK, $accuracy, $precision, $round_mode, $div_scale);
 
-$VERSION = '0.41';
+our @ISA = qw(Exporter Math::BigInt);
+
+our $VERSION = '0.42';
 
 use overload;                   # inherit overload from BigInt
 
@@ -22,8 +23,8 @@ $round_mode = 'even';
 $div_scale = 40;
 
 sub new {
-    my $proto  = shift;
-    my $class  = ref($proto) || $proto;
+    my $proto = shift;
+    my $class = ref($proto) || $proto;
 
     my $value = shift;
     my $a = $accuracy;
index 71009a4..a47191e 100644 (file)
@@ -1,13 +1,16 @@
 package bigint;
+
 use 5.006;
+use strict;
+use warnings;
+
+our $VERSION = '0.42';
 
-$VERSION = '0.41';
 use Exporter;
-@ISA            = qw( Exporter );
-@EXPORT_OK      = qw( PI e bpi bexp hex oct );
-@EXPORT         = qw( inf NaN );
+our @ISA            = qw( Exporter );
+our @EXPORT_OK      = qw( PI e bpi bexp hex oct );
+our @EXPORT         = qw( inf NaN );
 
-use strict;
 use overload;
 
 ##############################################################################
@@ -15,7 +18,7 @@ use overload;
 # These are all alike, and thus faked by AUTOLOAD
 
 my @faked = qw/round_mode accuracy precision div_scale/;
-use vars qw/$VERSION $AUTOLOAD $_lite/;         # _lite for testsuite
+our ($AUTOLOAD, $_lite);        # _lite for testsuite
 
 sub AUTOLOAD {
     my $name = $AUTOLOAD;
@@ -371,6 +374,8 @@ sub bexp ($$) {
 
 __END__
 
+=pod
+
 =head1 NAME
 
 bigint - Transparent BigInteger support for Perl
index 9387ff0..90d5db5 100644 (file)
@@ -1,13 +1,16 @@
 package bignum;
+
 use 5.006;
+use strict;
+use warnings;
+
+our $VERSION = '0.42';
 
-$VERSION = '0.41';
 use Exporter;
-@ISA            = qw( bigint );
-@EXPORT_OK      = qw( PI e bexp bpi hex oct );
-@EXPORT         = qw( inf NaN );
+our @ISA            = qw( bigint );
+our @EXPORT_OK      = qw( PI e bpi bexp hex oct );
+our @EXPORT         = qw( inf NaN );
 
-use strict;
 use overload;
 use bigint ();
 
@@ -23,12 +26,12 @@ BEGIN {
 # These are all alike, and thus faked by AUTOLOAD
 
 my @faked = qw/round_mode accuracy precision div_scale/;
-use vars qw/$VERSION $AUTOLOAD $_lite/;         # _lite for testsuite
+our ($AUTOLOAD, $_lite);        # _lite for testsuite
 
 sub AUTOLOAD {
     my $name = $AUTOLOAD;
 
-    $name =~ s/.*:://;    # split package
+    $name =~ s/.*:://;          # split package
     no strict 'refs';
     foreach my $n (@faked) {
         if ($n eq $name) {
@@ -207,7 +210,7 @@ sub import {
 
 sub PI () { Math::BigFloat->new('3.141592653589793238462643383279502884197'); }
 sub e () { Math::BigFloat->new('2.718281828459045235360287471352662497757'); }
-sub bpi ($) { Math::BigFloat::bpi(@_); }
+sub bpi ($) { Math::BigFloat->bpi(@_); }
 sub bexp ($$) {
     my $x = Math::BigFloat->new($_[0]);
     $x->bexp($_[1]);
@@ -217,6 +220,8 @@ sub bexp ($$) {
 
 __END__
 
+=pod
+
 =head1 NAME
 
 bignum - Transparent BigNumber support for Perl
index 11cb6cd..79fe84d 100644 (file)
@@ -1,13 +1,16 @@
 package bigrat;
+
 use 5.006;
+use strict;
+use warnings;
 
-$VERSION = '0.41';
-require Exporter;
-@ISA            = qw( bigint );
-@EXPORT_OK      = qw( PI e bpi bexp hex oct );
-@EXPORT         = qw( inf NaN );
+our $VERSION = '0.42';
+
+use Exporter;
+our @ISA            = qw( bigint );
+our @EXPORT_OK      = qw( PI e bpi bexp hex oct );
+our @EXPORT         = qw( inf NaN );
 
-use strict;
 use overload;
 use bigint ();
 
@@ -23,7 +26,7 @@ BEGIN {
 # These are all alike, and thus faked by AUTOLOAD
 
 my @faked = qw/round_mode accuracy precision div_scale/;
-use vars qw/$VERSION $AUTOLOAD $_lite/; # _lite for testsuite
+our ($AUTOLOAD, $_lite);        # _lite for testsuite
 
 sub AUTOLOAD {
     my $name = $AUTOLOAD;
@@ -194,11 +197,11 @@ sub import {
 }
 
 sub PI () { Math::BigFloat->new('3.141592653589793238462643383279502884197'); }
-sub e () { Math::BigFloat->new('2.718281828459045235360287471352662497757'); }
+sub e  () { Math::BigFloat->new('2.718281828459045235360287471352662497757'); }
 
 sub bpi ($) {
     local $Math::BigFloat::upgrade;
-    Math::BigFloat::bpi(@_);
+    Math::BigFloat->bpi(@_);
 }
 
 sub bexp ($$) {
@@ -211,6 +214,8 @@ sub bexp ($$) {
 
 __END__
 
+=pod
+
 =head1 NAME
 
 bigrat - Transparent BigNumber/BigRational support for Perl
diff --git a/cpan/bignum/t/auth-bigint-hex.t b/cpan/bignum/t/auth-bigint-hex.t
deleted file mode 100644 (file)
index 76a38de..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#!perl
-
-BEGIN {
-    unless ($ENV{AUTHOR_TESTING}) {
-        require Test::More;
-        Test::More::plan(skip_all => 'these tests are for release candidate testing');
-    }
-}
-
-use strict;
-use warnings;
-
-use Test::More tests => 507068;
-
-use Algorithm::Combinatorics qw< variations >;
-
-use bigint;
-
-use Test::More;
-
-my $elements = ['0', 'b', 'x', '1', '1', '_', '_', '9', 'z'];
-
-for my $k (0 .. @$elements) {
-    my $seen = {};
-    for my $variation (variations($elements, $k)) {
-        my $str = join "", @$variation;
-        next if $seen -> {$str}++;
-        print qq|#\n# hex("$str")\n#\n|;
-
-        my $i;
-        my @warnings;
-        local $SIG{__WARN__} = sub {
-            my $warning = shift;
-            $warning =~ s/ at .*\z//s;
-            $warnings[$i] = $warning;
-        };
-
-        $i = 0;
-        my $want_val  = CORE::hex("$str");
-        my $want_warn = $warnings[$i];
-
-        $i = 1;
-        my $got_val   = bigint::hex("$str");
-        my $got_warn  = $warnings[$i];
-
-        is($got_val,  $want_val,  qq|hex("$str") (output)|);
-        is($got_warn, $want_warn, qq|hex("$str") (warning)|);
-    }
-}
diff --git a/cpan/bignum/t/auth-bigint-oct.t b/cpan/bignum/t/auth-bigint-oct.t
deleted file mode 100644 (file)
index 06ecffc..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#!perl
-
-BEGIN {
-    unless ($ENV{AUTHOR_TESTING}) {
-        require Test::More;
-        Test::More::plan(skip_all => 'these tests are for release candidate testing');
-    }
-}
-
-use strict;
-use warnings;
-
-use Test::More tests => 507068;
-
-use Algorithm::Combinatorics qw< variations >;
-
-use bigint;
-
-use Test::More;
-
-my $elements = ['0', 'b', 'x', '1', '1', '_', '_', '9', 'z'];
-
-for my $k (0 .. @$elements) {
-    my $seen = {};
-    for my $variation (variations($elements, $k)) {
-        my $str = join "", @$variation;
-        next if $seen -> {$str}++;
-        print qq|#\n# oct("$str")\n#\n|;
-
-        my $i;
-        my @warnings;
-        local $SIG{__WARN__} = sub {
-            my $warning = shift;
-            $warning =~ s/ at .*\z//s;
-            $warnings[$i] = $warning;
-        };
-
-        $i = 0;
-        my $want_val  = CORE::oct("$str");
-        my $want_warn = $warnings[$i];
-
-        $i = 1;
-        my $got_val   = bigint::oct("$str");
-        my $got_warn  = $warnings[$i];
-
-        is($got_val,  $want_val,  qq|hex("$str") (output)|);
-        is($got_warn, $want_warn, qq|hex("$str") (warning)|);
-    }
-}
index 24f0843..06b4b08 100644 (file)
@@ -1,15 +1,17 @@
-#!/usr/bin/perl -w
+#!perl
 
 ###############################################################################
 # test for e() and PI() exports
 
 use strict;
+use warnings;
+
 use Test::More tests => 4;
 
 use bignum qw/e PI bexp bpi/;
 
-is (e, "2.718281828459045235360287471352662497757", 'e');
-is (PI, "3.141592653589793238462643383279502884197", 'PI');
+is(e,  "2.718281828459045235360287471352662497757", 'e');
+is(PI, "3.141592653589793238462643383279502884197", 'PI');
 
-is (bexp(1,10), "2.718281828", 'e');
-is (bpi(10), "3.141592654", 'PI');
+is(bexp(1, 10), "2.718281828", 'bexp(1, 10)');
+is(bpi(10),     "3.141592654", 'bpi(10)');
index d9da12c..03355a5 100644 (file)
@@ -1,18 +1,20 @@
-#!/usr/bin/perl -w
+#!perl
 
 ###############################################################################
 # test for bug #18025: bignum/bigrat can lead to a number that is both 1 and 0
 
 use strict;
+use warnings;
+
 use Test::More tests => 4;
 
 use bignum;
 
-my $lnev = -7 / (10**17);
-my $ev=exp($lnev);
+my $ln_ev = -7 / (10 ** 17);
+my $ev    = exp($ln_ev);
 
-is( sprintf('%0.5f',$ev) , '1.00000', '($ev) is approx. 1' );
-is( sprintf('%0.5f',1-$ev) , '0.00000', '(1-$ev) is approx. 0' );
-is( sprintf('%0.5f',1-"$ev") , '0.00000', '(1-"$ev") is approx. 0' );
+is(sprintf('%0.5f', $ev),       '1.00000', '($ev) is approx. 1');
+is(sprintf('%0.5f', 1 - $ev),   '0.00000', '(1-$ev) is approx. 0');
+is(sprintf('%0.5f', 1 - "$ev"), '0.00000', '(1-"$ev") is approx. 0');
 
-cmp_ok( $ev, '!=', 0, '$ev should not equal 0');
+cmp_ok($ev, '!=', 0, '$ev should not equal 0');
index e2df70e..4af592f 100644 (file)
@@ -1,7 +1,10 @@
-#!/usr/bin/perl -w
+#!perl
 
 ###############################################################################
 
+use strict;
+use warnings;
+
 use Test::More tests => 51;
 
 use bigint qw/hex oct/;
@@ -9,7 +12,7 @@ use bigint qw/hex oct/;
 ###############################################################################
 # _constant tests
 
-foreach (qw/ 
+foreach (qw/
   123:123
   123.4:123
   1.4:1
@@ -28,75 +31,78 @@ foreach (qw/
   1234.567e+4:1234567E1
   1234.567e+6:1234567E3
   /)
-  {
-  my ($x,$y) = split /:/;
-  print "# Try $x\n";
-  is (bigint::_float_constant("$x"),"$y");
-  }
+{
+    my ($x, $y) = split /:/;
+    is(bigint::_float_constant("$x"), "$y",
+       qq|bigint::_float_constant("$x") = $y|);
+}
 
-foreach (qw/ 
+foreach (qw/
   0100:64
   0200:128
   0x100:256
   0b1001:9
   /)
-  {
-  my ($x,$y) = split /:/;
-  print "# Try $x\n";
-  is (bigint::_binary_constant("$x"),"$y");
-  }
+{
+    my ($x, $y) = split /:/;
+    is(bigint::_binary_constant("$x"), "$y",
+       qq|bigint::_binary_constant("$x") = "$y")|);
+}
 
 ###############################################################################
 # general tests
 
-my $x = 5; like (ref($x), qr/^Math::BigInt/);          # :constant
-
-# todo:  is (2 + 2.5,4.5);                             # should still work
-# todo: $x = 2 + 3.5; is (ref($x),'Math::BigFloat');
+my $x = 5;
+like(ref($x), qr/^Math::BigInt/, '$x = 5 makes $x a Math::BigInt'); # :constant
 
-$x = 2 ** 255; like (ref($x), qr/^Math::BigInt/);
+# todo:  is(2 + 2.5, 4.5);                              # should still work
+# todo: $x = 2 + 3.5; is(ref($x), 'Math::BigFloat');
 
-is (12->bfac(),479001600);
-is (9/4,2);
+$x = 2 ** 255;
+like(ref($x), qr/^Math::BigInt/, '$x = 2 ** 255 makes $x a Math::BigInt');
 
-is (4.5+4.5,8);                                        # truncate
-like (ref(4.5+4.5), qr/^Math::BigInt/);
+is(12->bfac(), 479001600, '12->bfac() = 479001600');
+is(9/4, 2, '9/4 = 2');
 
+is(4.5 + 4.5, 8, '4.5 + 4.5 = 2');                         # truncate
+like(ref(4.5 + 4.5), qr/^Math::BigInt/, '4.5 + 4.5 makes a Math::BigInt');
 
 ###############################################################################
 # accuracy and precision
 
-is ('bigint'->accuracy(), undef);
-is ('bigint'->accuracy(12),12);
-is ('bigint'->accuracy(),12);
+is(bigint->accuracy(),        undef, 'get accuracy');
+is(bigint->accuracy(12),      12,    'set accuracy to 12');
+is(bigint->accuracy(),        12,    'get accuracy again');
 
-is ('bigint'->precision(), undef);
-is ('bigint'->precision(12),12);
-is ('bigint'->precision(),12);
+is(bigint->precision(),       undef, 'get precision');
+is(bigint->precision(12),     12,    'set precision to 12');
+is(bigint->precision(),       12,    'get precision again');
 
-is ('bigint'->round_mode(),'even');
-is ('bigint'->round_mode('odd'),'odd');
-is ('bigint'->round_mode(),'odd');
+is(bigint->round_mode(),      'even', 'get round mode');
+is(bigint->round_mode('odd'), 'odd',  'set round mode');
+is(bigint->round_mode(),      'odd',  'get round mode again');
 
 ###############################################################################
 # hex() and oct()
 
-my $c = 'Math::BigInt';
-
-is (ref(hex(1)), $c);
-is (ref(hex(0x1)), $c);
-is (ref(hex("af")), $c);
-is (hex("af"), Math::BigInt->new(0xaf));
-is (ref(hex("0x1")), $c);
-
-is (ref(oct("0x1")), $c);
-is (ref(oct("01")), $c);
-is (ref(oct("0b01")), $c);
-is (ref(oct("1")), $c);
-is (ref(oct(" 1")), $c);
-is (ref(oct(" 0x1")), $c);
-
-is (ref(oct(0x1)), $c);
-is (ref(oct(01)), $c);
-is (ref(oct(0b01)), $c);
-is (ref(oct(1)), $c);
+my $class = 'Math::BigInt';
+
+is(ref(hex(1)),      $class, qq|ref(hex(1)) = $class|);
+is(ref(hex(0x1)),    $class, qq|ref(hex(0x1)) = $class|);
+is(ref(hex("af")),   $class, qq|ref(hex("af")) = $class|);
+is(ref(hex("0x1")),  $class, qq|ref(hex("0x1")) = $class|);
+
+is(hex("af"), Math::BigInt->new(0xaf),
+   qq|hex("af") = Math::BigInt->new(0xaf)|);
+
+is(ref(oct("0x1")),  $class, qq|ref(oct("0x1")) = $class|);
+is(ref(oct("01")),   $class, qq|ref(oct("01")) = $class|);
+is(ref(oct("0b01")), $class, qq|ref(oct("0b01")) = $class|);
+is(ref(oct("1")),    $class, qq|ref(oct("1")) = $class|);
+is(ref(oct(" 1")),   $class, qq|ref(oct(" 1")) = $class|);
+is(ref(oct(" 0x1")), $class, qq|ref(oct(" 0x1")) = $class|);
+
+is(ref(oct(0x1)),    $class, qq|ref(oct(0x1)) = $class|);
+is(ref(oct(01)),     $class, qq|ref(oct(01)) = $class|);
+is(ref(oct(0b01)),   $class, qq|ref(oct(0b01)) = $class|);
+is(ref(oct(1)),      $class, qq|ref(oct(1)) = $class|);
index 562564d..6bdd5bb 100644 (file)
@@ -10,65 +10,74 @@ use bignum qw/oct hex/;
 ###############################################################################
 # general tests
 
-my $x = 5; like (ref($x), qr/^Math::BigInt/);          # :constant
+my $x = 5;
+like(ref($x), qr/^Math::BigInt/, '$x = 5 makes $x a Math::BigInt'); # :constant
 
-is (2 + 2.5,4.5);
-$x = 2 + 3.5; is (ref($x),'Math::BigFloat');
-is (2 * 2.1,4.2);
-$x = 2 + 2.1; is (ref($x),'Math::BigFloat');
+is(2 + 2.5, 4.5, '2 + 2.5 = 4.5');
+$x = 2 + 3.5;
+is(ref($x), 'Math::BigFloat', '$x = 2 + 3.5 makes $x a Math::BigFloat');
 
-$x = 2 ** 255; like (ref($x), qr/^Math::BigInt/);
+is(2 * 2.1, 4.2, '2 * 2.1 = 4.2');
+$x = 2 + 2.1;
+is(ref($x), 'Math::BigFloat', '$x = 2 + 2.1 makes $x a Math::BigFloat');
+
+$x = 2 ** 255;
+like(ref($x), qr/^Math::BigInt/, '$x = 2 ** 255 makes $x a Math::BigInt');
 
 # see if Math::BigInt constant and upgrading works
-is (Math::BigInt::bsqrt('12'),'3.464101615137754587054892683011744733886');
-is (sqrt(12),'3.464101615137754587054892683011744733886');
+is(Math::BigInt::bsqrt("12"), '3.464101615137754587054892683011744733886',
+   'Math::BigInt::bsqrt("12")');
+is(sqrt(12), '3.464101615137754587054892683011744733886',
+   'sqrt(12)');
 
-is (2/3,"0.6666666666666666666666666666666666666667");
+is(2/3, "0.6666666666666666666666666666666666666667", '2/3');
 
-#is (2 ** 0.5, 'NaN'); # should be sqrt(2);
+#is(2 ** 0.5, 'NaN');   # should be sqrt(2);
 
-is (12->bfac(),479001600);
+is(12->bfac(), 479001600, '12->bfac() = 479001600');
 
 # see if Math::BigFloat constant works
 
-#                     0123456789          0123456789   <- default 40
+#                     0123456789          0123456789    <- default 40
 #           0123456789          0123456789
-is (1/3, '0.3333333333333333333333333333333333333333');
+is(1/3, '0.3333333333333333333333333333333333333333', '1/3');
 
 ###############################################################################
 # accuracy and precision
 
-is (bignum->accuracy(), undef);
-is (bignum->accuracy(12),12);
-is (bignum->accuracy(),12);
+is(bignum->accuracy(),        undef,  'get accuracy');
+is(bignum->accuracy(12),      12,     'set accuracy to 12');
+is(bignum->accuracy(),        12,     'get accuracy again');
 
-is (bignum->precision(), undef);
-is (bignum->precision(12),12);
-is (bignum->precision(),12);
+is(bignum->precision(),       undef,  'get precision');
+is(bignum->precision(12),     12,     'set precision to 12');
+is(bignum->precision(),       12,     'get precision again');
 
-is (bignum->round_mode(),'even');
-is (bignum->round_mode('odd'),'odd');
-is (bignum->round_mode(),'odd');
+is(bignum->round_mode(),      'even', 'get round mode');
+is(bignum->round_mode('odd'), 'odd',  'set round mode');
+is(bignum->round_mode(),      'odd',  'get round mode again');
 
 ###############################################################################
 # hex() and oct()
 
-my $c = 'Math::BigInt';
-
-is (ref(hex(1)), $c);
-is (ref(hex(0x1)), $c);
-is (ref(hex("af")), $c);
-is (hex("af"), Math::BigInt->new(0xaf));
-is (ref(hex("0x1")), $c);
-
-is (ref(oct("0x1")), $c);
-is (ref(oct("01")), $c);
-is (ref(oct("0b01")), $c);
-is (ref(oct("1")), $c);
-is (ref(oct(" 1")), $c);
-is (ref(oct(" 0x1")), $c);
-
-is (ref(oct(0x1)), $c);
-is (ref(oct(01)), $c);
-is (ref(oct(0b01)), $c);
-is (ref(oct(1)), $c);
+my $class = 'Math::BigInt';
+
+is(ref(hex(1)),      $class, qq|ref(hex(1)) = $class|);
+is(ref(hex(0x1)),    $class, qq|ref(hex(0x1)) = $class|);
+is(ref(hex("af")),   $class, qq|ref(hex("af")) = $class|);
+is(ref(hex("0x1")),  $class, qq|ref(hex("0x1")) = $class|);
+
+is(hex("af"), Math::BigInt->new(0xaf),
+   qq|hex("af") = Math::BigInt->new(0xaf)|);
+
+is(ref(oct("0x1")),  $class, qq|ref(oct("0x1")) = $class|);
+is(ref(oct("01")),   $class, qq|ref(oct("01")) = $class|);
+is(ref(oct("0b01")), $class, qq|ref(oct("0b01")) = $class|);
+is(ref(oct("1")),    $class, qq|ref(oct("1")) = $class|);
+is(ref(oct(" 1")),   $class, qq|ref(oct(" 1")) = $class|);
+is(ref(oct(" 0x1")), $class, qq|ref(oct(" 0x1")) = $class|);
+
+is(ref(oct(0x1)),    $class, qq|ref(oct(0x1)) = $class|);
+is(ref(oct(01)),     $class, qq|ref(oct(01)) = $class|);
+is(ref(oct(0b01)),   $class, qq|ref(oct(0b01)) = $class|);
+is(ref(oct(1)),      $class, qq|ref(oct(1)) = $class|);
index 7f40d62..ac6fc0c 100644 (file)
@@ -1,8 +1,10 @@
-#!/usr/bin/perl -w
+#!perl
 
 ###############################################################################
 
 use strict;
+use warnings;
+
 use Test::More tests => 40;
 
 use bigrat qw/oct hex/;
@@ -10,69 +12,73 @@ use bigrat qw/oct hex/;
 ###############################################################################
 # general tests
 
-my $x = 5; like (ref($x), qr/^Math::BigInt/);          # :constant
+my $x = 5;
+like(ref($x), qr/^Math::BigInt/, '$x = 5 makes $x a Math::BigInt'); # :constant
 
-# todo:  is (2 + 2.5,4.5);                             # should still work
-# todo: $x = 2 + 3.5; is (ref($x),'Math::BigFloat');
+# todo:  is(2 + 2.5, 4.5);                             # should still work
+# todo: $x = 2 + 3.5; is(ref($x), 'Math::BigFloat');
 
-$x = 2 ** 255; like (ref($x), qr/^Math::BigInt/);
+$x = 2 ** 255;
+like(ref($x), qr/^Math::BigInt/, '$x = 2 ** 255 makes $x a Math::BigInt');
 
 # see if Math::BigRat constant works
-is (1/3, '1/3');
-is (1/4+1/3,'7/12');
-is (5/7+3/7,'8/7');
+is(1/3,         '1/3',    qq|1/3 = '1/3'|);
+is(1/4+1/3,     '7/12',   qq|1/4+1/3 = '7/12'|);
+is(5/7+3/7,     '8/7',    qq|5/7+3/7 = '8/7'|);
 
-is (3/7+1,'10/7');
-is (3/7+1.1,'107/70');
-is (3/7+3/7,'6/7');
+is(3/7+1,       '10/7',   qq|3/7+1 = '10/7'|);
+is(3/7+1.1,     '107/70', qq|3/7+1.1 = '107/70'|);
+is(3/7+3/7,     '6/7',    qq|3/7+3/7 = '6/7'|);
 
-is (3/7-1,'-4/7');
-is (3/7-1.1,'-47/70');
-is (3/7-2/7,'1/7');
+is(3/7-1,       '-4/7',   qq|3/7-1 = '-4/7'|);
+is(3/7-1.1,     '-47/70', qq|3/7-1.1 = '-47/70'|);
+is(3/7-2/7,     '1/7',    qq|3/7-2/7 = '1/7'|);
 
 # fails ?
-# is (1+3/7,'10/7');
+# is(1+3/7, '10/7', qq|1+3/7 = '10/7'|);
 
-is (1.1+3/7,'107/70');
-is (3/7*5/7,'15/49');
-is (3/7 / (5/7),'3/5');
-is (3/7 / 1,'3/7');
-is (3/7 / 1.5,'2/7');
+is(1.1+3/7,     '107/70', qq|1.1+3/7 = '107/70'|);
+is(3/7*5/7,     '15/49',  qq|3/7*5/7 = '15/49'|);
+is(3/7 / (5/7), '3/5',    qq|3/7 / (5/7) = '3/5'|);
+is(3/7 / 1,     '3/7',    qq|3/7 / 1 = '3/7'|);
+is(3/7 / 1.5,   '2/7',    qq|3/7 / 1.5 = '2/7'|);
 
 ###############################################################################
 # accuracy and precision
 
-is (bigrat->accuracy(), undef);
-is (bigrat->accuracy(12),12);
-is (bigrat->accuracy(),12);
+is(bigrat->accuracy(),        undef, 'get accuracy');
+is(bigrat->accuracy(12),      12,    'set accuracy to 12');
+is(bigrat->accuracy(),        12,    'get accuracy again');
 
-is (bigrat->precision(), undef);
-is (bigrat->precision(12),12);
-is (bigrat->precision(),12);
+is(bigrat->precision(),       undef, 'get precision');
+is(bigrat->precision(12),     12,    'set precision to 12');
+is(bigrat->precision(),       12,    'get precision again');
 
-is (bigrat->round_mode(),'even');
-is (bigrat->round_mode('odd'),'odd');
-is (bigrat->round_mode(),'odd');
+is(bigrat->round_mode(),      'even', 'get round mode');
+is(bigrat->round_mode('odd'), 'odd',  'set round mode');
+is(bigrat->round_mode(),      'odd',  'get round mode again');
 
 ###############################################################################
 # hex() and oct()
 
-my $c = 'Math::BigInt';
-
-is (ref(hex(1)), $c);
-is (ref(hex(0x1)), $c);
-is (ref(hex("af")), $c);
-is (hex("af"), Math::BigInt->new(0xaf));
-is (ref(hex("0x1")), $c);
-
-is (ref(oct("0x1")), $c);
-is (ref(oct("01")), $c);
-is (ref(oct("0b01")), $c);
-is (ref(oct("1")), $c);
-is (ref(oct(" 1")), $c);
-is (ref(oct(" 0x1")), $c);
-
-is (ref(oct(0x1)), $c);
-is (ref(oct(01)), $c);
-is (ref(oct(0b01)), $c);
-is (ref(oct(1)), $c);
+my $class = 'Math::BigInt';
+
+is(ref(hex(1)),      $class, qq|ref(hex(1)) = $class|);
+is(ref(hex(0x1)),    $class, qq|ref(hex(0x1)) = $class|);
+is(ref(hex("af")),   $class, qq|ref(hex("af")) = $class|);
+is(ref(hex("0x1")),  $class, qq|ref(hex("0x1")) = $class|);
+
+is(hex("af"), Math::BigInt->new(0xaf),
+   qq|hex("af") = Math::BigInt->new(0xaf)|);
+
+is(ref(oct("0x1")),  $class, qq|ref(oct("0x1")) = $class|);
+is(ref(oct("01")),   $class, qq|ref(oct("01")) = $class|);
+is(ref(oct("0b01")), $class, qq|ref(oct("0b01")) = $class|);
+is(ref(oct("1")),    $class, qq|ref(oct("1")) = $class|);
+is(ref(oct(" 1")),   $class, qq|ref(oct(" 1")) = $class|);
+is(ref(oct(" 0x1")), $class, qq|ref(oct(" 0x1")) = $class|);
+
+is(ref(oct(0x1)),    $class, qq|ref(oct(0x1)) = $class|);
+is(ref(oct(01)),     $class, qq|ref(oct(01)) = $class|);
+is(ref(oct(0b01)),   $class, qq|ref(oct(0b01)) = $class|);
+is(ref(oct(1)),      $class, qq|ref(oct(1)) = $class|);
index b47b4a8..d9e20b5 100644 (file)
@@ -1,16 +1,18 @@
-#!/usr/bin/perl -w
+#!perl
 
 ###############################################################################
 # test for e() and PI() exports
 
 use strict;
+use warnings;
+
 use Test::More tests => 5;
 
 use bigint qw/e PI bpi bexp/;
 
-is (e, "2", 'e');
-is (PI, "3", 'PI');
+is(e,  "2", 'e');
+is(PI, "3", 'PI');
 
-is (bexp(1,10), "2", 'e');
-is (bexp(3,10), "20", 'e');
-is (bpi(10), "3", 'PI');
+is(bexp(1, 10), "2",  'e');
+is(bexp(3, 10), "20", 'e');
+is(bpi(10),     "3",  'PI');
index bb9f41f..c334917 100644 (file)
@@ -1,11 +1,22 @@
-#!/usr/bin/perl -w
-
-###############################################################################
+#!perl
 
 use strict;
-use Test::More tests => 26;
+use warnings;
+
+use Test::More tests => 66;
 
 use bigint;
 
-require "t/infnan.inc";
+#require "t/infnan.inc";
+
+# The 'bigint'/'bignum'/'bigrat' pragma is lexical, so we can't 'require' or
+# 'do' the included file. Slurp the whole thing and 'eval' it.
+
+my $file = "t/infnan.inc";
+
+open FILE, $file or die "$file: can't open file for reading: $!";
+my $data = do { local $/; <FILE> };
+close FILE or die "$file: can't close file after reading: $!";
 
+eval $data;
+die $@ if $@;
index f8b347b..8305580 100644 (file)
@@ -1,17 +1,20 @@
-#!/usr/bin/perl -w
+#!perl
 
 ###############################################################################
 # test for e() and PI() exports
 
 use strict;
+use warnings;
+
 use Test::More tests => 4;
 
 use bigrat qw/e PI bexp bpi/;
 
-is (e, "2.718281828459045235360287471352662497757", 'e');
-is (PI, "3.141592653589793238462643383279502884197", 'PI');
+is(e,  "2.718281828459045235360287471352662497757", 'e');
+is(PI, "3.141592653589793238462643383279502884197", 'PI');
+
+# These tests should actually produce big rationals, but this is not yet
+# implemented.
 
-# these tests should actually produce big rationals, but this is not yet
-# implemented:
-is (bexp(1,10), "2.718281828", 'e');
-is (bpi(10), "3.141592654", 'PI');
+is(bexp(1, 10), "2.718281828", 'bexp(1, 10)');
+is(bpi(10),     "3.141592654", 'bpi(10)');
index c2a04cd..d26fe5c 100644 (file)
@@ -1,21 +1,20 @@
-#!/usr/bin/perl -w
+#!perl
 
 ###############################################################################
 
 use strict;
-use Test::More;
+use warnings;
 
-if (eval { require Math::BigInt::Lite; 1 })
-  {
-  plan (tests => 1);
-  # can use Lite, so let bignum try it
-  require bignum; bignum->import();
-  # can't get to work a ref(1+1) here, presumable because :constant phase
-  # already done
-  is ($bignum::_lite,1);
-  }
-else
-  {
-  plan skip_all => "no Math::BigInt::Lite";
-  }
+use Test::More;
 
+if (eval { require Math::BigInt::Lite; 1 }) {
+    plan tests => 1;
+    # can use Lite, so let bignum try it
+    require bignum;
+    bignum->import();
+    # can't get to work a ref(1+1) here, presumable because :constant phase
+    # already done
+    is($bignum::_lite, 1, '$bignum::_lite is 1');
+} else {
+    plan skip_all => "no Math::BigInt::Lite";
+}
index 45f83b9..e437ca1 100644 (file)
@@ -1,11 +1,22 @@
-#!/usr/bin/perl -w
-
-###############################################################################
+#!perl
 
 use strict;
-use Test::More tests => 26;
+use warnings;
+
+use Test::More tests => 66;
 
 use bignum;
 
-require "t/infnan.inc";
+#require "t/infnan.inc";
+
+# The 'bigint'/'bignum'/'bigrat' pragma is lexical, so we can't 'require' or
+# 'do' the included file. Slurp the whole thing and 'eval' it.
+
+my $file = "t/infnan.inc";
+
+open FILE, $file or die "$file: can't open file for reading: $!";
+my $data = do { local $/; <FILE> };
+close FILE or die "$file: can't close file after reading: $!";
 
+eval $data;
+die $@ if $@;
index 4e75356..79ac2c6 100644 (file)
@@ -1,21 +1,20 @@
-#!/usr/bin/perl -w
+#!perl
 
 ###############################################################################
 
 use strict;
-use Test::More;
+use warnings;
 
-if (eval { require Math::BigInt::Lite; 1 })
-  {
-  plan (tests => 1);
-  # can use Lite, so let bignum try it
-  require bigrat; bigrat->import();
-  # can't get to work a ref(1+1) here, presumable because :constant phase
-  # already done
-  is ($bigrat::_lite,1);
-  }
-else
-  {
-  plan (skip_all =>  "no Math::BigInt::Lite");
-  }
+use Test::More;
 
+if (eval { require Math::BigInt::Lite; 1 }) {
+    plan tests => 1;
+    # can use Lite, so let bignum try it
+    require bigrat;
+    bigrat->import();
+    # can't get to work a ref(1+1) here, presumable because :constant phase
+    # already done
+    is($bigrat::_lite, 1, '$bigrat::_lite is 1');
+} else {
+    plan skip_all => "no Math::BigInt::Lite";
+}
index ce7daa1..1be8164 100644 (file)
@@ -1,11 +1,22 @@
-#!/usr/bin/perl -w
-
-###############################################################################
+#!perl
 
 use strict;
-use Test::More tests => 26;
+use warnings;
+
+use Test::More tests => 66;
 
 use bigrat;
 
-require "t/infnan.inc";
+#require "t/infnan.inc";
+
+# The 'bigint'/'bignum'/'bigrat' pragma is lexical, so we can't 'require' or
+# 'do' the included file. Slurp the whole thing and 'eval' it.
+
+my $file = "t/infnan.inc";
+
+open FILE, $file or die "$file: can't open file for reading: $!";
+my $data = do { local $/; <FILE> };
+close FILE or die "$file: can't close file after reading: $!";
 
+eval $data;
+die $@ if $@;
index 5d09fc1..b4507ea 100644 (file)
@@ -1,34 +1,35 @@
-#!/usr/bin/perl -w
+#!perl
 
 ###############################################################################
 # Test in_effect()
 
 use strict;
+use warnings;
+
 use Test::More tests => 9;
 
 use bigint;
 use bignum;
 use bigrat;
 
-can_ok ('bigint', qw/in_effect/);
-can_ok ('bignum', qw/in_effect/);
-can_ok ('bigrat', qw/in_effect/);
+can_ok('bigint', qw/in_effect/);
+can_ok('bignum', qw/in_effect/);
+can_ok('bigrat', qw/in_effect/);
 
 SKIP: {
-  skip ('Need at least Perl v5.9.4', 3) if $] < "5.009005";
+    skip('Need at least Perl v5.9.4', 3) if $] < "5.009005";
 
-  is (bigint::in_effect(), 1, 'bigint in effect');
-  is (bignum::in_effect(), 1, 'bignum in effect');
-  is (bigrat::in_effect(), 1, 'bigrat in effect');
-  }
+    is(bigint::in_effect(), 1, 'bigint in effect');
+    is(bignum::in_effect(), 1, 'bignum in effect');
+    is(bigrat::in_effect(), 1, 'bigrat in effect');
+}
 
 {
-  no bigint;
-  no bignum;
-  no bigrat;
+    no bigint;
+    no bignum;
+    no bigrat;
 
-  is (bigint::in_effect(), undef, 'bigint not in effect');
-  is (bignum::in_effect(), undef, 'bignum not in effect');
-  is (bigrat::in_effect(), undef, 'bigrat not in effect');
+    is(bigint::in_effect(), undef, 'bigint not in effect');
+    is(bignum::in_effect(), undef, 'bignum not in effect');
+    is(bigrat::in_effect(), undef, 'bigrat not in effect');
 }
-
index 561adc1..695b913 100644 (file)
@@ -1,35 +1,92 @@
+#!perl
 
 use strict;
+use warnings;
 
-my ($x);
+my $x;
 
 ###############################################################################
 # inf tests
 
-$x = 1+inf;    like (ref($x), qr/^Math::BigInt/); is ($x->bstr(),'inf');
-$x = 1*inf;    like (ref($x), qr/^Math::BigInt/); is ($x->bstr(),'inf');
+$x = 1 + inf;
+like(ref($x), qr/^Math::BigInt/, '$x = 1 + inf makes a Math::BigInt');
+is($x->bstr(), 'inf', qq|$x = 1 + inf; $x->bstr() = 'inf'|);
+
+$x = 1 * inf;
+like(ref($x), qr/^Math::BigInt/, '$x = 1 * inf makes a Math::BigInt');
+is($x->bstr(), 'inf', qq|$x = 1 * inf; $x->bstr() = 'inf'|);
 
 # these don't work without exporting inf()
-$x = inf;      like (ref($x), qr/^Math::BigInt/); is ($x->bstr(),'inf');
-$x = inf+inf;  like (ref($x), qr/^Math::BigInt/); is ($x->bstr(),'inf');
-$x = inf*inf;  like (ref($x), qr/^Math::BigInt/); is ($x->bstr(),'inf');
+$x = inf;
+like(ref($x), qr/^Math::BigInt/, '$x = inf makes a Math::BigInt');
+is($x->bstr(), 'inf', qq|$x = inf; $x->bstr() = 'inf'|);
+
+$x = inf + inf;
+like(ref($x), qr/^Math::BigInt/, '$x = inf + inf makes a Math::BigInt');
+is($x->bstr(), 'inf', qq|$x = inf + inf; $x->bstr() = 'inf'|);
+
+$x = inf * inf;
+like(ref($x), qr/^Math::BigInt/, '$x = inf * inf makes a Math::BigInt');
+is($x->bstr(), 'inf', qq|$x = inf * inf; $x->bstr() = 'inf'|);
 
 ###############################################################################
 # NaN tests
 
-$x = 1+NaN;    like (ref($x), qr/^Math::BigInt/); is ($x->bstr(),'NaN');
-$x = 1*NaN;    like (ref($x), qr/^Math::BigInt/); is ($x->bstr(),'NaN');
+$x = 1 + NaN;
+like(ref($x), qr/^Math::BigInt/, '$x = 1 + NaN makes a Math::BigInt');
+is($x->bstr(), 'NaN', qq|$x = 1 + NaN; $x->bstr() = 'NaN'|);
+
+$x = 1 * NaN;
+like(ref($x), qr/^Math::BigInt/, '$x = 1 * NaN makes a Math::BigInt');
+is($x->bstr(), 'NaN', qq|$x = 1 * NaN; $x->bstr() = 'NaN'|);
 
 # these don't work without exporting NaN()
-$x = NaN;      like (ref($x), qr/^Math::BigInt/); is ($x->bstr(),'NaN');
-$x = NaN+NaN;  like (ref($x), qr/^Math::BigInt/); is ($x->bstr(),'NaN');
-$x = NaN*NaN;  like (ref($x), qr/^Math::BigInt/); is ($x->bstr(),'NaN');
+$x = NaN;
+like(ref($x), qr/^Math::BigInt/, '$x = NaN makes a Math::BigInt');
+is($x->bstr(), 'NaN', qq|$x = NaN; $x->bstr() = 'NaN'|);
+
+$x = NaN + NaN;
+like(ref($x), qr/^Math::BigInt/, '$x = NaN + NaN makes a Math::BigInt');
+is($x->bstr(), 'NaN', qq|$x = NaN + NaN; $x->bstr() = 'NaN'|);
+
+$x = NaN * NaN;
+like(ref($x), qr/^Math::BigInt/, '$x = NaN * NaN makes a Math::BigInt');
+is($x->bstr(), 'NaN', qq|$x = NaN * NaN; $x->bstr() = 'NaN'|);
 
 ###############################################################################
 # mixed tests
 
 # these don't work without exporting NaN() or inf()
-$x = NaN+inf;  like (ref($x), qr/^Math::BigInt/); is ($x->bstr(),'NaN');
-$x = NaN*inf;  like (ref($x), qr/^Math::BigInt/); is ($x->bstr(),'NaN');
-$x = inf*NaN;  like (ref($x), qr/^Math::BigInt/); is ($x->bstr(),'NaN');
 
+$x = NaN + inf;
+like(ref($x), qr/^Math::BigInt/, '$x = NaN + inf makes a Math::BigInt');
+is($x->bstr(), 'NaN', qq|$x = NaN + inf; $x->bstr() = 'NaN'|);
+
+$x = NaN * inf;
+like(ref($x), qr/^Math::BigInt/, '$x = NaN * inf makes a Math::BigInt');
+is($x->bstr(), 'NaN', qq|$x = NaN * inf; $x->bstr() = 'NaN'|);
+
+$x = inf * NaN;
+like(ref($x), qr/^Math::BigInt/, '$x = inf * NaN makes a Math::BigInt');
+is($x->bstr(), 'NaN', qq|$x = inf * NaN; $x->bstr() = 'NaN'|);
+
+###############################################################################
+# inf and NaN as strings.
+
+for my $nan (qw/ nan naN nAn nAN Nan NaN NAn NAN /) {
+    my $x = 1 + $nan;
+    print ref($x), "<<<\n";
+    is($x->bstr(), "NaN", qq|\$x = 1 + "$nan"; \$x->bstr() = "NaN"|);
+    isa_ok($x, "Math::BigInt");
+}
+
+for my $inf (qw/ inf inF iNf iNF Inf InF INf INF
+                 infinity Infinity InFiNiTy iNfInItY
+               /)
+{
+    my $x = 1 + $inf;
+    is($x->bstr(), "inf", qq|\$x = 1 + "$inf"; \$x->bstr() = "inf"|);
+    isa_ok($x, "Math::BigInt");
+}
+
+1;
index 1f13562..2a9d171 100644 (file)
@@ -1,23 +1,22 @@
-#!/usr/bin/perl -w
+#!perl
 
 ###############################################################################
 
 use strict;
+use warnings;
+
 use Test::More tests => 4;
 
 use bignum a => '12';
 
-my @C = qw/Math::BigInt Math::BigFloat/;
-
-foreach my $c (@C)
-  {
-  is ($c->accuracy(),12, "$c accuracy = 12");
-  }
+my @CLASSES = qw/Math::BigInt Math::BigFloat/;
 
-bignum->import( accuracy => '23');
+foreach my $class (@CLASSES) {
+    is($class->accuracy(),12, "$class accuracy = 12");
+}
 
-foreach my $c (@C)
-  {
-  is ($c->accuracy(), 23, "$c accuracy = 23");
-  }
+bignum->import(accuracy => '23');
 
+foreach my $class (@CLASSES) {
+    is($class->accuracy(), 23, "$class accuracy = 23");
+}
index b5eddec..4744ded 100644 (file)
@@ -1,46 +1,53 @@
-#!/usr/bin/perl -w
+#!perl
 
 # test the "l", "lib", "try" and "only" options:
 
 use strict;
+use warnings;
+
 use Test::More tests => 19;
 
 use bignum;
 
-my @W;
+my @WARNINGS;
 {
-# catch warnings:
-require Carp;
-no warnings 'redefine';
-*Carp::carp = sub { push @W, $_[0]; };
+    # catch warnings:
+    require Carp;
+    no warnings 'redefine';
+    *Carp::carp = sub { push @WARNINGS, $_[0]; };
 }
 
-my $rc = eval { bignum->import( "l" => "foo" ) };
-is ($@,'');                                            # shouldn't die
-is (scalar @W, 1, 'one warning');
-like ($W[0], qr/fallback to Math::/, 'got fallback');
+my $rc;
+
+$rc = eval { bignum->import( "l" => "foo" ) };
+is($@, '',                     # shouldn't die
+   qq|eval { bignum->import( "l" => "foo" ) }|);
+is(scalar(@WARNINGS), 1, 'one warning');
+like($WARNINGS[0], qr/fallback to Math::/, 'got fallback');
 
 $rc = eval { bignum->import( "lib" => "foo" ) };
-is ($@,'');                                            # ditto
-is (scalar @W, 2, 'two warnings');
-like ($W[1], qr/fallback to Math::/, 'got fallback');
+is($@, '',                     # ditto
+   qq|eval { bignum->import( "lib" => "foo" ) }|);
+is(scalar @WARNINGS, 2, 'two warnings');
+like($WARNINGS[1], qr/fallback to Math::/, 'got fallback');
 
 $rc = eval { bignum->import( "try" => "foo" ) };
-is ($@,'');                                            # shouldn't die
+is($@, '',                     # shouldn't die
+   qq|eval { bignum->import( "try" => "foo" ) }|);
+
 $rc = eval { bignum->import( "try" => "foo" ) };
-is ($@,'');                                            # ditto
+is($@, '',                     # ditto
+   qq|eval { bignum->import( "try" => "foo" ) }|);
 
 $rc = eval { bignum->import( "foo" => "bar" ) };
-like ($@, qr/^Unknown option foo/i, 'died');                   # should die
+like($@, qr/^Unknown option foo/i, 'died'); # should die
 
 $rc = eval { bignum->import( "only" => "bar" ) };
-like ($@, qr/fallback disallowed/i, 'died');                   # should die
+like($@, qr/fallback disallowed/i, 'died'); # should die
 
 # test that options are only lowercase (don't see a reason why allow UPPER)
 
-foreach (qw/L LIB Lib T Trace TRACE V Version VERSION/)
-  {
-  $rc = eval { bignum->import( $_ => "bar" ) };
-  like ($@, qr/^Unknown option $_/i, 'died');                  # should die
-  }
-
+foreach (qw/L LIB Lib T Trace TRACE V Version VERSION/) {
+    $rc = eval { bignum->import( $_ => "bar" ) };
+    like($@, qr/^Unknown option $_/i, 'died'); # should die
+}
index cdc4f43..6f57c92 100644 (file)
@@ -1,21 +1,20 @@
-#!/usr/bin/perl -w
+#!perl
 
 use strict;
+use warnings;
+
 use Test::More tests => 4;
 
-my @C = qw/Math::BigInt Math::BigFloat/;
+my @CLASSES = qw/Math::BigInt Math::BigFloat/;
 
 use bignum p => '12';
 
-foreach my $c (@C)
-  {
-  is ($c->precision(),12, "$c precision = 12");
-  }
-
-bignum->import( p => '42' );
+foreach my $class (@CLASSES) {
+    is($class->precision(), 12, "$class precision = 12");
+}
 
-foreach my $c (@C)
-  {
-  is ($c->precision(),42, "$c precision = 42");
-  }
+bignum->import(p => '42');
 
+foreach my $class (@CLASSES) {
+    is($class->precision(), 42, "$class precision = 42");
+}
index 84a2ce1..371d91d 100644 (file)
@@ -1,75 +1,77 @@
-#!perl -w
+#!perl
+
+use strict;
+use warnings;
 
 # Test behaviour of hex and oct overrides in detail, and also how the three
 # modules interact.
 
 use Test::More tests => 35;
 
+my $hex_called;
+my $oct_called;
+
 # For testing that existing CORE::GLOBAL overrides are not clobbered
-BEGIN
-  {
-  if ($] > 5.009004)
-    {
-    no warnings 'syntax';
-    *CORE::GLOBAL::hex = sub(_) { ++$hex_called; CORE::hex(@_?$_[0]:$_) };
-    *CORE::GLOBAL::oct = sub(_) { ++$oct_called; CORE::oct(@_?$_[0]:$_) };
-    }
-  else
-    {
-    *CORE::GLOBAL::hex = sub(;$) { ++$hex_called; CORE::hex(@_?$_[0]:$_) };
-    *CORE::GLOBAL::oct = sub(;$) { ++$oct_called; CORE::oct(@_?$_[0]:$_) };
+BEGIN {
+    if ($] > 5.009004) {
+        no warnings 'syntax';
+        *CORE::GLOBAL::hex = sub(_) { ++$hex_called; CORE::hex(@_?$_[0]:$_) };
+        *CORE::GLOBAL::oct = sub(_) { ++$oct_called; CORE::oct(@_?$_[0]:$_) };
+    } else {
+        *CORE::GLOBAL::hex = sub(;$) { ++$hex_called; CORE::hex(@_?$_[0]:$_) };
+        *CORE::GLOBAL::oct = sub(;$) { ++$oct_called; CORE::oct(@_?$_[0]:$_) };
     }
-  }
+}
 
 {
-  use bigint;
-  $_ = "20";
-  is hex, "32", 'bigint hex override without arguments infers $_';
-  is oct, "16", 'bigint oct override without arguments infers $_';
-  @_ = 1..20;
-  is hex(@_), "32", 'bigint hex override provides scalar context';
-  is oct(@_), "16", 'bigint oct override provides scalar context';
+    use bigint;
+    $_ = "20";
+    is hex, "32", 'bigint hex override without arguments infers $_';
+    is oct, "16", 'bigint oct override without arguments infers $_';
+    @_ = 1..20;
+    is hex(@_), "32", 'bigint hex override provides scalar context';
+    is oct(@_), "16", 'bigint oct override provides scalar context';
   SKIP:
     {
-    skip "no lexical hex/oct", 2 unless $] > do { no bigint; 5.009004};
-    is ref hex(1), 'Math::BigInt',
-      'bigint hex() works when bignum and bigrat are loaded';
-    is ref oct(1), 'Math::BigInt',
-      'bigint oct() works when bignum and bigrat are loaded';
+        skip "no lexical hex/oct", 2 unless $] > do { no bigint; 5.009004 };
+        is ref hex(1), 'Math::BigInt',
+          'bigint hex() works when bignum and bigrat are loaded';
+        is ref oct(1), 'Math::BigInt',
+          'bigint oct() works when bignum and bigrat are loaded';
     }
 }
 {
-  use bignum;
-  $_ = "20";
-  is hex, "32", 'bignum hex override without arguments infers $_';
-  is oct, "16", 'bignum oct override without arguments infers $_';
-  @_ = 1..20;
-  is hex(@_), "32", 'bignum hex override provides scalar context';
-  is oct(@_), "16", 'bignum oct override provides scalar context';
+    use bignum;
+    $_ = "20";
+    is hex, "32", 'bignum hex override without arguments infers $_';
+    is oct, "16", 'bignum oct override without arguments infers $_';
+    @_ = 1..20;
+    is hex(@_), "32", 'bignum hex override provides scalar context';
+    is oct(@_), "16", 'bignum oct override provides scalar context';
   SKIP:
     {
-    skip "no lexical hex/oct", 2 unless $] > 5.009004;
-    is ref hex(1), 'Math::BigInt',
-      'bignum hex() works when bigint and bigrat are loaded';
-    is ref oct(1), 'Math::BigInt',
-      'bignum oct() works when bigint and bigrat are loaded';
+        skip "no lexical hex/oct", 2 unless $] > 5.009004;
+        is ref hex(1), 'Math::BigInt',
+          'bignum hex() works when bigint and bigrat are loaded';
+        is ref oct(1), 'Math::BigInt',
+          'bignum oct() works when bigint and bigrat are loaded';
     }
 }
 {
-  use bigrat;
-  $_ = "20";
-  is hex, "32", 'bigrat hex override without arguments infers $_';
-  is oct, "16", 'bigrat oct override without arguments infers $_';
-  @_ = 1..20;
-  is hex(@_), "32", 'bigrat hex override provides scalar context';
-  is oct(@_), "16", 'bigrat oct override provides scalar context';
+    use bigrat;
+    $_ = "20";
+    is hex, "32", 'bigrat hex override without arguments infers $_';
+    is oct, "16", 'bigrat oct override without arguments infers $_';
+    @_ = 1..20;
+    is hex(@_), "32", 'bigrat hex override provides scalar context';
+    is oct(@_), "16", 'bigrat oct override provides scalar context';
   SKIP:
     {
-    skip "no lexical hex/oct", 2 unless $] > 5.009004;
-    is ref hex(1), 'Math::BigInt',
-      'bigrat hex() works when bignum and bigint are loaded';
-    is ref oct(1), 'Math::BigInt',
-      'bigrat oct() works when bignum and bigint are loaded';
+        skip "no lexical hex/oct", 2 unless $] > 5.009004;
+        is ref hex(1), 'Math::BigInt',
+          'bigrat hex() works when bignum and bigint are loaded';
+        is ref oct(1), 'Math::BigInt',
+          'bigrat oct() works when bignum and bigint are loaded';
     }
 }
 
@@ -81,32 +83,32 @@ $oct_called = 0;
 is $oct_called, 1, 'existing oct overrides are called';
 
 {
-  package _importer;
-  {
-    use bigint 'hex', 'oct';
-    ::is \&hex, \&bigint::hex, 'exported hex function';
-    ::is \&oct, \&bigint::oct, 'exported oct function';
-  }
-  ::ok ref hex(), 'exported hex function returns ref outside pragma scope';
-  ::ok ref oct(), 'exported oct function returns ref outside pragma scope';
-  ::is oct("20"), "16", 'exported oct function works with "decimal"';
+    package _importer;
+    {
+        use bigint 'hex', 'oct';
+        ::is \&hex, \&bigint::hex, 'exported hex function';
+        ::is \&oct, \&bigint::oct, 'exported oct function';
+    }
+    ::ok ref hex(), 'exported hex function returns ref outside pragma scope';
+    ::ok ref oct(), 'exported oct function returns ref outside pragma scope';
+    ::is oct("20"), "16", 'exported oct function works with "decimal"';
     # (used to return 20 because it thought it was decimal)
 }
 {
-  package _importer2;
-  use bignum 'hex', 'oct';
-  ::is \&hex, \&bignum::hex, 'bignum exports hex';
-  ::is \&oct, \&bignum::oct, 'bignum exports oct';
-  ::is \&hex, \&bigint::hex, 'bignum exports same hex as bigint';
-  ::is \&oct, \&bigint::oct, 'bignum exports same oct as bigint';
+    package _importer2;
+    use bignum 'hex', 'oct';
+    ::is \&hex, \&bignum::hex, 'bignum exports hex';
+    ::is \&oct, \&bignum::oct, 'bignum exports oct';
+    ::is \&hex, \&bigint::hex, 'bignum exports same hex as bigint';
+    ::is \&oct, \&bigint::oct, 'bignum exports same oct as bigint';
 }
 {
-  package _importer3;
-  use bigrat 'hex', 'oct';
-  ::is \&hex, \&bigrat::hex, 'bigrat exports hex';
-  ::is \&oct, \&bigrat::oct, 'bigrat exports oct';
-  ::is \&hex, \&bigint::hex, 'bigrat exports same hex as bigint';
-  ::is \&oct, \&bigint::oct, 'bigrat exports same oct as bigint';
+    package _importer3;
+    use bigrat 'hex', 'oct';
+    ::is \&hex, \&bigrat::hex, 'bigrat exports hex';
+    ::is \&oct, \&bigrat::oct, 'bigrat exports oct';
+    ::is \&hex, \&bigint::hex, 'bigrat exports same hex as bigint';
+    ::is \&oct, \&bigint::oct, 'bigrat exports same oct as bigint';
 }
 is ref(hex 0), "", 'hex export is not global';
 is ref(oct 0), "", 'oct export is not global';
index 0d18e87..e5ee13b 100644 (file)
@@ -1,26 +1,25 @@
-#!/usr/bin/perl -w
+#!perl
 
 ###############################################################################
 
 use strict;
+use warnings;
+
 use Test::More tests => 7;
 
-my @C = qw/Math::BigInt Math::BigFloat Math::BigRat/;
+my @CLASSES = qw/Math::BigInt Math::BigFloat Math::BigRat/;
 
 # bigrat (bug until v0.15)
 use bigrat a => 2;
 
-foreach my $c (@C)
-  {
-  is ($c->accuracy(), 2, "$c accuracy = 2");
-  }
-
-eval { bigrat->import( accuracy => '42') };
+foreach my $class (@CLASSES) {
+    is($class->accuracy(), 2, "$class accuracy = 2");
+}
 
-is ($@, '', 'no error');
+eval { bigrat->import(accuracy => '42') };
 
-foreach my $c (@C)
-  {
-  is ($c->accuracy(), 42, "$c accuracy = 42");
-  }
+is($@, '', 'no error');
 
+foreach my $class (@CLASSES) {
+    is($class->accuracy(), 42, "$class accuracy = 42");
+}
index ba11f5b..23ffc3a 100644 (file)
@@ -1,9 +1,11 @@
-#!/usr/bin/perl -w
+#!perl
 
 ###############################################################################
 # Test "no bignum;" and overloading of hex()/oct() for newer Perls
 
 use strict;
+use warnings;
+
 use Test::More tests => 10;
 
 # no :hex and :oct means these do not get overloaded for older Perls:
index 8a11a6b..e76ceee 100644 (file)
@@ -1,34 +1,35 @@
-#!/usr/bin/perl -w
+#!perl
 
 ###############################################################################
 # Test "no bigint;" and overloading of hex()/oct() for newer Perls
 
 use strict;
+use warnings;
+
 use Test::More tests => 10;
 
 # no :hex and :oct means these do not get overloaded for older Perls:
 use bigint;
 
-isnt (ref(1), '', 'is in effect');
-isnt (ref(2.0), '', 'is in effect');
-isnt (ref(0x20), '', 'is in effect');
+isnt(ref(1),    '', 'is in effect');
+isnt(ref(2.0),  '', 'is in effect');
+isnt(ref(0x20), '', 'is in effect');
 
 SKIP: {
-  skip ('Need at least Perl v5.9.4', 2) if $] < "5.009004";    # quote due to "use bigint;"
+    # Quote version number due to "use bigint;"
+    skip('Need at least Perl v5.9.4', 2) if $] < "5.009004";
 
-  is (ref(hex(9)), 'Math::BigInt', 'hex is overloaded');
-  is (ref(oct(07)), 'Math::BigInt', 'oct is overloaded');
-  }
+    is(ref(hex(9)),  'Math::BigInt', 'hex is overloaded');
+    is(ref(oct(07)), 'Math::BigInt', 'oct is overloaded');
+}
 
 {
-  no bigint;
+    no bigint;
 
-  is (ref(1), '', 'is not in effect');
-  is (ref(2.0), '', 'is not in effect');
-  is (ref(0x20), '', 'is not in effect');
-
-  isnt (ref(hex(9)), 'Math::BigInt', 'hex is not overloaded');
-  isnt (ref(oct(07)), 'Math::BigInt', 'oct is not overloaded');
+    is(ref(1),    '', 'is not in effect');
+    is(ref(2.0),  '', 'is not in effect');
+    is(ref(0x20), '', 'is not in effect');
 
+    isnt(ref(hex(9)),  'Math::BigInt', 'hex is not overloaded');
+    isnt(ref(oct(07)), 'Math::BigInt', 'oct is not overloaded');
 }
-
index 5cc2117..8ad2626 100644 (file)
@@ -1,33 +1,34 @@
-#!/usr/bin/perl -w
+#!perl
 
 ###############################################################################
 # Test "no bigrat;" and overloading of hex()/oct() for newer Perls
 
 use strict;
+use warnings;
+
 use Test::More tests => 10;
 
 # no :hex and :oct means these do not get overloaded for older Perls:
 use bigrat;
 
-isnt (ref(1), '', 'is in effect');
-isnt (ref(2.0), '', 'is in effect');
-isnt (ref(0x20), '', 'is in effect');
+isnt(ref(1),    '', 'is in effect');
+isnt(ref(2.0),  '', 'is in effect');
+isnt(ref(0x20), '', 'is in effect');
 
 SKIP: {
-  skip ('Need at least Perl v5.9.4', 2) if $] < 5.009004;
+    skip('Need at least Perl v5.9.4', 2) if $] < 5.009004;
 
-  is (ref(hex(9)), 'Math::BigInt', 'hex is overloaded');
-  is (ref(oct(07)), 'Math::BigInt', 'oct is overloaded');
-  }
+    is(ref(hex(9)),  'Math::BigInt', 'hex is overloaded');
+    is(ref(oct(07)), 'Math::BigInt', 'oct is overloaded');
+}
 
 {
-  no bigrat;
+    no bigrat;
 
-  is (ref(1), '', 'is not in effect');
-  is (ref(2.0), '', 'is not in effect');
-  is (ref(0x20), '', 'is not in effect');
+    is(ref(1),    '', 'is not in effect');
+    is(ref(2.0),  '', 'is not in effect');
+    is(ref(0x20), '', 'is not in effect');
 
-  isnt (ref(hex(9)), 'Math::BigInt', 'hex is not overloaded');
-  isnt (ref(oct(07)), 'Math::BigInt', 'oct is not overloaded');
+    isnt(ref(hex(9)),  'Math::BigInt', 'hex is not overloaded');
+    isnt(ref(oct(07)), 'Math::BigInt', 'oct is not overloaded');
 }
-