1eac174f2Safresh1# -*- mode: perl; -*- 2b8851fccSafresh1 3b8851fccSafresh1use strict; 4b8851fccSafresh1use warnings; 5b8851fccSafresh1use lib 't'; 6b8851fccSafresh1 7*3d61058aSafresh1use Test::More tests => 13; 8b8851fccSafresh1 9b8851fccSafresh1use Math::BigInt::Subclass; 10b8851fccSafresh1use Math::BigFloat::Subclass; 11*3d61058aSafresh1use Math::BigFloat::BareSubclass; 12b8851fccSafresh1use Math::BigInt; 13b8851fccSafresh1use Math::BigFloat; 14b8851fccSafresh1 15b8851fccSafresh1my $class = "Math::BigInt::Subclass"; 16b46d8ef2Safresh1my $LIB = "Math::BigInt::Calc"; 17b8851fccSafresh1 18b8851fccSafresh1# Check that a subclass is still considered a Math::BigInt 19b8851fccSafresh1isa_ok($class->new(123), 'Math::BigInt'); 20b8851fccSafresh1 21b8851fccSafresh1# ditto for plain Math::BigInt 22b8851fccSafresh1isa_ok(Math::BigInt->new(123), 'Math::BigInt'); 23b8851fccSafresh1 24eac174f2Safresh1# But Math::BigFloat objects aren't 25b8851fccSafresh1ok(!Math::BigFloat->new(123)->isa('Math::BigInt'), 26b8851fccSafresh1 "A Math::BigFloat isn't a Math::BigInt"); 27b8851fccSafresh1 28b8851fccSafresh1{ 29b8851fccSafresh1 # see what happens if we feed a Math::BigFloat into new() 30b8851fccSafresh1 my $x = Math::BigInt->new(Math::BigFloat->new(123)); 31b8851fccSafresh1 is(ref($x), 'Math::BigInt', 'ref($x) = "Math::BigInt"'); 32b8851fccSafresh1 isa_ok($x, 'Math::BigInt'); 33b8851fccSafresh1} 34b8851fccSafresh1 35b8851fccSafresh1{ 36b8851fccSafresh1 # ditto for subclass 37b8851fccSafresh1 my $x = Math::BigInt->new(Math::BigFloat::Subclass->new(123)); 38b8851fccSafresh1 is(ref($x), 'Math::BigInt', 'ref($x) = "Math::BigInt"'); 39b8851fccSafresh1 isa_ok($x, 'Math::BigInt'); 40b8851fccSafresh1} 41b8851fccSafresh1 42b8851fccSafresh1{ 43b8851fccSafresh1 my $x = Math::BigFloat->new(Math::BigInt->new(123)); 44b8851fccSafresh1 is(ref($x), 'Math::BigFloat', 'ref($x) = "Math::BigFloat"'); 45b8851fccSafresh1 isa_ok($x, 'Math::BigFloat'); 46b8851fccSafresh1} 47b8851fccSafresh1 48b8851fccSafresh1{ 49b8851fccSafresh1 my $x = Math::BigFloat->new(Math::BigInt::Subclass->new(123)); 50b8851fccSafresh1 is(ref($x), 'Math::BigFloat', 'ref($x) = "Math::BigFloat"'); 51b8851fccSafresh1 isa_ok($x, 'Math::BigFloat'); 52b8851fccSafresh1} 53*3d61058aSafresh1 54*3d61058aSafresh1{ 55*3d61058aSafresh1 my $x = Math::BigFloat->new(9999.99); 56*3d61058aSafresh1 my $y = Math::BigFloat::BareSubclass->new(9999.99); 57*3d61058aSafresh1 ok($x == $y, "Math::BigFloat parent == subclass"); 58*3d61058aSafresh1 ok($y == $x, "Math::BigFloat subclass == parent"); 59*3d61058aSafresh1} 60