1 | BEGIN { $| = 1; print "1..19\n"; } |
1 | BEGIN { $| = 1; print "1..76\n"; } |
2 | |
2 | |
3 | use utf8; |
3 | use utf8; |
|
|
4 | use Types::Serialiser; |
4 | use JSON::XS; |
5 | use JSON::XS; |
5 | |
6 | |
6 | our $test; |
7 | our $test; |
7 | sub ok($) { |
8 | sub ok($) { |
8 | print $_[0] ? "" : "not ", "ok ", ++$test, "\n"; |
9 | print $_[0] ? "" : "not ", "ok ", ++$test, "\n"; |
… | |
… | |
10 | |
11 | |
11 | ok (!defined JSON::XS->new->allow_nonref (1)->decode ('null')); |
12 | ok (!defined JSON::XS->new->allow_nonref (1)->decode ('null')); |
12 | ok (JSON::XS->new->allow_nonref (1)->decode ('true') == 1); |
13 | ok (JSON::XS->new->allow_nonref (1)->decode ('true') == 1); |
13 | ok (JSON::XS->new->allow_nonref (1)->decode ('false') == 0); |
14 | ok (JSON::XS->new->allow_nonref (1)->decode ('false') == 0); |
14 | |
15 | |
|
|
16 | my $true = JSON::XS->new->allow_nonref (1)->decode ('true'); |
|
|
17 | ok ($true eq 1); |
|
|
18 | ok (Types::Serialiser::is_bool $true); |
|
|
19 | my $false = JSON::XS->new->allow_nonref (1)->decode ('false'); |
|
|
20 | ok ($false == !$true); |
|
|
21 | ok (Types::Serialiser::is_bool $false); |
|
|
22 | ok (++$false == 1); |
|
|
23 | ok (!Types::Serialiser::is_bool $false); |
|
|
24 | |
15 | ok (JSON::XS->new->allow_nonref (1)->decode ('5') == 5); |
25 | ok (JSON::XS->new->allow_nonref (1)->decode ('5') == 5); |
16 | ok (JSON::XS->new->allow_nonref (1)->decode ('-5') == -5); |
26 | ok (JSON::XS->new->allow_nonref (1)->decode ('-5') == -5); |
17 | ok (JSON::XS->new->allow_nonref (1)->decode ('5e1') == 50); |
27 | ok (JSON::XS->new->allow_nonref (1)->decode ('5e1') == 50); |
18 | ok (JSON::XS->new->allow_nonref (1)->decode ('-333e+0') == -333); |
28 | ok (JSON::XS->new->allow_nonref (1)->decode ('-333e+0') == -333); |
19 | ok (JSON::XS->new->allow_nonref (1)->decode ('2.5') == 2.5); |
29 | ok (JSON::XS->new->allow_nonref (1)->decode ('2.5') == 2.5); |
20 | |
30 | |
21 | ok (JSON::XS->new->allow_nonref (1)->decode ('""') eq ""); |
31 | ok (JSON::XS->new->allow_nonref (1)->decode ('""') eq ""); |
22 | ok ('[1,2,3,4]' eq to_json from_json ('[1,2, 3,4]')); |
32 | ok ('[1,2,3,4]' eq encode_json decode_json ('[1,2, 3,4]')); |
23 | ok ('[{},[],[],{}]' eq to_json from_json ('[{},[], [ ] ,{ }]')); |
33 | ok ('[{},[],[],{}]' eq encode_json decode_json ('[{},[], [ ] ,{ }]')); |
24 | ok ('[{"1":[5]}]' eq to_json [{1 => [5]}]); |
34 | ok ('[{"1":[5]}]' eq encode_json [{1 => [5]}]); |
25 | ok ('{"1":2,"3":4}' eq JSON::XS->new->canonical (1)->encode (from_json '{ "1" : 2, "3" : 4 }')); |
35 | ok ('{"1":2,"3":4}' eq JSON::XS->new->canonical (1)->encode (decode_json '{ "1" : 2, "3" : 4 }')); |
26 | ok ('{"1":2,"3":1.2}' eq JSON::XS->new->canonical (1)->encode (from_json '{ "1" : 2, "3" : 1.2 }')); |
36 | ok ('{"1":2,"3":1.2}' eq JSON::XS->new->canonical (1)->encode (decode_json '{ "1" : 2, "3" : 1.2 }')); |
27 | |
37 | |
28 | ok ('[true]' eq to_json [JSON::XS::true]); |
38 | ok ('[true]' eq encode_json [Types::Serialiser::true]); |
29 | ok ('[false]' eq to_json [JSON::XS::false]); |
39 | ok ('[false]' eq encode_json [Types::Serialiser::false]); |
30 | ok ('[true]' eq to_json [\1]); |
40 | ok ('[true]' eq encode_json [\1]); |
31 | ok ('[false]' eq to_json [\0]); |
41 | ok ('[false]' eq encode_json [\0]); |
32 | ok ('[null]' eq to_json [undef]); |
42 | ok ('[null]' eq encode_json [undef]); |
|
|
43 | ok ('[true]' eq encode_json [Types::Serialiser::true]); |
|
|
44 | ok ('[false]' eq encode_json [Types::Serialiser::false]); |
|
|
45 | |
|
|
46 | for $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 | |
|
|
51 | ok (30123 == ((decode_json encode_json [30123])->[0])); |
|
|
52 | ok (32123 == ((decode_json encode_json [32123])->[0])); |
|
|
53 | ok (32456 == ((decode_json encode_json [32456])->[0])); |
|
|
54 | ok (32789 == ((decode_json encode_json [32789])->[0])); |
|
|
55 | ok (32767 == ((decode_json encode_json [32767])->[0])); |
|
|
56 | ok (32768 == ((decode_json encode_json [32768])->[0])); |
|
|
57 | |
|
|
58 | my @sparse; @sparse[0,3] = (1, 4); |
|
|
59 | ok ("[1,null,null,4]" eq encode_json \@sparse); |
|
|
60 | |