Data-Clean-ForJSON
view release on metacpan or search on metacpan
t/for_json.t view on Meta::CPAN
use Test::More 0.98;
use Test::Needs;
use Data::Clean::ForJSON qw(clean_json_in_place clone_and_clean_json);
use DateTime;
use JSON::PP;
use Scalar::Util qw(blessed);
my $c = Data::Clean::ForJSON->get_cleanser;
my $data;
my $cdata;
$cdata = $c->clean_in_place({
code => sub{} ,
date => DateTime->from_epoch(epoch=>1001),
scalar => \1,
version => version->parse('1.2'),
obj => bless({},"Foo"),
});
is_deeply($cdata, {
code => "CODE",
date => 1001,
scalar => 1 ,
version => '1.2',
obj => {},
}, "cleaning up");
{
my $ref = [];
$data = {a=>$ref, b=>$ref};
$cdata = $c->clone_and_clean($data);
#use Data::Dump; dd $data; dd $cdata;
is_deeply($cdata, {a=>[], b=>[]}, "circular")
or diag explain $cdata;
}
subtest "unbless does not modify original object when using clone_and_clean()" => sub {
my $data = bless({},"Foo");
my $cdata = $c->clone_and_clean($data);
is_deeply($cdata, {}, "cleaned data");
is_deeply($data , bless({},"Foo"), "original data");
# is_deeply doesn't differentiate blessed and unblessed, so we test it here
ok(blessed($data), "original data blessed");
};
subtest "unbless modifies original object when using clean_in_place()" => sub {
my $data = [bless({},"Foo")];
$c->clean_in_place($data);
is_deeply($data , [{}], "original data modified");
# is_deeply doesn't differentiate blessed and unblessed, so we test it here
t/from_json.t view on Meta::CPAN
use strict;
use warnings;
use Test::More 0.98;
use Data::Clean::FromJSON;
use DateTime;
my $c = Data::Clean::FromJSON->get_cleanser;
subtest 'JSON::PP::Boolean object' => sub {
my $cdata = $c->clean_in_place(
[
bless(do{\(my $o=1)}, "JSON::PP::Boolean"),
bless(do{\(my $o=0)}, "JSON::PP::Boolean"),
],
);
is_deeply($cdata, [
1,
0,
], "cleaned up") or diag explain $cdata;
};
done_testing;
( run in 0.244 second using v1.01-cache-2.11-cpan-454fe037f31 )