The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl
use strict;
use warnings;
use Test::More;
use JSON::SL;
use Devel::Peek;
use Data::Dumper;

my $sl = JSON::SL->new();
my $h = {};
my $v = [];

ok($sl->referrent_is_writeable($h), "Hash is writeable");
ok($sl->referrent_is_writeable(\$v), "Value (arrayref) is writeable");

$h->{something} = $v;
#make it read-only

$sl->make_referrent_readonly($h);
ok(!$sl->referrent_is_writeable($h), "Reference is read-only");

$sl->make_referrent_readonly(\$h->{something});
ok(!$sl->referrent_is_writeable(\$h->{something}), "Value is read-only");

eval {
    delete $h->{something};
};

ok($@, "Got error for modifying read-only hash ($@)");

$sl->make_referrent_writeable($h);
ok($sl->referrent_is_writeable($h), "Variable is writeable once more");
delete $h->{something};

done_testing();