Index: third_party/JSON/JSON-2.59/t/e10_bignum.t |
diff --git a/third_party/JSON/JSON-2.59/t/e10_bignum.t b/third_party/JSON/JSON-2.59/t/e10_bignum.t |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5774f7d20ae3850d4434b8eebb0b4432e674dbf3 |
--- /dev/null |
+++ b/third_party/JSON/JSON-2.59/t/e10_bignum.t |
@@ -0,0 +1,41 @@ |
+ |
+use strict; |
+use Test::More; |
+BEGIN { plan tests => 6 }; |
+ |
+BEGIN { $ENV{PERL_JSON_BACKEND} = "JSON::backportPP"; } |
+ |
+use JSON -support_by_pp; |
+ |
+eval q| require Math::BigInt |; |
+ |
+SKIP: { |
+ skip "Can't load Math::BigInt.", 6 if ($@); |
+ |
+ my $v = Math::BigInt->VERSION; |
+ $v =~ s/_.+$// if $v; |
+ |
+my $fix = !$v ? '+' |
+ : $v < 1.6 ? '+' |
+ : ''; |
+ |
+ |
+my $json = new JSON; |
+ |
+$json->allow_nonref->allow_bignum(1); |
+$json->convert_blessed->allow_blessed; |
+ |
+my $num = $json->decode(q|100000000000000000000000000000000000000|); |
+ |
+isa_ok($num, 'Math::BigInt'); |
+is("$num", $fix . '100000000000000000000000000000000000000'); |
+is($json->encode($num), $fix . '100000000000000000000000000000000000000'); |
+ |
+$num = $json->decode(q|2.0000000000000000001|); |
+ |
+isa_ok($num, 'Math::BigFloat'); |
+is("$num", '2.0000000000000000001'); |
+is($json->encode($num), '2.0000000000000000001'); |
+ |
+ |
+} |