Index: third_party/JSON/JSON-2.59/t/12_blessed.t |
diff --git a/third_party/JSON/JSON-2.59/t/12_blessed.t b/third_party/JSON/JSON-2.59/t/12_blessed.t |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ddd7907796514fe966f0507bc5329adc83edd1b7 |
--- /dev/null |
+++ b/third_party/JSON/JSON-2.59/t/12_blessed.t |
@@ -0,0 +1,53 @@ |
+# copied over from JSON::XS and modified to use JSON |
+ |
+use strict; |
+use Test::More; |
+BEGIN { plan tests => 16 }; |
+ |
+BEGIN { $ENV{PERL_JSON_BACKEND} = "JSON::backportPP"; } |
+ |
+use JSON; |
+ |
+ |
+my $o1 = bless { a => 3 }, "XX"; |
+my $o2 = bless \(my $dummy = 1), "YY"; |
+ |
+sub XX::TO_JSON { |
+ {'__',""} |
+} |
+ |
+my $js = JSON->new; |
+ |
+eval { $js->encode ($o1) }; ok ($@ =~ /allow_blessed/); |
+eval { $js->encode ($o2) }; ok ($@ =~ /allow_blessed/); |
+$js->allow_blessed; |
+ok ($js->encode ($o1) eq "null"); |
+ok ($js->encode ($o2) eq "null"); |
+$js->convert_blessed; |
+ok ($js->encode ($o1) eq '{"__":""}'); |
+ |
+ok ($js->encode ($o2) eq "null"); |
+ |
+$js->filter_json_object (sub { 5 }); |
+$js->filter_json_single_key_object (a => sub { shift }); |
+$js->filter_json_single_key_object (b => sub { 7 }); |
+ |
+ok ("ARRAY" eq ref $js->decode ("[]")); |
+ok (5 eq join ":", @{ $js->decode ('[{}]') }); |
+ok (6 eq join ":", @{ $js->decode ('[{"a":6}]') }); |
+ok (5 eq join ":", @{ $js->decode ('[{"a":4,"b":7}]') }); |
+ |
+$js->filter_json_object; |
+ok (7 == $js->decode ('[{"a":4,"b":7}]')->[0]{b}); |
+ok (3 eq join ":", @{ $js->decode ('[{"a":3}]') }); |
+ |
+$js->filter_json_object (sub { }); |
+ok (7 == $js->decode ('[{"a":4,"b":7}]')->[0]{b}); |
+ok (9 eq join ":", @{ $js->decode ('[{"a":9}]') }); |
+ |
+$js->filter_json_single_key_object ("a"); |
+ok (4 == $js->decode ('[{"a":4}]')->[0]{a}); |
+ |
+#$js->filter_json_single_key_object (a => sub {}); |
+$js->filter_json_single_key_object (a => sub { return; }); # sub {} is not suitable for Perl 5.6 |
+ok (4 == $js->decode ('[{"a":4}]')->[0]{a}); |