1# copied over from JSON::XS and modified to use JSON 2use strict; 3use Test::More; 4 5BEGIN { plan tests => 76 }; 6 7BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } 8 9use JSON; 10 11 12ok (!defined JSON->new->allow_nonref (1)->decode ('null')); 13ok (JSON->new->allow_nonref (1)->decode ('true') == 1); 14ok (JSON->new->allow_nonref (1)->decode ('false') == 0); 15 16my $true = JSON->new->allow_nonref (1)->decode ('true'); 17ok ($true eq 1); 18ok (JSON::is_bool $true); 19my $false = JSON->new->allow_nonref (1)->decode ('false'); 20ok ($false == !$true); 21ok (JSON::is_bool $false); 22ok (++$false == 1); 23ok (!JSON::is_bool $false); 24 25ok (JSON->new->allow_nonref (1)->decode ('5') == 5); 26ok (JSON->new->allow_nonref (1)->decode ('-5') == -5); 27ok (JSON->new->allow_nonref (1)->decode ('5e1') == 50); 28ok (JSON->new->allow_nonref (1)->decode ('-333e+0') == -333); 29ok (JSON->new->allow_nonref (1)->decode ('2.5') == 2.5); 30 31ok (JSON->new->allow_nonref (1)->decode ('""') eq ""); 32ok ('[1,2,3,4]' eq encode_json decode_json ('[1,2, 3,4]')); 33ok ('[{},[],[],{}]' eq encode_json decode_json ('[{},[], [ ] ,{ }]')); 34ok ('[{"1":[5]}]' eq encode_json [{1 => [5]}]); 35ok ('{"1":2,"3":4}' eq JSON->new->canonical (1)->encode (decode_json '{ "1" : 2, "3" : 4 }')); 36ok ('{"1":2,"3":1.2}' eq JSON->new->canonical (1)->encode (decode_json '{ "1" : 2, "3" : 1.2 }')); 37 38ok ('[true]' eq encode_json [JSON::true]); 39ok ('[false]' eq encode_json [JSON::false]); 40ok ('[true]' eq encode_json [\1]); 41ok ('[false]' eq encode_json [\0]); 42ok ('[null]' eq encode_json [undef]); 43ok ('[true]' eq encode_json [JSON::true]); 44ok ('[false]' eq encode_json [JSON::false]); 45 46for my $v (1, 2, 3, 5, -1, -2, -3, -4, 100, 1000, 10000, -999, -88, -7, 7, 88, 999, -1e5, 1e6, 1e7, 1e8) { 47 ok ($v == ((decode_json "[$v]")->[0])); 48 ok ($v == ((decode_json encode_json [$v])->[0])); 49} 50 51ok (30123 == ((decode_json encode_json [30123])->[0])); 52ok (32123 == ((decode_json encode_json [32123])->[0])); 53ok (32456 == ((decode_json encode_json [32456])->[0])); 54ok (32789 == ((decode_json encode_json [32789])->[0])); 55ok (32767 == ((decode_json encode_json [32767])->[0])); 56ok (32768 == ((decode_json encode_json [32768])->[0])); 57 58my @sparse; @sparse[0,3] = (1, 4); 59ok ("[1,null,null,4]" eq encode_json \@sparse); 60 61