1# -*- mode: perl; -*- 2 3use strict; 4use warnings; 5 6use Test::More tests => 10; 7 8use bignum downgrade => undef; 9 10is(bignum -> downgrade(), undef, 11 "bignum's downgrade class is undefined"); 12is(bignum -> upgrade(), "Math::BigFloat", 13 "bignum's upgrade class is Math::BigFloat"); 14 15is(Math::BigFloat -> downgrade(), undef, 16 "Math::BigFloat's downgrade class is undefined"); 17is(Math::BigInt -> upgrade(), "Math::BigFloat", 18 "Math::BigInt's upgrade class is Math::BigFloat"); 19 20my $i1 = 7; 21my $i2 = 2; 22my $f1 = 3.75; 23my $f2 = 1.25; 24 25is(ref($i1), "Math::BigInt", "literal $i1 is a Math::BigInt"); 26is(ref($f1), "Math::BigFloat", "literal $f1 is a Math::BigFloat"); 27 28# Verify that the result is upgraded to a Math::BigFloat. 29 30cmp_ok($i1/$i2, "==", "3.5", "$i1/$i2 is 3.5"); 31is(ref($i1/$i2), "Math::BigFloat", 32 "$i1/$i2 is 3.5 as a Math::BigFloat due to upgrading"); 33 34# Verify that the result is not downgraded to a Math::BigInt. 35 36cmp_ok($f1/$f2, "==", "3", "$f1/$f2 is 3"); 37is(ref($f1/$f2), "Math::BigFloat", 38 "$f1/$f2 is 3 as a Math::BigFloat due to no downgrading"); 39