This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade Math::BigRat from version 0.2613 to 0.2614
[perl5.git] / cpan / Math-BigRat / t / trap.t
index 0daef7a..bab85d4 100644 (file)
@@ -9,60 +9,74 @@ use Test::More tests => 29;
 
 use Math::BigRat;
 
-my $mbi = 'Math::BigRat';
-my ($cfg, $x);
+my $mbr = 'Math::BigRat';
+my $x;
 
-foreach my $class ($mbi) {
+foreach my $class ($mbr) {
 
-    # can do and defaults are okay?
+    # can do?
     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}|);
+
+    ###########################################################################
+    # Default values.
+    ###########################################################################
+
+    # defaults are okay?
+    is($class->config("trap_nan"), 0, qq|$class->config("trap_nan")|);
+    is($class->config("trap_inf"), 0, qq|$class->config("trap_inf")|);
+
+    ###########################################################################
+    # Trap NaN.
+    ###########################################################################
 
     # can set?
-    $cfg = $class->config( trap_nan => 1 );
-    is($cfg->{trap_nan}, 1, q|$cfg->{trap_nan}|);
+    $class->config( trap_nan => 1 );
+    is($class->config("trap_nan"), 1, q|$class->config("trap_nan")|);
+
+    # can reset?
+    $class->config( trap_nan => 0 );
+    is($class->config("trap_nan"), 0, qq|$class->config("trap_nan")|);
 
     # can set via hash ref?
-    $cfg = $class->config( { trap_nan => 1 } );
-    is($cfg->{trap_nan}, 1, q|$cfg->{trap_nan}|);
+    $class->config( { trap_nan => 1 } );
+    is($class->config("trap_nan"), 1, q|$class->config("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();");
+    eval { $x = $class->new("42"); $x->bnan(); };
+    like($@, qr/^Tried to set/, qq|\$x = $class->new("42"); \$x->bnan();|);
     # after new() never modified
-    is($x, 42, "\$x = $class->new('42'); \$x->bnan();");
+    is($x, 42, qq|\$x = $class->new("42"); \$x->bnan();|);
 
-    # can reset?
-    $cfg = $class->config( trap_nan => 0 );
-    is($cfg->{trap_nan}, 0, q|$cfg->{trap_nan}|);
+    # 0/0 => NaN
+    eval { $x = $class->new("0"); $x->bdiv(0); };
+    like($@, qr/^Tried to set/, qq|\$x = $class->new("0"); \$x->bdiv(0);|);
+    # after new() never modified
+    is($x, 0, qq|\$x = $class->new("0"); \$x->bdiv(0);|);
+
+    ###########################################################################
+    # Trap inf.
+    ###########################################################################
 
     # 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();");
+    $class->config( trap_inf => 1 );
+    is($class->config("trap_inf"), 1, qq|$class->config("trap_inf")|);
+
+    eval { $x = $class->new("4711"); $x->binf(); };
+    like($@, qr/^Tried to set/, qq|\$x = $class->new("4711"); \$x->binf();|);
     # after new() never modified
-    is($x, 4711, "\$x = $class->new('4711'); \$x->binf();");
+    is($x, 4711, qq|\$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);");
+    eval { $x = $class->new("4711"); $x->bdiv(0); };
+    like($@, qr/^Tried to set/, qq|\$x =\$class->new("4711"); \$x->bdiv(0);|);
     # after new() never modified
-    is($x, 4711, "\$x =\$class->new('4711'); \$x->bdiv(0);");
+    is($x, 4711, qq|\$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);");
+    eval { $x = $class->new("-0815"); $x->bdiv(0); };
+    like($@, qr/^Tried to set/, qq|\$x = $class->new("-0815"); \$x->bdiv(0);|);
     # after new() never modified
-    is($x, 0, "\$x = $class->new('0'); \$x->bdiv(0);");
+    is($x, -815, qq|\$x = $class->new("-0815"); \$x->bdiv(0);|);
 }
 
 ##############################################################################
@@ -78,14 +92,14 @@ for my $trap (qw/ 0.1a +inf inf -inf /) {
 
     # 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 = $mbr->new("$trap"); };
+    is($x, "7/4", qq|\$x = $mbr->new("$trap");|);
 
-    eval("\$x = $mbi->new('$trap');");
-    is($x, '7/4', "\$x = $mbi->new('$trap');");
+    eval { $x = $mbr->new("$trap"); };
+    is($x, "7/4", qq|\$x = $mbr->new("$trap");|);
 
-    eval("\$x = $mbi->new('$trap/7');");
-    is($x, '7/4', "\$x = $mbi->new('$trap/7');");
+    eval { $x = $mbr->new("$trap/7"); };
+    is($x, "7/4", qq|\$x = $mbr->new("$trap/7");|);
 }
 
 # all tests done