xref: /openbsd-src/gnu/usr.bin/perl/cpan/Math-BigInt/t/upgradef.t (revision eac174f2741a08d8deb8aae59a7f778ef9b5d770)
1*eac174f2Safresh1# -*- mode: perl; -*-
2b8851fccSafresh1
3b8851fccSafresh1use strict;
4b8851fccSafresh1use warnings;
5b8851fccSafresh1
6b8851fccSafresh1use Test::More tests => 6;
7b8851fccSafresh1
8b8851fccSafresh1###############################################################################
9b8851fccSafresh1package Math::BigFloat::Test;
10b8851fccSafresh1
11b8851fccSafresh1use Math::BigFloat;
12b8851fccSafresh1require Exporter;
139f11ffb7Safresh1our @ISA = qw/Math::BigFloat Exporter/;
14b8851fccSafresh1
15b8851fccSafresh1use overload;
16b8851fccSafresh1
17b8851fccSafresh1sub isa {
18b8851fccSafresh1    my ($self, $class) = @_;
19*eac174f2Safresh1    return if $class =~ /^Math::Big(Int|Float$)/;   # we aren't one of these
20b8851fccSafresh1    UNIVERSAL::isa($self, $class);
21b8851fccSafresh1}
22b8851fccSafresh1
23b8851fccSafresh1sub bmul {
24b8851fccSafresh1    return __PACKAGE__->new(123);
25b8851fccSafresh1}
26b8851fccSafresh1
27b8851fccSafresh1sub badd {
28b8851fccSafresh1    return __PACKAGE__->new(321);
29b8851fccSafresh1}
30b8851fccSafresh1
31b8851fccSafresh1###############################################################################
32b8851fccSafresh1package main;
33b8851fccSafresh1
34b8851fccSafresh1# use Math::BigInt upgrade => 'Math::BigFloat';
35b8851fccSafresh1use Math::BigFloat upgrade => 'Math::BigFloat::Test';
36b8851fccSafresh1
37b8851fccSafresh1my ($x, $y, $z);
38b8851fccSafresh1
39b46d8ef2Safresh1our ($CLASS, $EXPECTED_CLASS, $LIB);
40b8851fccSafresh1$CLASS          = "Math::BigFloat";
41b8851fccSafresh1$EXPECTED_CLASS = "Math::BigFloat::Test";
42b46d8ef2Safresh1$LIB            = "Math::BigInt::Calc";         # backend
43b8851fccSafresh1
44b8851fccSafresh1is(Math::BigFloat->upgrade(), $EXPECTED_CLASS,
45b8851fccSafresh1   qq|Math::BigFloat->upgrade()|);
46*eac174f2Safresh1is(Math::BigFloat->downgrade(), undef,
47*eac174f2Safresh1   qq|Math::BigFloat->downgrade()|);
48b8851fccSafresh1
49b8851fccSafresh1$x = $CLASS->new(123);
50b8851fccSafresh1$y = $EXPECTED_CLASS->new(123);
51b8851fccSafresh1$z = $x->bmul($y);
52b8851fccSafresh1is(ref($z), $EXPECTED_CLASS,
53b8851fccSafresh1   qq|\$x = $CLASS->new(123); \$y = $EXPECTED_CLASS->new(123);|
54b8851fccSafresh1   . q| $z = $x->bmul($y); ref($z)|);
55b8851fccSafresh1is($z, 123,
56b8851fccSafresh1   qq|\$x = $CLASS->new(123); \$y = $EXPECTED_CLASS->new(123);|
57b8851fccSafresh1   . q| $z = $x->bmul($y); $z|);
58b8851fccSafresh1
59b8851fccSafresh1$x = $CLASS->new(123);
60b8851fccSafresh1$y = $EXPECTED_CLASS->new(123);
61b8851fccSafresh1$z = $x->badd($y);
62b8851fccSafresh1is(ref($z), $EXPECTED_CLASS,
63b8851fccSafresh1   qq|$x = $CLASS->new(123); $y = $EXPECTED_CLASS->new(123);|
64b8851fccSafresh1   . q| $z = $x->badd($y); ref($z)|);
65b8851fccSafresh1is($z, 321,
66b8851fccSafresh1   qq|$x = $CLASS->new(123); $y = $EXPECTED_CLASS->new(123);|
67b8851fccSafresh1   . q| $z = $x->badd($y); $z|);
68b8851fccSafresh1
69b8851fccSafresh1# not yet:
70b46d8ef2Safresh1#require './t/upgrade.inc';     # all tests here for sharing
71