xref: /openbsd-src/gnu/usr.bin/perl/cpan/bignum/t/down-mbi-up-undef.t (revision 256a93a44f36679bee503f12e49566c2183f6181)
1# -*- mode: perl; -*-
2
3use strict;
4use warnings;
5
6use Test::More;
7
8BEGIN {
9    eval "use Math::BigRat";
10    plan skip_all => 'Math::BigRat required for these tests' if $@;
11}
12
13plan tests => 10;
14
15use bignum upgrade => undef;
16
17is(bignum -> downgrade(), "Math::BigInt",
18  "bignum's upgrade class is Math::BigInt");
19is(bignum -> upgrade(), undef,
20  "bignum's downgrade class is undefined");
21
22is(Math::BigInt -> upgrade(), undef,
23   "Math::BigInt's upgrade class is undefined");
24is(Math::BigFloat -> downgrade(), "Math::BigInt",
25  "Math::BigFloat's downgrade class is Math::BigInt");
26
27my $i1 = 7;
28my $i2 = 2;
29my $f1 = 3.75;
30my $f2 = 1.25;
31
32is(ref($i1), "Math::BigInt", "literal $i1 is a Math::BigInt");
33is(ref($f1), "Math::BigFloat", "literal $f1 is a Math::BigFloat");
34
35# Verify that the result is not upgraded to a Math::BigFloat.
36
37cmp_ok($i1/$i2, "==", "3", "$i1/$i2 is 3");
38is(ref($i1/$i2), "Math::BigInt",
39   "$i1/$i2 is 3 as a Math::BigInt due to no upgrading");
40
41# Verify that the result is downgraded to a Math::BigInt.
42
43cmp_ok($f1/$f2, "==", "3", "$f1/$f2 is 3");
44is(ref($f1/$f2), "Math::BigInt",
45   "$f1/$f2 is 3 as a Math::BigInt due to downgrading");
46