weak ref support
[p5sagit/Data-Dumper-ToXS.git] / t / basic.t
1 use strictures 1;
2 use Test::More;
3 use Data::Dumper::ToXS::Test;
4 use Data::Dumper;
5 use Devel::Peek qw(SvREFCNT);
6 use Scalar::Util qw(isweak);
7
8 my @fix = do 't/fixtures.pl' or die "t/fixtures.pl: $@";
9
10 $Data::Dumper::Sortkeys = 1;
11 $Data::Dumper::Deparse = 1;
12
13 my (%source, %result);
14
15 foreach my $f (@fix) {
16   my $d = Dumper($source{$f->[0]} = $f->[1]);
17   my $l = Dumper($result{$f->[0]} = Data::Dumper::ToXS::Test->can($f->[0])->());
18   is($l, $d, "Round tripped ${\$f->[0]} ok");
19 }
20
21 {
22   my $r = $result{weaken_1};
23   ok(isweak($r->[1]), 'Weak element is weak');
24   is(SvREFCNT(${$r->[1]}), 2, 'Refcount of target correct');
25 }
26
27 done_testing;