xref: /openbsd-src/gnu/usr.bin/perl/cpan/bignum/t/infnan-bigint.t (revision 256a93a44f36679bee503f12e49566c2183f6181)
1*256a93a4Safresh1# -*- mode: perl; -*-
2*256a93a4Safresh1
3*256a93a4Safresh1use strict;
4*256a93a4Safresh1use warnings;
5*256a93a4Safresh1
6*256a93a4Safresh1use Test::More tests => 66;
7*256a93a4Safresh1
8*256a93a4Safresh1use bigint;
9*256a93a4Safresh1
10*256a93a4Safresh1my $class = "Math::BigInt";
11*256a93a4Safresh1my $x;
12*256a93a4Safresh1
13*256a93a4Safresh1###############################################################################
14*256a93a4Safresh1
15*256a93a4Safresh1note("inf tests");
16*256a93a4Safresh1
17*256a93a4Safresh1$x = 1 + inf;
18*256a93a4Safresh1note("\n\n" . $x . "\n\n");
19*256a93a4Safresh1
20*256a93a4Safresh1$x = 1 + inf;
21*256a93a4Safresh1is(ref($x), $class, "\$x = 1 + inf makes a $class");
22*256a93a4Safresh1is($x->bstr(), "inf", '$x = 1 + inf; $x->bstr() = "inf"');
23*256a93a4Safresh1
24*256a93a4Safresh1$x = 1 * inf;
25*256a93a4Safresh1is(ref($x), $class, "\$x = 1 * inf makes a $class");
26*256a93a4Safresh1is($x->bstr(), "inf", '$x = 1 * inf; $x->bstr() = "inf"');
27*256a93a4Safresh1
28*256a93a4Safresh1# these don't work without exporting inf()
29*256a93a4Safresh1$x = inf;
30*256a93a4Safresh1is(ref($x), $class, "\$x = inf makes a $class");
31*256a93a4Safresh1is($x->bstr(), "inf", '$x = inf; $x->bstr() = "inf"');
32*256a93a4Safresh1
33*256a93a4Safresh1$x = inf + inf;
34*256a93a4Safresh1is(ref($x), $class, "\$x = inf + inf makes a $class");
35*256a93a4Safresh1is($x->bstr(), "inf", '$x = inf + inf; $x->bstr() = "inf"');
36*256a93a4Safresh1
37*256a93a4Safresh1$x = inf * inf;
38*256a93a4Safresh1is(ref($x), $class, "\$x = inf * inf makes a $class");
39*256a93a4Safresh1is($x->bstr(), "inf", '$x = inf * inf; $x->bstr() = "inf"');
40*256a93a4Safresh1
41*256a93a4Safresh1###############################################################################
42*256a93a4Safresh1
43*256a93a4Safresh1note("NaN tests");
44*256a93a4Safresh1
45*256a93a4Safresh1$x = 1 + NaN;
46*256a93a4Safresh1is(ref($x), $class, "\$x = 1 + NaN makes a $class");
47*256a93a4Safresh1is($x->bstr(), "NaN", '$x = 1 + NaN; $x->bstr() = "NaN"');
48*256a93a4Safresh1
49*256a93a4Safresh1$x = 1 * NaN;
50*256a93a4Safresh1is(ref($x), $class, "\$x = 1 * NaN makes a $class");
51*256a93a4Safresh1is($x->bstr(), "NaN", '$x = 1 * NaN; $x->bstr() = "NaN"');
52*256a93a4Safresh1
53*256a93a4Safresh1# these don't work without exporting NaN()
54*256a93a4Safresh1$x = NaN;
55*256a93a4Safresh1is(ref($x), $class, "\$x = NaN makes a $class");
56*256a93a4Safresh1is($x->bstr(), "NaN", '$x = NaN; $x->bstr() = "NaN"');
57*256a93a4Safresh1
58*256a93a4Safresh1$x = NaN + NaN;
59*256a93a4Safresh1is(ref($x), $class, "\$x = NaN + NaN makes a $class");
60*256a93a4Safresh1is($x->bstr(), "NaN", '$x = NaN + NaN; $x->bstr() = "NaN"');
61*256a93a4Safresh1
62*256a93a4Safresh1$x = NaN * NaN;
63*256a93a4Safresh1is(ref($x), $class, "\$x = NaN * NaN makes a $class");
64*256a93a4Safresh1is($x->bstr(), "NaN", '$x = NaN * NaN; $x->bstr() = "NaN"');
65*256a93a4Safresh1
66*256a93a4Safresh1###############################################################################
67*256a93a4Safresh1
68*256a93a4Safresh1note("mixed tests");
69*256a93a4Safresh1
70*256a93a4Safresh1# these don't work without exporting NaN() or inf()
71*256a93a4Safresh1
72*256a93a4Safresh1$x = NaN + inf;
73*256a93a4Safresh1is(ref($x), $class, "\$x = NaN + inf makes a $class");
74*256a93a4Safresh1is($x->bstr(), "NaN", '$x = NaN + inf; $x->bstr() = "NaN"');
75*256a93a4Safresh1
76*256a93a4Safresh1$x = NaN * inf;
77*256a93a4Safresh1is(ref($x), $class, "\$x = NaN * inf makes a $class");
78*256a93a4Safresh1is($x->bstr(), "NaN", '$x = NaN * inf; $x->bstr() = "NaN"');
79*256a93a4Safresh1
80*256a93a4Safresh1$x = inf * NaN;
81*256a93a4Safresh1is(ref($x), $class, "\$x = inf * NaN makes a $class");
82*256a93a4Safresh1is($x->bstr(), "NaN", '$x = inf * NaN; $x->bstr() = "NaN"');
83*256a93a4Safresh1
84*256a93a4Safresh1###############################################################################
85*256a93a4Safresh1# inf and NaN as strings.
86*256a93a4Safresh1
87*256a93a4Safresh1for my $nan (qw/ nan naN nAn nAN Nan NaN NAn NAN /) {
88*256a93a4Safresh1    my $x = 1 + $nan;
89*256a93a4Safresh1    is($x->bstr(), "NaN", qq|\$x = 1 + "$nan"|);
90*256a93a4Safresh1    is(ref($x), $class, "\$x is a $class");
91*256a93a4Safresh1}
92*256a93a4Safresh1
93*256a93a4Safresh1for my $inf (qw/ inf inF iNf iNF Inf InF INf INF
94*256a93a4Safresh1                 infinity Infinity InFiNiTy iNfInItY
95*256a93a4Safresh1               /)
96*256a93a4Safresh1{
97*256a93a4Safresh1    my $x = 1 + $inf;
98*256a93a4Safresh1    is($x->bstr(), "inf", qq|\$x = 1 + "$inf"|);
99*256a93a4Safresh1    is(ref($x), $class, "\$x is a $class");
100*256a93a4Safresh1}
101