%PDF- %PDF-
Direktori : /home/opti/optisoftcom/.cpanm/work/1544535406.20768/Sub-Quote-2.005001/t/ |
Current File : /home/opti/optisoftcom/.cpanm/work/1544535406.20768/Sub-Quote-2.005001/t/leaks.t |
use strict; use warnings; no warnings 'once'; use Test::More; use Test::Fatal; use Data::Dumper; use Sub::Quote qw( quote_sub unquote_sub quoted_from_sub ); { my $foo = quote_sub '{}'; my $foo_string = "$foo"; undef $foo; is quoted_from_sub($foo_string), undef, "quoted subs don't leak"; Sub::Quote->CLONE; ok !exists $Sub::Quote::QUOTED{$foo_string}, 'CLONE cleans out expired entries'; } { my $foo = quote_sub '{}'; my $foo_string = "$foo"; Sub::Quote->CLONE; undef $foo; is quoted_from_sub($foo_string), undef, "CLONE doesn't strengthen refs"; } { my $foo = quote_sub '{}'; my $foo_string = "$foo"; my $foo_info = quoted_from_sub($foo_string); undef $foo; is exception { Sub::Quote->CLONE }, undef, 'CLONE works when quoted info saved externally'; ok exists $Sub::Quote::QUOTED{$foo_string}, 'CLONE keeps entries that had info saved'; } { my $foo = quote_sub '{}'; my $foo_string = "$foo"; my $foo_info = $Sub::Quote::QUOTED{$foo_string}; undef $foo; is exception { Sub::Quote->CLONE }, undef, 'CLONE works when quoted info kept alive externally'; ok !exists $Sub::Quote::QUOTED{$foo_string}, 'CLONE removes expired entries that were kept alive externally'; } { my $foo = quote_sub '{}'; my $foo_string = "$foo"; my $sub = unquote_sub $foo; my $sub_string = "$sub"; Sub::Quote->CLONE; ok quoted_from_sub($sub_string), 'CLONE maintains entries referenced by unquoted sub'; undef $sub; ok quoted_from_sub($foo_string)->[3], 'unquoted sub still available if quoted sub exists'; } done_testing;