1# -*- mode: perl; -*- 2 3use strict; 4use warnings; 5 6use Test::More tests => 220; 7 8use Math::BigInt; 9 10while (<DATA>) { 11 s/#.*$//; # remove comments 12 s/\s+$//; # remove trailing whitespace 13 next unless length; # skip empty lines 14 15 my ($x_str, $expected) = split /:/; 16 my ($x, $str); 17 18 my $test = qq|\$x = Math::BigInt -> new("$x_str");| 19 . qq| \$str = \$x -> bestr();|; 20 21 note "\n$test\n\n"; 22 eval $test; 23 24 is($str, $expected, qq|input value is "$x_str"|); 25 is($x, $x_str, "input object is unmodified"); 26} 27 28__DATA__ 29 30NaN:NaN 31 32inf:inf 33-inf:-inf 34 350:0e+0 36 37# positive numbers 38 391:1e+0 4010:10e+0 41100:100e+0 421000:1e+3 4310000:10e+3 44100000:100e+3 451000000:1e+6 4610000000:10e+6 47100000000:100e+6 481000000000:1e+9 4910000000000:10e+9 50100000000000:100e+9 511000000000000:1e+12 52 5312:12e+0 54120:120e+0 551200:1.2e+3 5612000:12e+3 57120000:120e+3 581200000:1.2e+6 5912000000:12e+6 60120000000:120e+6 611200000000:1.2e+9 6212000000000:12e+9 63120000000000:120e+9 641200000000000:1.2e+12 65 66123:123e+0 671230:1.23e+3 6812300:12.3e+3 69123000:123e+3 701230000:1.23e+6 7112300000:12.3e+6 72123000000:123e+6 731230000000:1.23e+9 7412300000000:12.3e+9 75123000000000:123e+9 761230000000000:1.23e+12 77 781234:1.234e+3 7912340:12.34e+3 80123400:123.4e+3 811234000:1.234e+6 8212340000:12.34e+6 83123400000:123.4e+6 841234000000:1.234e+9 8512340000000:12.34e+9 86123400000000:123.4e+9 871234000000000:1.234e+12 88 893:3e+0 9031:31e+0 91314:314e+0 923141:3.141e+3 9331415:31.415e+3 94314159:314.159e+3 953141592:3.141592e+6 96 97# negative numbers 98 99-1:-1e+0 100-10:-10e+0 101-100:-100e+0 102-1000:-1e+3 103-10000:-10e+3 104-100000:-100e+3 105-1000000:-1e+6 106-10000000:-10e+6 107-100000000:-100e+6 108-1000000000:-1e+9 109-10000000000:-10e+9 110-100000000000:-100e+9 111-1000000000000:-1e+12 112 113-12:-12e+0 114-120:-120e+0 115-1200:-1.2e+3 116-12000:-12e+3 117-120000:-120e+3 118-1200000:-1.2e+6 119-12000000:-12e+6 120-120000000:-120e+6 121-1200000000:-1.2e+9 122-12000000000:-12e+9 123-120000000000:-120e+9 124-1200000000000:-1.2e+12 125 126-123:-123e+0 127-1230:-1.23e+3 128-12300:-12.3e+3 129-123000:-123e+3 130-1230000:-1.23e+6 131-12300000:-12.3e+6 132-123000000:-123e+6 133-1230000000:-1.23e+9 134-12300000000:-12.3e+9 135-123000000000:-123e+9 136-1230000000000:-1.23e+12 137 138-1234:-1.234e+3 139-12340:-12.34e+3 140-123400:-123.4e+3 141-1234000:-1.234e+6 142-12340000:-12.34e+6 143-123400000:-123.4e+6 144-1234000000:-1.234e+9 145-12340000000:-12.34e+9 146-123400000000:-123.4e+9 147-1234000000000:-1.234e+12 148 149-3:-3e+0 150-31:-31e+0 151-314:-314e+0 152-3141:-3.141e+3 153-31415:-31.415e+3 154-314159:-314.159e+3 155-3141592:-3.141592e+6 156