diff options
Diffstat (limited to 't/04-get.t')
-rw-r--r-- | t/04-get.t | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/t/04-get.t b/t/04-get.t new file mode 100644 index 0000000..ebeb864 --- /dev/null +++ b/t/04-get.t @@ -0,0 +1,66 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +use Package::Stash; + +{ + BEGIN { + my $stash = Package::Stash->new('Foo'); + my $val = $stash->get_package_symbol('%foo'); + is($val, undef, "got nothing yet"); + } + { + no warnings 'void', 'once'; + %Foo::foo; + } + BEGIN { + my $stash = Package::Stash->new('Foo'); + my $val = $stash->get_package_symbol('%foo'); + is(ref($val), 'HASH', "got something"); + $val->{bar} = 1; + is_deeply($stash->get_package_symbol('%foo'), {bar => 1}, + "got the right variable"); + } +} + +{ + BEGIN { + my $stash = Package::Stash->new('Bar'); + my $val = $stash->get_package_symbol('@foo'); + is($val, undef, "got something"); + } + { + no warnings 'void', 'once'; + @Bar::foo; + } + BEGIN { + my $stash = Package::Stash->new('Bar'); + my $val = $stash->get_package_symbol('@foo'); + is(ref($val), 'ARRAY', "got something"); + push @$val, 1; + is_deeply($stash->get_package_symbol('@foo'), [1], + "got the right variable"); + } +} + +{ + my $stash = Package::Stash->new('Baz'); + my $val = $stash->get_or_add_package_symbol('%foo'); + is(ref($val), 'HASH', "got something"); + $val->{bar} = 1; + is_deeply($stash->get_or_add_package_symbol('%foo'), {bar => 1}, + "got the right variable"); +} + +{ + my $stash = Package::Stash->new('Quux'); + my $val = $stash->get_or_add_package_symbol('@foo'); + is(ref($val), 'ARRAY', "got something"); + push @$val, 1; + is_deeply($stash->get_or_add_package_symbol('@foo'), [1], + "got the right variable"); +} + +done_testing; |