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