summaryrefslogtreecommitdiff
path: root/cpan/Math-BigInt/t/new_overloaded.t
diff options
context:
space:
mode:
Diffstat (limited to 'cpan/Math-BigInt/t/new_overloaded.t')
-rw-r--r--cpan/Math-BigInt/t/new_overloaded.t32
1 files changed, 32 insertions, 0 deletions
diff --git a/cpan/Math-BigInt/t/new_overloaded.t b/cpan/Math-BigInt/t/new_overloaded.t
new file mode 100644
index 0000000000..08708dc557
--- /dev/null
+++ b/cpan/Math-BigInt/t/new_overloaded.t
@@ -0,0 +1,32 @@
+#!/usr/bin/perl -w
+
+# Math::BigFloat->new had a bug where it would assume any object is a
+# BigInt which broke overloaded non-BigInts.
+
+use Test::More tests => 4;
+
+
+package Overloaded::Num;
+
+use overload '0+' => sub { ${$_[0]} },
+ fallback => 1;
+sub new {
+ my($class, $num) = @_;
+ return bless \$num, $class;
+}
+
+
+package main;
+
+use Math::BigFloat;
+
+my $overloaded_num = Overloaded::Num->new(2.23);
+is $overloaded_num, 2.23;
+
+my $bigfloat = Math::BigFloat->new($overloaded_num);
+is $bigfloat, 2.23, 'BigFloat->new accepts overloaded numbers';
+
+my $bigint = Math::BigInt->new(Overloaded::Num->new(3));
+is $bigint, 3, 'BigInt->new accepts overloaded numbers';
+
+is( Math::BigFloat->new($bigint), 3, 'BigFloat from BigInt' );