1 |
BEGIN { $| = 1; print "1..15\n"; } |
2 |
|
3 |
use JSON::XS; |
4 |
|
5 |
our $test; |
6 |
sub ok($;$) { |
7 |
print $_[0] ? "" : "not ", "ok ", ++$test, "\n"; |
8 |
} |
9 |
|
10 |
my $o1 = bless { a => 3 }, "XX"; |
11 |
my $o2 = bless \(my $dummy = 1), "YY"; |
12 |
|
13 |
sub XX::TO_JSON { |
14 |
{__,""} |
15 |
} |
16 |
|
17 |
my $js = JSON::XS->new; |
18 |
|
19 |
eval { $js->encode ($o1) }; ok ($@ =~ /allow_blessed/); |
20 |
eval { $js->encode ($o2) }; ok ($@ =~ /allow_blessed/); |
21 |
$js->allow_blessed; |
22 |
ok ($js->encode ($o1) eq "null"); |
23 |
ok ($js->encode ($o2) eq "null"); |
24 |
$js->convert_blessed; |
25 |
ok ($js->encode ($o1) eq '{"__":""}'); |
26 |
ok ($js->encode ($o2) eq "null"); |
27 |
|
28 |
$js->filter_json_object (sub { 5 }); |
29 |
$js->filter_json_single_key_object (sub { 6 }); |
30 |
|
31 |
ok ("ARRAY" eq ref $js->decode ("[]")); |
32 |
ok (5 eq join ":", @{ $js->decode ('[{}]') }); |
33 |
ok (6 eq join ":", @{ $js->decode ('[{"a":4}]') }); |
34 |
ok (5 eq join ":", @{ $js->decode ('[{"a":4,"b":7}]') }); |
35 |
|
36 |
$js->filter_json_object; |
37 |
ok (7 == $js->decode ('[{"a":4,"b":7}]')->[0]{b}); |
38 |
ok (6 eq join ":", @{ $js->decode ('[{"a":4}]') }); |
39 |
|
40 |
$js->filter_json_object (sub { }); |
41 |
ok (7 == $js->decode ('[{"a":4,"b":7}]')->[0]{b}); |
42 |
ok (6 eq join ":", @{ $js->decode ('[{"a":4}]') }); |
43 |
|
44 |
$js->filter_json_single_key_object (sub { }); |
45 |
ok (4 == $js->decode ('[{"a":4}]')->[0]{a}); |
46 |
|