Index: third_party/JSON/JSON-2.59/t/x12_blessed.t |
diff --git a/third_party/JSON/JSON-2.59/t/x12_blessed.t b/third_party/JSON/JSON-2.59/t/x12_blessed.t |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b6df13aef79b12ef4e55d6246af09c80cce8c810 |
--- /dev/null |
+++ b/third_party/JSON/JSON-2.59/t/x12_blessed.t |
@@ -0,0 +1,54 @@ |
+use strict; |
+use Test::More; |
+BEGIN { plan tests => 16 }; |
+ |
+BEGIN { $ENV{PERL_JSON_BACKEND} = 1; } |
+ |
+use JSON; |
+ |
+SKIP: { |
+ skip "can't use JSON::XS.", 16, unless( JSON->backend->is_xs ); |
+ |
+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 {}); |
+ok (4 == $js->decode ('[{"a":4}]')->[0]{a}); |
+ |
+} |