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