X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F07-edge-cases.t;h=acd92e862667e8116489aa9ad2807bbe8e0b8029;hb=eb53b1bd771d2bed902655654014680ea64cf8d4;hp=cf75847e389ca2bff8b5332e23d82180f62dcbac;hpb=4723417a0e4c38ba9bf00a95d70e6872535c4d4c;p=gitmo%2FPackage-Stash.git diff --git a/t/07-edge-cases.t b/t/07-edge-cases.t index cf75847..acd92e8 100755 --- a/t/07-edge-cases.t +++ b/t/07-edge-cases.t @@ -3,6 +3,7 @@ use strict; use warnings; use lib 't/lib'; use Test::More; +use Test::Fatal; use Package::Stash; @@ -52,4 +53,32 @@ is(ref($constant), 'CODE', "expanded a constant into a coderef"); is(ref($stash->get_symbol('$glob')), '', "nothing yet"); is(ref($stash->get_or_add_symbol('$glob')), 'SCALAR', "got an empty scalar"); +my $Bar = Package::Stash->new('Bar'); +my $foo = 3; +$foo =~ s/3/4/; +my $bar = 4.5; +$bar =~ s/4/5/; + +is(exception { $Bar->add_symbol('$foo', \$foo) }, undef, + "can add PVIV values"); +is(exception { $Bar->add_symbol('$bar', \$bar) }, undef, + "can add PVNV values"); + +use_ok('CompileTime'); + +{ + package Gets::Deleted; + sub bar { } +} + +{ + my $delete = Package::Stash->new('Gets::Deleted'); + ok($delete->has_symbol('&bar'), "sees the method"); + { + no strict 'refs'; + delete ${'main::Gets::'}{'Deleted::'}; + } + ok(!$delete->has_symbol('&bar'), "method goes away when stash is deleted"); +} + done_testing;