1#!perl 2 3use strict; 4use warnings; 5use lib 't'; 6 7use Test::More tests => 11; 8 9use Math::BigInt::Subclass; 10use Math::BigFloat::Subclass; 11use Math::BigInt; 12use Math::BigFloat; 13 14my $class = "Math::BigInt::Subclass"; 15my $CALC = "Math::BigInt::Calc"; 16 17# Check that a subclass is still considered a Math::BigInt 18isa_ok($class->new(123), 'Math::BigInt'); 19 20# ditto for plain Math::BigInt 21isa_ok(Math::BigInt->new(123), 'Math::BigInt'); 22 23# But Math::BigFloats aren't 24ok(!Math::BigFloat->new(123)->isa('Math::BigInt'), 25 "A Math::BigFloat isn't a Math::BigInt"); 26 27{ 28 # see what happens if we feed a Math::BigFloat into new() 29 my $x = Math::BigInt->new(Math::BigFloat->new(123)); 30 is(ref($x), 'Math::BigInt', 'ref($x) = "Math::BigInt"'); 31 isa_ok($x, 'Math::BigInt'); 32} 33 34{ 35 # ditto for subclass 36 my $x = Math::BigInt->new(Math::BigFloat::Subclass->new(123)); 37 is(ref($x), 'Math::BigInt', 'ref($x) = "Math::BigInt"'); 38 isa_ok($x, 'Math::BigInt'); 39} 40 41{ 42 my $x = Math::BigFloat->new(Math::BigInt->new(123)); 43 is(ref($x), 'Math::BigFloat', 'ref($x) = "Math::BigFloat"'); 44 isa_ok($x, 'Math::BigFloat'); 45} 46 47{ 48 my $x = Math::BigFloat->new(Math::BigInt::Subclass->new(123)); 49 is(ref($x), 'Math::BigFloat', 'ref($x) = "Math::BigFloat"'); 50 isa_ok($x, 'Math::BigFloat'); 51} 52