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