Blame t/08_pc_base.t

Packit Service 639957
use Test::More;
Packit Service 639957
Packit Service 639957
# copied over from JSON::PC and modified to use JSON
Packit Service 639957
# copied over from JSON::XS and modified to use JSON
Packit Service 639957
Packit Service 639957
use strict;
Packit Service 639957
BEGIN { plan tests => 20 };
Packit Service 639957
Packit Service 639957
BEGIN { $ENV{PERL_JSON_BACKEND} ||= "JSON::backportPP"; }
Packit Service 639957
Packit Service 639957
use JSON;
Packit Service 639957
Packit Service 639957
my ($js,$obj);
Packit Service 639957
Packit Service 639957
my $pc = new JSON;
Packit Service 639957
Packit Service 639957
$js  = q|{}|;
Packit Service 639957
Packit Service 639957
$obj = $pc->decode($js);
Packit Service 639957
$js  = $pc->encode($obj);
Packit Service 639957
is($js,'{}', '{}');
Packit Service 639957
Packit Service 639957
$js  = q|[]|;
Packit Service 639957
$obj = $pc->decode($js);
Packit Service 639957
$js  = $pc->encode($obj);
Packit Service 639957
is($js,'[]', '[]');
Packit Service 639957
Packit Service 639957
Packit Service 639957
$js  = q|{"foo":"bar"}|;
Packit Service 639957
$obj = $pc->decode($js);
Packit Service 639957
is($obj->{foo},'bar');
Packit Service 639957
$js  = $pc->encode($obj);
Packit Service 639957
is($js,'{"foo":"bar"}', '{"foo":"bar"}');
Packit Service 639957
Packit Service 639957
$js  = q|{"foo":""}|;
Packit Service 639957
$obj = $pc->decode($js);
Packit Service 639957
$js  = $pc->encode($obj);
Packit Service 639957
is($js,'{"foo":""}', '{"foo":""}');
Packit Service 639957
Packit Service 639957
$js  = q|{"foo":" "}|;
Packit Service 639957
$obj = $pc->decode($js);
Packit Service 639957
$js  = $pc->encode($obj);
Packit Service 639957
is($js,'{"foo":" "}' ,'{"foo":" "}');
Packit Service 639957
Packit Service 639957
$js  = q|{"foo":"0"}|;
Packit Service 639957
$obj = $pc->decode($js);
Packit Service 639957
$js  = $pc->encode($obj);
Packit Service 639957
is($js,'{"foo":"0"}',q|{"foo":"0"} - autoencode (default)|);
Packit Service 639957
Packit Service 639957
Packit Service 639957
$js  = q|{"foo":"0 0"}|;
Packit Service 639957
$obj = $pc->decode($js);
Packit Service 639957
$js  = $pc->encode($obj);
Packit Service 639957
is($js,'{"foo":"0 0"}','{"foo":"0 0"}');
Packit Service 639957
Packit Service 639957
$js  = q|[1,2,3]|;
Packit Service 639957
$obj = $pc->decode($js);
Packit Service 639957
is($obj->[1],2);
Packit Service 639957
$js  = $pc->encode($obj);
Packit Service 639957
is($js,'[1,2,3]');
Packit Service 639957
Packit Service 639957
$js = q|{"foo":{"bar":"hoge"}}|;
Packit Service 639957
$obj = $pc->decode($js);
Packit Service 639957
is($obj->{foo}->{bar},'hoge');
Packit Service 639957
$js  = $pc->encode($obj);
Packit Service 639957
is($js,q|{"foo":{"bar":"hoge"}}|);
Packit Service 639957
Packit Service 639957
$js = q|[{"foo":[1,2,3]},-0.12,{"a":"b"}]|;
Packit Service 639957
$obj = $pc->decode($js);
Packit Service 639957
$js  = $pc->encode($obj);
Packit Service 639957
is($js,q|[{"foo":[1,2,3]},-0.12,{"a":"b"}]|);
Packit Service 639957
Packit Service 639957
Packit Service 639957
$obj = ["\x01"];
Packit Service 639957
is($js = $pc->encode($obj),'["\\u0001"]');
Packit Service 639957
$obj = $pc->decode($js);
Packit Service 639957
is($obj->[0],"\x01");
Packit Service 639957
Packit Service 639957
$obj = ["\e"];
Packit Service 639957
is($js = $pc->encode($obj),'["\\u001b"]');
Packit Service 639957
$obj = $pc->decode($js);
Packit Service 639957
is($obj->[0],"\e");
Packit Service 639957
Packit Service 639957
$js = '{"id":"}';
Packit Service 639957
eval q{ $pc->decode($js) };
Packit Service 639957
like($@, qr/unexpected end/i);
Packit Service 639957
Packit Service 639957
$obj = { foo => sub { "bar" } };
Packit Service 639957
eval q{ $js = $pc->encode($obj) };
Packit Service 639957
like($@, qr/JSON can only/i, 'invalid value (coderef)');
Packit Service 639957
Packit Service 639957
#$obj = { foo => bless {}, "Hoge" };
Packit Service 639957
#eval q{ $js = $pc->encode($obj) };
Packit Service 639957
#like($@, qr/JSON can only/i, 'invalid value (blessd object)');
Packit Service 639957
Packit Service 639957
$obj = { foo => \$js };
Packit Service 639957
eval q{ $js = $pc->encode($obj) };
Packit Service 639957
like($@, qr/cannot encode reference/i, 'invalid value (ref)');
Packit Service 639957