1#!perl 2 3use strict; 4use warnings; 5 6use Test::More tests => 15; 7 8use Math::BigInt upgrade => 'Math::BigFloat'; 9use Math::BigFloat downgrade => 'Math::BigInt', 10 upgrade => 'Math::BigInt'; 11 12our ($CLASS, $EXPECTED_CLASS, $LIB); 13$CLASS = "Math::BigInt"; 14$EXPECTED_CLASS = "Math::BigFloat"; 15$LIB = "Math::BigInt::Calc"; # backend 16 17# simplistic test for now 18is(Math::BigFloat->downgrade(), 'Math::BigInt', 'Math::BigFloat->downgrade()'); 19is(Math::BigFloat->upgrade(), 'Math::BigInt', 'Math::BigFloat->upgrade()'); 20 21# these downgrade 22is(ref(Math::BigFloat->new("inf")), "Math::BigInt", 23 qq|ref(Math::BigFloat->new("inf"))|); 24is(ref(Math::BigFloat->new("-inf")), "Math::BigInt", 25 qq|ref(Math::BigFloat->new("-inf"))|); 26is(ref(Math::BigFloat->new("NaN")), "Math::BigInt", 27 qq|ref(Math::BigFloat->new("NaN"))|); 28is(ref(Math::BigFloat->new("0")), "Math::BigInt", 29 qq|ref(Math::BigFloat->new("0"))|); 30is(ref(Math::BigFloat->new("1")), "Math::BigInt", 31 qq|ref(Math::BigFloat->new("1"))|); 32is(ref(Math::BigFloat->new("10")), "Math::BigInt", 33 qq|ref(Math::BigFloat->new("10"))|); 34is(ref(Math::BigFloat->new("-10")), "Math::BigInt", 35 qq|ref(Math::BigFloat->new("-10"))|); 36is(ref(Math::BigFloat->new("-10.0E1")), "Math::BigInt", 37 qq|ref(Math::BigFloat->new("-10.0E1"))|); 38 39# bug until v1.67: 40is(Math::BigFloat->new("0.2E0"), "0.2", qq|Math::BigFloat->new("0.2E0")|); 41is(Math::BigFloat->new("0.2E1"), "2", qq|Math::BigFloat->new("0.2E1")|); 42# until v1.67 resulted in 200: 43is(Math::BigFloat->new("0.2E2"), "20", qq|Math::BigFloat->new("0.2E2")|); 44 45# disable, otherwise it screws calculations 46Math::BigFloat->upgrade(undef); 47is(Math::BigFloat->upgrade() || "", "", qq/Math::BigFloat->upgrade() || ""/); 48 49Math::BigFloat->div_scale(20); # make it a bit faster 50my $x = Math::BigFloat->new(2); # downgrades 51# the following test upgrade for bsqrt() and also makes new() NOT downgrade 52# for the bpow() side 53is(Math::BigFloat->bpow("2", "0.5"), $x->bsqrt(), 54 qq|Math::BigFloat->bpow("2", "0.5")|); 55 56#require 'upgrade.inc'; # all tests here for sharing 57