xref: /openbsd-src/gnu/usr.bin/perl/cpan/JSON-PP/t/052_object.t (revision 256a93a44f36679bee503f12e49566c2183f6181)
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