1# -*- mode: perl; -*- 2 3# Math::BigFloat->new had a bug where it would assume any object is a 4# Math::BigInt which broke overloaded non-Math::BigInt objects. 5 6use strict; 7use warnings; 8 9use Test::More tests => 4; 10 11############################################################################## 12 13package Overloaded::Num; 14 15use overload 16 '0+' => sub { ${$_[0]} }, 17 fallback => 1; 18 19sub new { 20 my ($class, $num) = @_; 21 return bless \$num, $class; 22} 23 24package main; 25 26use Math::BigFloat; 27 28my $overloaded_num = Overloaded::Num->new(2.23); 29is($overloaded_num, 2.23, 'Overloaded::Num->new(2.23)'); 30 31my $bigfloat = Math::BigFloat->new($overloaded_num); 32is($bigfloat, 2.23, 'Math::BigFloat->new() accepts overloaded numbers'); 33 34my $bigint = Math::BigInt->new(Overloaded::Num->new(3)); 35is($bigint, 3, 'Math::BigInt->new() accepts overloaded numbers'); 36 37is(Math::BigFloat->new($bigint), 3, 38 'Math::BigFloat->new() accepts a Math::BigInt'); 39