1*eac174f2Safresh1# -*- mode: perl; -*- 2b8851fccSafresh1 3b8851fccSafresh1use strict; 4b8851fccSafresh1use warnings; 5b8851fccSafresh1 6b8851fccSafresh1use Test::More tests => 6; 7b8851fccSafresh1 8b8851fccSafresh1############################################################################### 9b8851fccSafresh1package Math::BigFloat::Test; 10b8851fccSafresh1 11b8851fccSafresh1use Math::BigFloat; 12b8851fccSafresh1require Exporter; 139f11ffb7Safresh1our @ISA = qw/Math::BigFloat Exporter/; 14b8851fccSafresh1 15b8851fccSafresh1use overload; 16b8851fccSafresh1 17b8851fccSafresh1sub isa { 18b8851fccSafresh1 my ($self, $class) = @_; 19*eac174f2Safresh1 return if $class =~ /^Math::Big(Int|Float$)/; # we aren't one of these 20b8851fccSafresh1 UNIVERSAL::isa($self, $class); 21b8851fccSafresh1} 22b8851fccSafresh1 23b8851fccSafresh1sub bmul { 24b8851fccSafresh1 return __PACKAGE__->new(123); 25b8851fccSafresh1} 26b8851fccSafresh1 27b8851fccSafresh1sub badd { 28b8851fccSafresh1 return __PACKAGE__->new(321); 29b8851fccSafresh1} 30b8851fccSafresh1 31b8851fccSafresh1############################################################################### 32b8851fccSafresh1package main; 33b8851fccSafresh1 34b8851fccSafresh1# use Math::BigInt upgrade => 'Math::BigFloat'; 35b8851fccSafresh1use Math::BigFloat upgrade => 'Math::BigFloat::Test'; 36b8851fccSafresh1 37b8851fccSafresh1my ($x, $y, $z); 38b8851fccSafresh1 39b46d8ef2Safresh1our ($CLASS, $EXPECTED_CLASS, $LIB); 40b8851fccSafresh1$CLASS = "Math::BigFloat"; 41b8851fccSafresh1$EXPECTED_CLASS = "Math::BigFloat::Test"; 42b46d8ef2Safresh1$LIB = "Math::BigInt::Calc"; # backend 43b8851fccSafresh1 44b8851fccSafresh1is(Math::BigFloat->upgrade(), $EXPECTED_CLASS, 45b8851fccSafresh1 qq|Math::BigFloat->upgrade()|); 46*eac174f2Safresh1is(Math::BigFloat->downgrade(), undef, 47*eac174f2Safresh1 qq|Math::BigFloat->downgrade()|); 48b8851fccSafresh1 49b8851fccSafresh1$x = $CLASS->new(123); 50b8851fccSafresh1$y = $EXPECTED_CLASS->new(123); 51b8851fccSafresh1$z = $x->bmul($y); 52b8851fccSafresh1is(ref($z), $EXPECTED_CLASS, 53b8851fccSafresh1 qq|\$x = $CLASS->new(123); \$y = $EXPECTED_CLASS->new(123);| 54b8851fccSafresh1 . q| $z = $x->bmul($y); ref($z)|); 55b8851fccSafresh1is($z, 123, 56b8851fccSafresh1 qq|\$x = $CLASS->new(123); \$y = $EXPECTED_CLASS->new(123);| 57b8851fccSafresh1 . q| $z = $x->bmul($y); $z|); 58b8851fccSafresh1 59b8851fccSafresh1$x = $CLASS->new(123); 60b8851fccSafresh1$y = $EXPECTED_CLASS->new(123); 61b8851fccSafresh1$z = $x->badd($y); 62b8851fccSafresh1is(ref($z), $EXPECTED_CLASS, 63b8851fccSafresh1 qq|$x = $CLASS->new(123); $y = $EXPECTED_CLASS->new(123);| 64b8851fccSafresh1 . q| $z = $x->badd($y); ref($z)|); 65b8851fccSafresh1is($z, 321, 66b8851fccSafresh1 qq|$x = $CLASS->new(123); $y = $EXPECTED_CLASS->new(123);| 67b8851fccSafresh1 . q| $z = $x->badd($y); $z|); 68b8851fccSafresh1 69b8851fccSafresh1# not yet: 70b46d8ef2Safresh1#require './t/upgrade.inc'; # all tests here for sharing 71