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