1f3efcd01Safresh1# copied over from JSON::XS and modified to use JSON::PP 2f3efcd01Safresh1 3*256a93a4Safresh1package JSON::PP::freeze; 4*256a93a4Safresh1 5*256a93a4Safresh11; 6*256a93a4Safresh1 7*256a93a4Safresh1package JSON::PP::tojson; 8*256a93a4Safresh1 9*256a93a4Safresh11; 10*256a93a4Safresh1 11*256a93a4Safresh1package main; 12*256a93a4Safresh1 13f3efcd01Safresh1use strict; 14*256a93a4Safresh1use warnings; 15f3efcd01Safresh1use Test::More; 16f3efcd01Safresh1BEGIN { plan tests => 20 }; 17f3efcd01Safresh1BEGIN { $^W = 0 } # hate 18f3efcd01Safresh1 19f3efcd01Safresh1BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } 20f3efcd01Safresh1 21f3efcd01Safresh1use JSON::PP; 22f3efcd01Safresh1 23f3efcd01Safresh1my $json = JSON::PP->new->convert_blessed->allow_tags->allow_nonref; 24f3efcd01Safresh1 25f3efcd01Safresh1ok (1); 26f3efcd01Safresh1 27f3efcd01Safresh1sub JSON::PP::tojson::TO_JSON { 28f3efcd01Safresh1 ok (@_ == 1); 29f3efcd01Safresh1 ok (JSON::PP::tojson:: eq ref $_[0]); 30f3efcd01Safresh1 ok ($_[0]{k} == 1); 31f3efcd01Safresh1 7 32f3efcd01Safresh1} 33f3efcd01Safresh1 34f3efcd01Safresh1my $obj = bless { k => 1 }, JSON::PP::tojson::; 35f3efcd01Safresh1 36f3efcd01Safresh1ok (1); 37f3efcd01Safresh1 38f3efcd01Safresh1my $enc = $json->encode ($obj); 39f3efcd01Safresh1ok ($enc eq 7); 40f3efcd01Safresh1 41f3efcd01Safresh1ok (1); 42f3efcd01Safresh1 43f3efcd01Safresh1sub JSON::PP::freeze::FREEZE { 44f3efcd01Safresh1 ok (@_ == 2); 45f3efcd01Safresh1 ok ($_[1] eq "JSON"); 46f3efcd01Safresh1 ok (JSON::PP::freeze:: eq ref $_[0]); 47f3efcd01Safresh1 ok ($_[0]{k} == 1); 48f3efcd01Safresh1 (3, 1, 2) 49f3efcd01Safresh1} 50f3efcd01Safresh1 51f3efcd01Safresh1sub JSON::PP::freeze::THAW { 52f3efcd01Safresh1 ok (@_ == 5); 53f3efcd01Safresh1 ok (JSON::PP::freeze:: eq $_[0]); 54f3efcd01Safresh1 ok ($_[1] eq "JSON"); 55f3efcd01Safresh1 ok ($_[2] == 3); 56f3efcd01Safresh1 ok ($_[3] == 1); 57f3efcd01Safresh1 ok ($_[4] == 2); 58f3efcd01Safresh1 777 59f3efcd01Safresh1} 60f3efcd01Safresh1 61*256a93a4Safresh1$obj = bless { k => 1 }, JSON::PP::freeze::; 62*256a93a4Safresh1$enc = $json->encode ($obj); 63f3efcd01Safresh1ok ($enc eq '("JSON::PP::freeze")[3,1,2]'); 64f3efcd01Safresh1 65f3efcd01Safresh1my $dec = $json->decode ($enc); 66f3efcd01Safresh1ok ($dec eq 777); 67f3efcd01Safresh1 68f3efcd01Safresh1ok (1); 69f3efcd01Safresh1 70