This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade Math::BigRat from version 0.260802 to 0.260804
[perl5.git] / cpan / Math-BigRat / t / trap.t
index a26da9f..0daef7a 100644 (file)
@@ -1,6 +1,6 @@
-#!/usr/bin/perl
+#!perl
 
-# test that config ( trap_nan => 1, trap_inf => 1) really works/dies
+# test that config( trap_nan => 1, trap_inf => 1) really works/dies
 
 use strict;
 use warnings;
@@ -10,67 +10,82 @@ use Test::More tests => 29;
 use Math::BigRat;
 
 my $mbi = 'Math::BigRat';
-my ($cfg,$x);
-
-foreach my $class ($mbi)
-  {
-  # can do and defaults are okay?
-  can_ok ($class, 'config');
-  is ($class->config()->{trap_nan}, 0);
-  is ($class->config()->{trap_inf}, 0);
-
-  # can set?
-  $cfg = $class->config( trap_nan => 1 ); is ($cfg->{trap_nan},1);
-
-  # can set via hash ref?
-  $cfg = $class->config( { trap_nan => 1 } ); is ($cfg->{trap_nan},1);
-
-  # also test that new() still works normally
-  eval ("\$x = \$class->new('42'); \$x->bnan();");
-  like ($@, qr/^Tried to set/);
-  is ($x,42);                          # after new() never modified
-
-  # can reset?
-  $cfg = $class->config( trap_nan => 0 ); is ($cfg->{trap_nan},0);
-
-  # can set?
-  $cfg = $class->config( trap_inf => 1 ); is ($cfg->{trap_inf},1);
-  eval ("\$x = \$class->new('4711'); \$x->binf();");
-  like ($@, qr/^Tried to set/);
-  is ($x,4711);                                # after new() never modified
-
-  # +$x/0 => +inf
-  eval ("\$x = \$class->new('4711'); \$x->bdiv(0);");
-  like ($@, qr/^Tried to set/);
-  is ($x,4711);                                # after new() never modified
-
-  # -$x/0 => -inf
-  eval ("\$x = \$class->new('-0815'); \$x->bdiv(0);");
-  like ($@, qr/^Tried to set/);
-  is ($x,-815);                                # after new() never modified
-
-  $cfg = $class->config( trap_nan => 1 );
-  # 0/0 => NaN
-  eval ("\$x = \$class->new('0'); \$x->bdiv(0);");
-  like ($@, qr/^Tried to set/);
-  is ($x,0);                           # after new() never modified
-  }
+my ($cfg, $x);
+
+foreach my $class ($mbi) {
+
+    # can do and defaults are okay?
+    can_ok($class, 'config');
+    is($class->config()->{trap_nan}, 0, qq|$class->config()->{trap_nan}|);
+    is($class->config()->{trap_inf}, 0, qq|$class->config()->{trap_inf}|);
+
+    # can set?
+    $cfg = $class->config( trap_nan => 1 );
+    is($cfg->{trap_nan}, 1, q|$cfg->{trap_nan}|);
+
+    # can set via hash ref?
+    $cfg = $class->config( { trap_nan => 1 } );
+    is($cfg->{trap_nan}, 1, q|$cfg->{trap_nan}|);
+
+    # also test that new() still works normally
+    eval("\$x = $class->new('42'); \$x->bnan();");
+    like($@, qr/^Tried to set/, "\$x = $class->new('42'); \$x->bnan();");
+    # after new() never modified
+    is($x, 42, "\$x = $class->new('42'); \$x->bnan();");
+
+    # can reset?
+    $cfg = $class->config( trap_nan => 0 );
+    is($cfg->{trap_nan}, 0, q|$cfg->{trap_nan}|);
+
+    # can set?
+    $cfg = $class->config( trap_inf => 1 );
+    is($cfg->{trap_inf}, 1, q|$cfg->{trap_inf}|);
+    eval("\$x = $class->new('4711'); \$x->binf();");
+    like($@, qr/^Tried to set/, "\$x = $class->new('4711'); \$x->binf();");
+    # after new() never modified
+    is($x, 4711, "\$x = $class->new('4711'); \$x->binf();");
+
+    # +$x/0 => +inf
+    eval("\$x =\$class->new('4711'); \$x->bdiv(0);");
+    like($@, qr/^Tried to set/, "\$x =\$class->new('4711'); \$x->bdiv(0);");
+    # after new() never modified
+    is($x, 4711, "\$x =\$class->new('4711'); \$x->bdiv(0);");
+
+    # -$x/0 => -inf
+    eval("\$x = $class->new('-0815'); \$x->bdiv(0);");
+    like($@, qr/^Tried to set/, "\$x = $class->new('-0815'); \$x->bdiv(0);");
+    # after new() never modified
+    is($x, -815, "\$x = $class->new('-0815'); \$x->bdiv(0);");
+
+    $cfg = $class->config( trap_nan => 1 );
+    # 0/0 => NaN
+    eval("\$x = $class->new('0'); \$x->bdiv(0);");
+    like($@, qr/^Tried to set/, "\$x = $class->new('0'); \$x->bdiv(0);");
+    # after new() never modified
+    is($x, 0, "\$x = $class->new('0'); \$x->bdiv(0);");
+}
 
 ##############################################################################
 # BigRat
 
-$cfg = Math::BigRat->config( trap_nan => 1 );
+Math::BigRat->config(trap_nan => 1,
+                     trap_inf => 1);
 
-for my $trap (qw/0.1a +inf inf -inf/)
-  {
-  my $x = Math::BigRat->new('7/4');
+for my $trap (qw/ 0.1a +inf inf -inf /) {
+    my $x = Math::BigRat->new('7/4');
 
-  eval ("\$x = \$mbi->new('$trap');");
-  is ($x,'7/4');                       # never modified since it dies
-  eval ("\$x = \$mbi->new('$trap');");
-  is ($x,'7/4');                       # never modified since it dies
-  eval ("\$x = \$mbi->new('$trap/7');");
-  is ($x,'7/4');                       # never modified since it dies
-  }
+    note("");           # this is just for some space in the output
+
+    # In each of the cases below, $x is not modified, because the code dies.
+
+    eval("\$x = $mbi->new('$trap');");
+    is($x, '7/4', "\$x = $mbi->new('$trap');");
+
+    eval("\$x = $mbi->new('$trap');");
+    is($x, '7/4', "\$x = $mbi->new('$trap');");
+
+    eval("\$x = $mbi->new('$trap/7');");
+    is($x, '7/4', "\$x = $mbi->new('$trap/7');");
+}
 
 # all tests done