#!perl
use strict;
use warnings;
use Test::More tests => 220;
use Math::BigInt;
while (<DATA>) {
s/#.*$//; # remove comments
s/\s+$//; # remove trailing whitespace
next unless length; # skip empty lines
my ($x_str, $expected) = split /:/;
my ($x, $str);
my $test = qq|\$x = Math::BigInt -> new("$x_str");|
. qq| \$str = \$x -> bestr();|;
note "\n$test\n\n";
eval $test;
is($str, $expected, qq|input value is "$x_str"|);
is($x, $x_str, "input object is unmodified");
}
__DATA__
NaN:NaN
inf:inf
-inf:-inf
0:0e+0
# positive numbers
1:1e+0
10:10e+0
100:100e+0
1000:1e+3
10000:10e+3
100000:100e+3
1000000:1e+6
10000000:10e+6
100000000:100e+6
1000000000:1e+9
10000000000:10e+9
100000000000:100e+9
1000000000000:1e+12
12:12e+0
120:120e+0
1200:1.2e+3
12000:12e+3
120000:120e+3
1200000:1.2e+6
12000000:12e+6
120000000:120e+6
1200000000:1.2e+9
12000000000:12e+9
120000000000:120e+9
1200000000000:1.2e+12
123:123e+0
1230:1.23e+3
12300:12.3e+3
123000:123e+3
1230000:1.23e+6
12300000:12.3e+6
123000000:123e+6
1230000000:1.23e+9
12300000000:12.3e+9
123000000000:123e+9
1230000000000:1.23e+12
1234:1.234e+3
12340:12.34e+3
123400:123.4e+3
1234000:1.234e+6
12340000:12.34e+6
123400000:123.4e+6
1234000000:1.234e+9
12340000000:12.34e+9
123400000000:123.4e+9
1234000000000:1.234e+12
3:3e+0
31:31e+0
314:314e+0
3141:3.141e+3
31415:31.415e+3
314159:314.159e+3
3141592:3.141592e+6
# negative numbers
-1:-1e+0
-10:-10e+0
-100:-100e+0
-1000:-1e+3
-10000:-10e+3
-100000:-100e+3
-1000000:-1e+6
-10000000:-10e+6
-100000000:-100e+6
-1000000000:-1e+9
-10000000000:-10e+9
-100000000000:-100e+9
-1000000000000:-1e+12
-12:-12e+0
-120:-120e+0
-1200:-1.2e+3
-12000:-12e+3
-120000:-120e+3
-1200000:-1.2e+6
-12000000:-12e+6
-120000000:-120e+6
-1200000000:-1.2e+9
-12000000000:-12e+9
-120000000000:-120e+9
-1200000000000:-1.2e+12
-123:-123e+0
-1230:-1.23e+3
-12300:-12.3e+3
-123000:-123e+3
-1230000:-1.23e+6
-12300000:-12.3e+6
-123000000:-123e+6
-1230000000:-1.23e+9
-12300000000:-12.3e+9
-123000000000:-123e+9
-1230000000000:-1.23e+12
-1234:-1.234e+3
-12340:-12.34e+3
-123400:-123.4e+3
-1234000:-1.234e+6
-12340000:-12.34e+6
-123400000:-123.4e+6
-1234000000:-1.234e+9
-12340000000:-12.34e+9
-123400000000:-123.4e+9
-1234000000000:-1.234e+12
-3:-3e+0
-31:-31e+0
-314:-314e+0
-3141:-3.141e+3
-31415:-31.415e+3
-314159:-314.159e+3
-3141592:-3.141592e+6